当我使用该命令时rm -rf
,我想确保在删除文件之前始终出现提示,因此我尝试将其添加到~/.bashrc
alias 'rm -rf'='rm -rfi'
但这不起作用。我怎样才能解决这个问题?
答案1
确认是实现您想要的结果的一种较弱的方法:不删除您不想删除的文件。我可以连续要求你确认10次,但如果你只是要求我删除,mispeled.txt
那么直到你确认之后你才会意识到你的错误。
最好在系统上使用trash
或类似的命令将文件发送到(可恢复的)“回收站”。该trash-cli
软件包的 RPM 版本位于rpmfind.net但我不能保证那个版本。如有疑问,请自行构建从源代码来看。
正如评论中指出的那样,使用别名rm
根本不是一个好主意,因为它将要当你处于没有保护性别名的外壳中并且你的大脑习惯于拥有“安全”时,它会回来咬你rm
。
答案2
在你的 中~/.bashrc
,你可以这样做:
alias rm='rm -i'
这样,当您输入 时rm -rf example-dir
,Bash 会将其转换为rm -i -rf example-dir
.
请注意,对于交互式登录 shell,~/.bash_profile
则使用 。要使登录 shell 也使用~/.bashrc
,只需将其添加到您的~/.bash_profile
:
[ -f ~/.bashrc ] && . ~/.bashrc
Now~/.bashrc
将始终在您打开终端或 ssh 会话时执行。
答案3
f --> 强制,从不提示
i --> 每次都会提示
如果需要提示,只需rm -i
在别名中使用即可。如果您希望同时拥有两个别名(rmf 和 rmi),则可以拥有这两个别名。
答案4
除了有效的答案之外,我建议您将别名分开~/.bash_aliases
,并在末尾简单地获取它~/.bashrc
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
正如已经说过的,你的别名被扭曲成互斥的选项:
‘-f’ ‘--force’ Ignore nonexistent files and missing operands, and never prompt the user. Ignore any previous ‘--interactive’ (‘-i’) option.
^ 摘自info rm
.
因此,以下内容将起作用:
alias rm='\rm -i'