如何防止 `source .bashrc` 在具有正则表达式的别名命令中删除转义符?
How do I keep `source .bashrc` from removing escapes in my alias command that has regex?
我在工作中使用批处理计划的 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'
这不会删除那些讨厌的日志文件。
所以我要问的是:有没有办法获取别名以保持命令原样?
或者,是否有另一种方法来查找和删除这些讨厌的文件(也许有一个功能)?
您几乎总是希望优先使用函数而不是别名:
rmlogs () {
find ./ -maxdepth 1 -type f -regextype sed -regex '.+.[p]*[oe]+[0-9]+' -delete
}
除了其他问题(比如无法为别名提供参数)之外,这还避免了整个级别的引用。
我在工作中使用批处理计划的 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'
这不会删除那些讨厌的日志文件。
所以我要问的是:有没有办法获取别名以保持命令原样?
或者,是否有另一种方法来查找和删除这些讨厌的文件(也许有一个功能)?
您几乎总是希望优先使用函数而不是别名:
rmlogs () {
find ./ -maxdepth 1 -type f -regextype sed -regex '.+.[p]*[oe]+[0-9]+' -delete
}
除了其他问题(比如无法为别名提供参数)之外,这还避免了整个级别的引用。