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

问题描述 投票:-1回答:1

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

我以前在我的.bashrc中有一个alias命令可以方便地删除这些文件: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'

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

所以我在问:是否有办法获得别名以保持命令的原样?

或者,是否有另一种方法来查找和删除这些讨厌的文件(可能有一个功能)?

bash alias
1个回答
2
投票

您几乎总是希望使用优先于别名的函数:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.