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

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

代わりに、次のコマンドを使用してください。

cp {ソースファイル} {ターゲットファイル}

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

/usr/ローカル/dir1#cp {ソースファイル}
/usr/ローカル/dir1#CD /usr/ローカル/dir2
/usr/ローカル/dir2#生地

可能ですか?

答え1

私の考えでは、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

答え2

Xクリップをお勧めします。私はこれに常にそれを使用します。しかし、スクリプトは必要ありません。ただ機能を使用してください。

私はこのスクリプトを使用する必要はないと思います。特にあなたが私が考えていることをやっているなら、あなたはすでに言及されているスクリプト(有用な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

関連情報