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

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

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

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

おすすめ記事