【发布时间】:2011-04-08 21:20:17
【问题描述】:
我想为这个命令“rmi”创建一个别名,这样如果我执行了
rmi File.txt
它会实际执行
ls * | grep -v File.txt | xargs rm -rf
基本上我想重新排序参数。
【问题讨论】:
-
您没有提及您使用的是哪个 UNIX shell...sh、csh、tcsh、bash、zsh、...?
我想为这个命令“rmi”创建一个别名,这样如果我执行了
rmi File.txt
它会实际执行
ls * | grep -v File.txt | xargs rm -rf
基本上我想重新排序参数。
【问题讨论】:
脚本:
#!/usr/bin/env bash
ls * | grep -v $1 | xargs rm -rf
-将其保存为 rmi。
-做:chmod a+x rmi
-然后添加到路径。
【讨论】:
你不能用别名来做到这一点。您需要编写一个脚本。
【讨论】:
您不需要脚本。你可以写一个shell函数来代替别名:
myfunc() {
ls * | grep -v $1 | xargs rm -rf
}
# usage: myfunc <filename>
将其存储在 ~/.bashrc 或 ~/.zshrc 或单独的别名文件中,例如。使用成语
test -f ~/.zaliases && source ~/.zaliases
在您的 dotrc 文件中。
【讨论】:
感谢您澄清这一点。在 tcsh 中很简单:
alias rmi 'ls * | grep -v \! | xargs rm -rf'
应该这样做...
\!
扩展“rmi”之后的所有参数
您也可以使用“查找”来执行此操作..
find . -type f | grep -v \! | xargs rm -rf'
...小心那把斧头! (rm -rf)
【讨论】: