每隔一段时间,我就会发现需要这样做:
cp /really/long/path/to/file.txt /totally/different/long/path/to/copy.txt
自从我使用autojump
,得到访问目录非常快速且简单。但是,当涉及到从一个目录复制到另一个目录而无需键入至少一个完整路径时,我感到不知所措。
在 GUI 文件系统导航器中,这很简单:导航到第一个目录;复制原始文件;导航到第二个目录;和粘贴。但是对于cp
,我似乎无法分两步完成复制。
我想做类似以下的事情:
(use autojump to navigate to the first directory)
$ copy file.txt
(use autojump to navigate to the second directory)
$ paste copy.txt
而不是更长的输入:
(use autojump to navigate to the first directory)
$ cp file.txt /totally/different/long/path/to/copy.txt
有没有一个工具可以提供我正在寻找的功能?我在 OS X El Capitan 上使用 Zsh。
答案1
下面的工作在bash
.我还没有尝试过zsh
。
尝试:
echo ~- # Just to make sure you know what the "last directory" is
然后:
cp file.txt ~-/copy.txt
另请参阅:
答案2
这是一个替代解决方案,灵感来自 @Stephen Harris 的评论:
# You can "copy" any number of files, then "paste", "move" or
# "pasteln" them to pass them as arguments to cp, mv, or ln
# respectively. Just like a graphical filesystem manager. Each of the
# latter three functions defaults to the current directory as the
# destination.
function copy() {
emulate -LR zsh
radian_clipboard=()
for target; do
radian_clipboard+=(${target:a})
done
}
function paste() {
emulate -LR zsh
cp -R $radian_clipboard ${1:-.}
}
function move() {
emulate -LR zsh
mv $radian_clipboard ${1:-.}
}
function pasteln() {
emulate -LR zsh
ln -s $radian_clipboard ${1:-.}
}
用法示例:
(autojump to first directory)
$ copy file.txt
(autojump to second directory)
$ paste copy.txt
正如您所看到的,这些别名是 、 和 命令的非常薄的包装cp
,mv
因此ln -s
您还可以传递一个目录作为第二个参数,或者copy
一次传递多个文件或目录,或者省略第二个参数以作用于当前目录。