是否可以删除终端命令?例如,如果有一个命令调用查找(不是别名),我该如何删除它?
答案1
更好的方法是将命令的输出重定向到/dev/null
。这样,命令将“存在”但不会显示任何结果。
例如:ls
命令。
- 创建别名
alias ls = "ls > /dev/null"
- 现在运行
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)