Command-Line

從命令行複制並粘貼文件/目錄

  • February 27, 2012

而不是使用以下命令:

cp {源文件{{目標文件}

我希望能夠將文件複製到剪貼板中,然後將其粘貼到其他目錄中的其他位置。像這樣的東西:

/usr/local/dir1# cp {源文件}

/usr/local/dir1# cd /usr/local/dir2

/usr/local/dir2# paste

可能嗎?

我認為您應該做一些類似於 GUI 應用程序所做的事情。我這樣做的想法是為複制和粘貼編寫兩個函式,其中複製寫入要復製到臨時文件的文件路徑,粘貼讀取這些路徑並簡單地呼叫cp命令。我的實現(要放入.bashrc文件中)如下所示:

function Copy {
   touch ~/.clipfiles
   for i in "$@"; do
     if [[ $i != /* ]]; then i=$PWD/$i; fi
     i=${i//\\/\\\\}; i=${i//$'\n'/$'\\\n'}
     printf '%s\n' "$i"
   done >> ~/.clipfiles
}

function Paste {
   while IFS= read src; do
     cp -Rdp "$src" .
   done < ~/.clipfiles
   rm ~/.clipfiles
}

可以編寫更好的腳本來實現這個想法,我測試了自己的腳本,它對文件和文件夾非常有效(我不知道如何xclip復製文件夾!!)


例如:

/usr/local/dir1# Copy a.txt *.cpp
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Paste

/usr/local/dir1# Copy *.h *.cpp b.txt subdir1
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Paste

/usr/local/dir1# Copy a.txt b.txt 
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Copy c.txt d.txt
/usr/local/dir2# cd /usr/local/dir3
/usr/local/dir3# Paste

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