我经常发现自己想要将文件从我的目录堆栈中的一个目录复制到另一个目录,而我提出的最佳解决方案是cp $(dirs -p | tail -n 1)/somefile.txt ./somefile.txt
对此有更好的解决方案吗?
答案 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