T1M*_*T1M 7 linux file-management bash mv
正如标题所示,我可以相对于当前位置移动文件吗?
\n假设我位于根目录,文件结构如下:
\n...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80home\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80user\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80Documents\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80Downloads\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80foo.bar\n...\nRun Code Online (Sandbox Code Playgroud)\n我想foo.bar从“下载”移动到“文档”。\n您可以这样做mv /home/user/Downloads/foo.bar /home/user/Documents/,\n但是当目录结构更深一点时,必须再次编写几乎相同的路径会很烦人。
有没有什么说法,例如:
\nmv /home/user/Downloads/foo.bar (whatever operator)/../Documents/。
以便文件相对于其位置向上移动一个目录并进入文档?
\nKam*_*ski 10
echo mv /home/user/Downloads/{foo.bar,../Documents/}
Run Code Online (Sandbox Code Playgroud)
(echo 如果结果看起来不错则删除)。
请注意,这将生/home/user/Downloads/../Documents/成为目标路径。我特意使用了您在介绍“whatever 运算符”时选择的字符串:../Documents/。但如果Downloads是一个符号链接,则可能会解析为;/home/user/Downloads/../以外的其他内容。/home/user/在这种情况下/home/user/Downloads/../Documents/不等于/home/user/Documents/
(琐事:cd /home/user/Downloads/../Documents/可能相当于cd /home/user/Documents/。这并不意味着mv会将路径视为等效。比较此答案。)
通常(或者如果符号链接可能会干扰)您只需将其用作/home/user/Documents/目标(事实上您就是这样做的)。该路径不依赖于Downloads是否是符号链接。因此,您可能更喜欢以下大括号扩展:
echo mv /home/user/{Downloads/foo.bar,Documents/}
Run Code Online (Sandbox Code Playgroud)
它的形式并不强调“相对”方面(../我猜在我们的第一个命令中确实如此),但它仍然可以节省您/home/user/再次输入的时间。
POSIX 未指定大括号扩展。它可以在 Bash 和其他一些 shell 中工作,但不能在纯sh.
cd你可以简单地mv foo.bar ../Documents/如果你cd /home/user/Downloads/先。在子 shell 中执行此操作,主 shell 的当前工作目录不会受到影响:
(cd /home/user/Downloads/ && mv foo.bar ../Documents/)
Run Code Online (Sandbox Code Playgroud)
笔记:
&&如果cd由于任何原因失败(例如路径中的拼写错误)则mv不会运行。Downloads是符号链接,则../Documents/可能与 不同/home/user/Documents/。| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |