Answers:
我认为您应该像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
echo
为printf
吗?
shopt -s xpg_echo
。
我建议xclip。我一直在用它。但您不需要脚本。只是使用功能。
我认为不需要使用这些脚本,特别是因为如果您正在做我想做的事情,您会发现已经提到的脚本(在有用的linux tidbits博客上)很烦人,因为它们会在可能的情况下提示您输入信息,使用它们,这与Unix哲学相反。
我建议只将一些函数写入您的.bashrc
:
clip2file () {
xclip -out -selection clipboard >> $@
echo -e "\n" >> $@
}
file2clip () {
cat $@ | xclip -selection clipboard
}
要使用这些工具,您需要apt-get install xclip
(Debian,Ubuntu,Linux Mint等)或zypper in xclip
(openSUSE,其他基于.rpm的系统)或某些等效工具。该程序应在所使用的任何系统上都可用。
您可以xclip
为此使用命令。您可以从此链接下载bash脚本,bash cp2clip
并bash clippaste
为.bashrc
文件添加别名。
man alias
或linfo.org/alias.html