File-Copy
如何分兩步cp
每隔一段時間,我就會發現需要這樣做:
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
如您所見,這些別名是對 、 和 命令的非常薄的包裝
cp
,mv
因此ln -s
您也可以將目錄作為第二個參數傳遞,或者copy
一次傳遞多個文件或目錄,或者省略第二個參數以作用於目前目錄。