可能的重复:
在 bash 命令上重用文本
如果我想将一个文件重命名到几个目录深处,如何避免重复路径?
例如:
mv path/to/old_filename.txt path/to/new_filename.txt
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法做到这一点:
mv path/to/old_filename.txt (?)new_filename.txt
Run Code Online (Sandbox Code Playgroud)
哪里(?)
可以说“在同一目录中”。
Dar*_*oid 63
您可以使用大括号扩展:
mv path/to/{old_filename.txt,new_filename.txt}
这是 bash shell 中大括号扩展的 GNU 指南的链接,它定义了一个替换列表,并告诉 bash 在每次重复时使用不同的替换来重复参数。
例如,
a{b,c,dd,e}
Run Code Online (Sandbox Code Playgroud)
将扩展到
ab ac add ae
Run Code Online (Sandbox Code Playgroud)
唯一的警告是扩展的重复必须能够作为目标程序的参数相互跟随。
小智 27
Darth上面的回答很聪明,但是如果您想使用 with 的方法cd
,您也可以考虑使用子shell:
(cd path/to && mv old_filename.txt new_filename.txt)
Run Code Online (Sandbox Code Playgroud)
由于目录更改发生在子 shell 中,因此您实际上不会在交互式 shell 中更改目录。
gle*_*man 27
使用 bash历史扩展:
mv path/to/oldfile !#:1:h/newfile
Run Code Online (Sandbox Code Playgroud)
其中的!#:1:h
意思是:从您当前键入的行 ("!#") 中,取出第一个单词 (":1"),然后仅取出路径组件 (":h" -- 头部)。
Kei*_*thB 10
如果您要在目录中执行多个命令,另一种有用的替代方法是:
pushd /path/to
mv oldfile newfile
...
popd
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3452 次 |
最近记录: |