コマンドラインからファイル/ディレクトリをコピーして貼り付ける


17

次のコマンドを使用する代わりに:

cp {source file} {dest file}

ファイルをクリップボードにコピーし、別のディレクトリの別の場所に貼り付けたいと思っています。このようなもの:

/ usr / local / dir1# cp {ソースファイル}
/ usr / local / dir1# cd / usr / local / dir2
/ usr / local / dir2# paste

出来ますか?

回答:


17

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

1
これは魅力のように機能します!
メイサム

2
私はこのアイデアが好きです。また、少し変更するだけで、「カット」機能も実装できます。
パブロベンチュリー

あなたが交換し、なぜ@Gillesあなたが説明してもらえますechoprintf
メイサム

でも下の仕事に@Meysam shopt -s xpg_echo
ジル「SO-悪であるのをやめる」

1
@Meysam printfはポータブルで安全ですが、そうでechoはありません。Wooledge wiki これについて簡単に言及しています
jw013

10

xclipをお勧めします。私はこれを常に使用しています。しかし、スクリプトは必要ありません。関数を使用するだけです。

私は、彼らが入力を求めるプロンプトを表示するので、あなたが私はあなたがやっていると思う何をやっている場合ので、あなたは迷惑すでに(役に立つのlinux一口のブログで)言及したスクリプトを見つけるだろう、特に、これらのスクリプトを使用する必要を見ない可能な限りだけで、 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 cp2clipbash clippaste、あなたの中に.bashrcファイル。


@エイリアスとはどういう意味ですか?
ixtmixilix

私はあなたのホームディレクトリにファイルを保持し、.bashrcエイリアスに2つのエイリアスを置くことを意味しましたcp2clip = 'bash /home/<username>/cp2clip.sh' and clippaste = 'bash /home/<username>/clippaste.sh'これらはどこでも使用できます。エイリアスの詳細についてはman alias以下
harish.venkat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.