删除终端命令

删除终端命令

是否可以删除终端命令?例如,如果有一个命令调用查找(不是别名),我该如何删除它?

答案1

更好的方法是将命令的输出重定向到/dev/null。这样,命令将“存在”但不会显示任何结果。

例如:ls命令。

  1. 创建别名
    alias ls = "ls > /dev/null"
  2. 现在运行ls不会显示任何结果。

编辑:感谢@scai
在上面的答案中,命令仍然会显示错误,因为我们已经重定向stdout但没有stderr加上更严重的问题,它仍将运行命令

引用@scai

如果所讨论的命令执行了您不喜欢的操作,例如创建或删除文件、更改设置、将您的鼻子涂成蓝色,那么这个别名将无法阻止它执行这些操作。

对于解决方法,我们将命令别名为空字符串,然后将生成的错误重定向到/dev/null

alias ls = "" > /dev/null 2>&1

现在情况好多了。


编辑2:感谢@scai再次 :-)
这是一个临时解决方案。
要恢复命令的原始功能(在我们的例子中ls),只需运行unalias ls

答案2

你可以这么做但你不应该这么做。

无论如何,命令主要有四个地方。

/bin & /usr/bin & /sbin & /usr/sbin

要知道你想要的命令在哪里

whereis COMMAND

然后以 root 身份您可以删除或者重命名或者移动到其他目录

sudo rm /path/command

或者

sudo mv /path/commad /newPath

确保 newPath 不在你的 $PATH 环境中

答案3

我认为这个“正确”的方法是使用权限。让我们ls也以命令为例。

-rwxr-xr-x 1 root root 105840 /bin/ls*

以下是我的做法:

为允许使用的用户创建一个组ls,我们称之为用户

sudo addgroup lsusers

相应地将用户添加到该组

sudo usermod -aG lsusers [username]

移除世界权限/bin/ls

sudo chmod o= /bin/ls

更改群组所有权/bin/ls

sudo chgrp lsusers /bin/ls

确保组权限至少允许执行

sudo chmod 0710 /bin/ls

这应该带来类似这样的事情:

-rwx--x--- 1 root lsusers 105840 /bin/ls*

这允许 root 和 lsusers 成员执行/bin/ls。实际上,别名的最大问题是它们大多数时候都可以被覆盖。更改属于 root 的某些内容的权限现在有点困难了。

现在,关于真正的移除,嗯,这是软件包问题。如果你想从系统中删除某个程序(命令),只需使用以下命令要求删除其软件包:

sudo apt-get --purge remove [package name]

当然,这不是你能做的事情/bin/ls(而且我不确定你是否愿意真正rm这么做:p)

相关内容