次のコマンドを使用する代わりに:
cp {ソースファイル} {宛先ファイル}
ファイルをクリップボードにコピーし、別のディレクトリのどこかに貼り付けられるようにしたい。このようなもの:
/ usr/local/dir1# cp {ソースファイル}
/ usr/local/dir1# cd/usr/local/dir2
/ usr/local/dir2#貼り付け
出来ますか?
GUIアプリケーションと同じようにすべきだと思います。これを行うための私のアイデアは、コピーと貼り付けの2つの関数を書くことです。コピーでは、コピーするファイルのパスを一時ファイルに書き込み、貼り付けでは、それらのパスを読み取り、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
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
ファイルに追加できます。