删除终端命令
是否可以删除终端命令? 例如,如果存在命令调用查找(不是别名),我将如何删除它?
更好的方法是将命令的输出重定向到/dev/null
。 这样,命令将“在那里”,但不会显示任何结果。
示例: ls
命令。
- 别名
alias ls = "ls > /dev/null"
- 现在运行
ls
将不会显示任何结果。
编辑:感谢@scai
在上面的答案中,该命令仍将显示错误,因为我们已重定向stdout
但不是stderr
加上更严重的问题, 它仍将运行命令 。
引用@scai :
如果有问题的命令做了你不喜欢的事情,例如创建或删除文件,更改设置,画鼻子,那么这个别名不会阻止它做这些事情。
对于变通方法,我们将命令别名为空字符串,然后将结果错误重定向到/dev/null
。
alias ls = "" > /dev/null 2>&1
那现在好多了。
编辑2:再次感谢@scai 🙂
这是一个临时解决方案。
要恢复到命令的原始function(在我们的例子中是ls
),只需运行unalias ls
。
你可以这样做,但你不应该这样做。
无论如何,命令有四个主要位置。
/ bin&/ usr / bin&/ sbin&/ usr / sbin
要知道你想要的命令在哪里
whereis COMMAND
然后作为根,您可以删除或只是重命名或移动到其他目录
sudo rm /path/command
要么
sudo mv /path/commad /newPath
确保newPath不在$ PATH环境中
我认为这种“正确”的方法是使用权限。 我们以ls
命令为例。
-rwxr-xr-x 1 root root 105840 /bin/ls*
这是我将如何做到这一点:
为允许使用ls
用户创建一个组,假设我们称之为lsusers 。
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
做的事情(我不确定你是否真的喜欢它:p)