【发布时间】:2017-08-21 13:14:55
【问题描述】:
我正在使用 oh-my-zsh。我有以下两个关于rm 命令获取来源的别名:
alias rm='rm -i'
function clean_tex_mid_file()
{
rm -f *.dvi *.log *.synctex.gz *.aux
}
alias cleantex='clean_tex_mid_file'
我发现当我尝试使用上面定义的cleantex 删除不存在的文件时,它会像'no matches found: *.dvi' 一样抱怨,而忽略了-f 选项。
更深入的测试表明 bash 会在尝试删除不存在的文件时保持沉默,并使用相同的别名文件。
那么如何处理这个问题以及背后发生了什么?
【问题讨论】:
-
rm -f在这里的行为规范 - 它应该在某些东西不存在时默默地成功。 -
请注意,
zsh中不需要使用别名来为函数提供更简单的名称;你可以给一个函数多个名字:clean_tex_mid_file cleantex () { ... }。不过,不清楚为什么需要多个名称,而不是一开始就将函数命名为cleantex。 -
@chepner 感谢您的有用建议,以前不知道这个技巧。使用两个名称的原因是我认为函数名称应该是详细的和描述性的,别名应该是简短的,尽管对于这个例子来说差别不大。
标签: linux bash alias zsh oh-my-zsh