我该如何防止`source .bashrc`在带有正则表达式的别名命令中删除转义符?

时间:2019-04-05 14:05:26

标签: bash alias

我在工作中使用批处理调度的HPC / HTC系统,它会生成提交的作业日志,如下所示:“ submitted.job.o738523”或“ submitted.job.e385723”。

我以前在.bashrc中有一个别名命令,可以方便地删除这些文件,如下所示: alias rmlogs='rm *.[oe]* && rm *.p[oe]*' 在[oe]之前添加“ p”是用于制作待处理作业日志的工作流程序。 不幸的是,这可能会删除“ setup.exe”之类的重要内容,所以我想要更具体的内容

经过反复试验和磨难,我想到了这个别名: alias rmlogs='find ./ -maxdepth 1 -type f -regextype sed -regex '.\+\.[p]*[oe]\+[0-9]\+' -delete'

我考过哪个。

不幸的是,当我启动一个新的shell并以.bashrc为源时,rmlogs命令变成这样: alias rmlogs='find ./ -maxdepth 1 -type f -regextype sed -regex .+.[p]*[oe]+[0-9]+ -delete'

不会删除那些讨厌的日志文件。

所以我要问的是:有没有办法获取别名以保持命令原样?

或者,还有另一种方法来查找和删除这些讨厌的文件(也许带有功能)吗?

1 个答案:

答案 0 :(得分:2)

您几乎总是想优先使用函数来代替别名:

rmlogs () {
  find ./ -maxdepth 1 -type f -regextype sed -regex '.+.[p]*[oe]+[0-9]+' -delete
}

除了其他问题(例如无法为别名提供参数)之外,这还避免了整个级别的引用。