我曾想过,如果“别名(alias)”的名称包含带参数的命令会怎么样呢?我尝试了以下操作:
alias "rm -rf /"="echo 'idiot'"
但它不起作用; 请问正确的方法是什么呢?
rm() {
if [ "$1" = "-rf" ] && [ "$2" = "/" ]; then
echo 'idiot'
else
command rm "$@"
fi
}
rm
命令行为的调整都仅在可用该调整时有效。如果您设法使rm
命令在自己的环境中更安全,那么您会依赖它,这可能会让您在另一个环境中变得不够谨慎(比如在您没有完全设置好账户的机器上或者因某种原因使用其他账户时)。root
帐户。非root
用户运行rm -rf /
将造成的损害要比root
小得多。(我不确定非root
用户运行rm -rf /
会发生什么;我不会测试以找出答案。)使用sudo
来运行单个命令,而不是作为root
运行shell。rm
看作是一条危险的命令。如果您输入了一个rm
命令,在按Enter之前请重新阅读您所输入的内容。
"rm -rf /" whatever
或类似的方式才能使其工作,但这种情况下你绝对应该得到警告信息。小心使用rm
的保护函数或别名;有一天你会发现自己没有安全网,然后犯一个错误,真的很痛苦。如果你想要不同的行为,编写并使用你自己的del
、delete
或remove
命令(函数、别名),以你认为合适的方式来保护自己。如果你尝试在缺少你自定义代码的机器上使用它,你仍然会受到保护(命令将无法找到)。 - Jonathan Leffler