File-Copy

如何分兩步cp

  • June 11, 2017

每隔一段時間,我就會發現需要這樣做:

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。

以下適用於bash. 我沒有在zsh.

嘗試:

echo ~-   # Just to make sure you know what the "last directory" is

然後:

cp file.txt ~-/copy.txt

另見:

這是一個替代解決方案,靈感來自@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

如您所見,這些別名是對 、 和 命令的非常薄的包裝cpmv因此ln -s您也可以將目錄作為第二個參數傳遞,或者copy一次傳遞多個文件或目錄,或者省略第二個參數以作用於目前目錄。

引用自:https://unix.stackexchange.com/questions/301646