如何修改重启命令?

End*_*gon 5 execute-command

我正在尝试编辑重新启动命令以向用户回显消息,但位于 中的命令本身/sbin已编译。是否可以编辑命令并在用户键入 reboot 时将其打印出来?

ter*_*don 15

是的,但您必须编辑其源代码,添加警告,重新编译并用修改后的可执行文件替换可执行文件。

一种更简单的方法是创建一个脚本来打印您的警告,然后调用reboot该脚本并将其保存为reboot

  1. 使用此内容创建一个文件并将其另存为/usr/bin/reboot

    #!/bin/sh
    echo "Eeeek! You are rebooting!"
    /sbin/reboot
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使其可执行:

    sudo chmod a+x /usr/bin/reboot
    
    Run Code Online (Sandbox Code Playgroud)

现在,当您运行 时reboot,因为在您的/usr/bin之前,您将运行将打印警告然后运行的脚本。/sbin$PATHreboot


Ser*_*nyy 5

如 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取消这个功能