我偶尔需要运行如下命令:
mv "very-long-file-name.x" "very-long-file-name.y"
我希望实现这一点,而不必重复两次很长的文件名......
我知道如何通过将“very-long-file-name”传递给 bash 脚本然后使用 $1 来做到这一点......但是如果没有脚本我该怎么做呢?
答案1
bash
允许您在命令之前定义变量,如下所示:
X="very-long-file-name" bash -c 'mv "${X}.x" "${X}.y"'
但请注意,以这种方式定义的变量仅针对命令运行的环境定义,而不是在父 shell 环境中定义。因此,您必须bash -c
在其中添加该变量,并在子 shell 参数字符串周围加上单引号,否则变量将在父 shell 中解释,而父 shell 中未定义这些变量。
答案2
利用括号扩展:
mv very-long-file-name.{x,y}
不要引用该{x,y}
部分。不要在任何括号或逗号之前或之后添加空格。
扩展后将导致:
mv very-long-file-name.x very-long-file-name.y