在多命令内联别名/命令中访问位置参数

时间:2014-05-14 16:32:39

标签: bash position command-line-arguments alias argument-passing

我正在尝试为重命名文件夹的命令创建一个别名,然后对其进行tar-zips:

alias txz='of=$1; nf=$of$(date -I); mv $of $nf; tar cJvf $nf.txz $nf --remove-files'

打电话
txz test_folder

我收到错误

mv: missing destination file operand after ‘2014-05-14’
Try 'mv --help' for more information.
tar: 2014-05-14: Cannot stat: No such file or directory
test_folder/
test_folder/1
test_folder/2
tar: Exiting with failure status due to previous errors

由于多个命令。如果只有一个命令(无;),则$1可以正常工作。

有什么办法可以解决吗?

ps:这是创建测试文件夹的命令:

mkdir test_folder; touch test_folder/1 test_folder/2

1 个答案:

答案 0 :(得分:3)

最好使它成为这样的函数,因为别名不支持$1, $2等位置参数:

txz() {
   of="$1"
   nf="$of"$(date -I)
   mv "$of" "$nf"
   tar cJvf "$nf.txz" "$nf" --remove-files
}

或排成一行:

txz() { of="$1"; nf="$of"$(date -I); mv "$of" "$nf"; tar cJvf "$nf.txz" "$nf" --remove-files; } 
相关问题