我正在为一个项目写4个别名,目前其中两个正在工作。E和ll别名工作,但cx别名给我一个错误cx:命令找不到。而且,我的rm别名只是删除指定的文件,但没有提供任何确认。
这是我从这两个化名中寻找的东西。
一个名为"cx“的别名,接受一个或多个文件/目录,并在指定的files/directories.
。
这是我的化名..。
alias e="exit"
alias ll="ls $1 -l"
alias cx="chmod a+x $1"
alias rm="rm -i"发布于 2011-03-07 21:11:52
当您想使用传入参数时,您不需要别名,而是需要一个函数
cx(){ chmod a+x $1; }
ll(){ ls $1 -l; }在这些特殊情况下,您可以完全不使用位置参数,因为参数处于最末尾,别名基本上是用它们的定义替换的。
alias ll='ls -l'
alias cx='chmod a+x'所以cx ./foo现在是chmod a+x ./foo,ll ./foo现在是ls -l ./foo
概念证明
$ touch foo && ls -l ./foo
-rw-rw-r-- 1 siegex siegex 0 Mar 7 12:14 ./foo
$ alias cx='chmod a+x'
$ alias ll='ls -l'
$ cx ./foo
$ ll ./foo
-rwxrwxr-x 1 siegex siegex 0 Mar 7 12:14 ./foo发布于 2011-03-07 21:11:48
尝试一下,它应该会更好:)
alias e='exit'
alias ll='ls $1 -l'
alias cx='chmod a+x $1'
alias rm='rm -i'魔法是‘而不是’
发布于 2011-03-07 22:07:28
命令shopt -s expand_aliases将允许在非交互式Bash中扩展别名。(在命令行不需要它,因为这将是一个交互式shell。)
如果要在脚本中测试别名,这可能是问题的一部分。在尝试运行任何别名命令之前,尝试将shopt命令添加到脚本中。
https://stackoverflow.com/questions/5225219
复制相似问题