我正在尝试编辑重新启动命令以向用户回显消息,但位于 中的命令本身/sbin
已编译。是否可以编辑命令并在用户键入 reboot 时将其打印出来?
ter*_*don 15
是的,但您必须编辑其源代码,添加警告,重新编译并用修改后的可执行文件替换可执行文件。
一种更简单的方法是创建一个脚本来打印您的警告,然后调用reboot
该脚本并将其保存为reboot
:
使用此内容创建一个文件并将其另存为/usr/bin/reboot
:
#!/bin/sh
echo "Eeeek! You are rebooting!"
/sbin/reboot
Run Code Online (Sandbox Code Playgroud)使其可执行:
sudo chmod a+x /usr/bin/reboot
Run Code Online (Sandbox Code Playgroud)现在,当您运行 时reboot
,因为在您的/usr/bin
之前,您将运行将打印警告然后运行的脚本。/sbin
$PATH
reboot
如 terdon 所示的一种方法 - 使用包装脚本。
另一种方法是通过function
。函数名优先于系统命令和别名,这意味着如果我们创建函数reboot,它将被执行。方便的是您不必创建单独的文件,您可以将其放入/etc/bash.bashrc
所有用户或~/.bashrc
仅用于您自己。
至于函数本身,我们可以做这样的事情
reboot()
{
printf "Reboot is about to happen , press enter "
read
/sbin/reboot
# or for those who like to use systemd way, you can do systemctl reboot
}
Run Code Online (Sandbox Code Playgroud)
还有一点很酷,你可以按Ctrl+C取消这个功能