将文件从目录堆栈中的目录复制到当前目录

时间:2018-04-06 13:55:17

标签: linux bash

我经常发现自己想要将文件从我的目录堆栈中的一个目录复制到另一个目录,而我提出的最佳解决方案是cp $(dirs -p | tail -n 1)/somefile.txt ./somefile.txt

对此有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以通过DIRSTACK数组直接访问目录堆栈;不需要命令替换。

cp "${DIRSTACK[-1]}/somefile.txt" .

您的原始代码存在错误,原因与ls的输出不应以编程方式使用相同;包含换行符的目录名可能会破坏它。例如:

$ pushd $'foo\nbar'
$ dirs -p | head -1
~/bin/foo

使用dirs +0至少修复了这个问题(假设您正确引用命令替换为cp "$(dirs +N)"/somefile.txt ./somefile.txt,无论如何):

$ dirs +0
~/bin/foo
bar

答案 1 :(得分:-2)

在引用https://www.gnu.org/software/bash/manual/html_node/Directory-Stack-Builtins.html#Directory-Stack-Builtins之后,一个更好的解决方案是cp $(dirs +N)/somefile.txt ./somefile.txt