是否有相当于 cd - 的 cp 或 mv?

Tad*_*spy 14 linux bash zsh file-transfer

在 Bash 和类似的 shell 中,cd -将当前目录更改为以前访问过的目录。它通常非常方便。我想知道复制或移动文件是否有类似的简写,例如:

~/project-a/ $ cd ../project-b
~/project-b/ $ cp Makefile LICENSE - # this won't work, hence the question
Run Code Online (Sandbox Code Playgroud)

我也很高兴得到zsh具体的答案。

use*_*686 28

如果您的 shell 有cd -,那么它可能会有您之前所在目录的特殊变量$OLDPWD和/或快捷方式~-

cp Makefile LICENSE "$OLDPWD/"

cp Makefile LICENSE ~-

cat ~-/Makefile
Run Code Online (Sandbox Code Playgroud)

事实上,POSIX shell语言(在其KSH / bash中/ zsh中内置)指定cd -应等于cd "$OLDPWD"

  • 波浪号扩展甚至比这更多。如需额外的品味,请访问 https://unix.stackexchange.com/a/286628/135943,它甚至不包括主目录。 (3认同)

小智 5

您始终可以使用shell 反引号

它们就像一个子shell:反引号中的命令首先执行,其输出作为主命令的参数放置。

~/folderA$ cd ../folderB  
~/folderB$ cp Makefile `cd -`  
# gets expended to "cp Makefile ~/folderA"
Run Code Online (Sandbox Code Playgroud)

  • 不,命令 `cd -` 什么都不输出,所以 \`cd -\` 扩展为空字符串。尝试使用命令 % echo \`cd -\` 进行验证。你需要使用类似 % echo \`cd -; 密码\` ... (4认同)
  • @NealYoung:您的外壳似乎有问题。[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html#tag_20_14_05) 说“当<连字符-减>被用作操作数[到`cd`]时,这应该是等价于命令:`cd "$OLDPWD" && pwd`,它切换到之前的工作目录,然后写入其名称。” ……(续) (2认同)