【问题标题】:Access position parameters in multi-command inline alias/command在多命令内联别名/命令中访问位置参数
【发布时间】:2014-07-02 20:13:29
【问题描述】:

我正在尝试为重命名文件夹然后对其进行 tar 压缩的命令创建别名:

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

【问题讨论】:

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


    【解决方案1】:

    最好让它成为这样的函数,因为别名不支持位置参数,如$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; } 
    

    【讨论】:

    • 谢谢。我正在寻找内联答案
    • 这也可以倾斜:txz() { of="$1"; nf="$of"$(date -I); mv "$of" "$nf"; tar cJvf "$nf.txz" "$nf" --remove-files; }
    • @kirill_igum 别名不支持位置参数。
    • 谢谢@thatotherguy,我应该首先补充一下
    • 为什么在 txz 之前有> ?你之前跑过unalias txz吗?
    猜你喜欢
    • 2014-03-10
    • 2017-05-13
    • 2014-01-30
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多