而不是使用以下命令:
cp {源文件} {目标文件}
我希望能够将文件复制到剪贴板中,并将其粘贴到另一个目录中的其他位置。像这样的东西:
/usr/local/dir1#cp {源文件}
/usr/local/dir1#cd /usr/local/dir2
/usr/local/dir2#粘贴
是否可以?
答案1
我认为你应该像 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
答案2
我建议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 的系统)或某些等效系统。该程序应该可以在您使用的任何系统上使用。
答案3
您可以使用该xclip
命令来执行此操作。您可以从以下位置下载 bash 脚本这个链接并将 和 的别名放入bash cp2clip
您bash clippaste
的文件中.bashrc
。