コマンドラインからファイルをコピーし、Gnome ウィンドウに貼り付ける、またはその逆

コマンドラインからファイルをコピーし、Gnome ウィンドウに貼り付ける、またはその逆

xclipまたはを使用して、コマンド ラインからファイルの「内容」をコピーする方法の例はたくさんありますxsel。私が探しているのは、コマンド ラインからファイルをコピーして、ファイル エクスプローラーに貼り付けることです。そのため、内容だけでなくファイルをコピーするコマンドを使用し、Ctrlvそれを UI に貼り付けます。

更新しました xclip-copyfilexclip-pastefile期待どおりに動作しますが、e を実行すると、GUI 貼り付けではなく、コマンドxclip-copyfilによる貼り付けしかできません。xclip-pastefile

答え1

私はUbuntuでファイルブラウザとしてNautilusを使用しているので、他のブラウザについては言及できません。Nautilusが
ファイルを貼り付ける方法はCtrl-vNautilusに非常にローカルです。つまり、NautilusはCtrl-vのみを認識します。ファイルを貼り付けるに応じてファイルをコピー中に発行されたコマンドオウムガイつまり、別のアプリケーションでパスをコピーしたファイルを Ctrl-v を使用して貼り付けることはできません。

ただし、必要に応じて、Ctrl + Shift + v を で実行されるスクリプトにバインドできますnautilus-scripts-manager。このスクリプトを使用すると、ほぼ何でも好きなことができます。

nautilus-scripts-manager現在のディレクトリと選択されているファイル/ディレクトリに関する基本的な情報にアクセスできます。「nautilus-scripts」で特に気に入っているのは、スクリプトをメニューFile項目(およびコンテキストメニュー)に追加することです。これにより、ローカルのキーバインディングを設定できます。ノーチラス3またはノーチラス2

すでに述べた例を使った大まかな例を示しますxclip-pastefiles。現状では、xclip-copyfilesCtrl-Shift-vを実行する前に設定する必要があることに注意してください。ペーストスクリプト。
セットアップを実行したらxclip-copyfiles、Nautilus ウィンドウに移動して、ターゲット ディレクトリ (またはそのディレクトリ内のファイル) を選択し、スクリプトのキーバインドを押すだけです。Ctrl + Shift + v

#!/bin/bash   
# Note: `leafpad' is a simple text editor which doubles as a quick-and-easy testing messsage-box

dir=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |sed -n 1p)
if [[ -n "$dir" ]] ;then
    # target dir from `Nautilus Scripts' (1st priority)    
    if [[ -e "$dir" ]] ;then
       [[ -d "$dir" ]] || dir="${dir%/*}" 
       [[ -d "$dir" ]] || dir=
    fi
else
  # target dir from $1 (2nd priority)
    dir="$1"
    if [[ -e "$dir" ]] ;then
       [[ -d "$dir" ]] || dir="${dir%/*}" 
       [[ -d "$dir" ]] || dir=
    fi
fi

if [[ -z "$dir" ]] ;then
    # target dir from clipboard (if not in $NAUTILUS_SCRIPT.. or  $1)
   dir="$(xclip -o -sel c)"
   if [[ -e "$dir" ]] ;then
      [[ -d "$dir" ]] || dir="${dir%/*}" 
      [[ -d "$dir" ]] || dir= 
   else
      dir=
   fi
fi

[[ -d "$dir" ]] || { echo "$(basename "$0"): target directory not found in clipboard" |leafpad; exit 1; } 

{ cd   "$dir"
  echo "Current  Directory:" 
  echo "  $dir"
  echo "======="
  echo  xclip-pastefile # run your command  (`echo' is for testing)
} 2>&1 |leafpad 

関連情報