Copy-Paste

從命令行複製文件,粘貼到 Gnome 視窗,反之亦然

  • June 30, 2012

xclip有很多範例如何在or的幫助下從命令行複製文件的“內容” xsel。我正在尋找的是從命令行複製文件並粘貼到文件資源管理器中。所以我將使用一個命令來複製一個文件,不僅是內容,而且使用Ctrl``v它來將它粘貼到 UI 中。

更新 xclip-copyfilexclip-pastefile接近我期望的工作,但是當我執行xclip-copyfile 時,我只能使用xclip-pastefile命令粘貼,而不是 GUI 粘貼。

我在 Ubuntu 中使用 Nautilus 作為我的文件瀏覽器,所以我不能代表任何其他瀏覽器。

Nautilus 處理粘貼文件的方式對於 NautilusCtrl-v來說是非常本地的,即。Nautilus 僅將 Ctrl-v 辨識為粘貼文件,以響應在nautilus本身中發出的*複製文件命令。*這意味著您不能使用 Ctrl-v 粘貼您在另一個應用程序中複製其路徑的文件。

但是,如果它適合您,可以將 Ctrl+Shift+v 綁定到在nautilus-scripts-manager. 使用此腳本,您幾乎可以做任何您喜歡的事情。

nautilus-scripts-manager使您可以訪問有關目前目錄以及選擇了哪些文件/目錄的一些基本資訊。我特別喜歡“nautilus-scripts”的一件事是它將其腳本添加到File菜單項(以及上下文菜單)。這允許您設置Nautilus 3Nautilus 2本地的鍵綁定。

這是一個粗略的範例,使用您已經提到的xclip-pastefiles範例。請注意,就目前而言,它要求您xclip-copyfiles在執行此 Ctrl-Shift-v粘貼腳本之前進行設置。

執行 setupxclip-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 

引用自:https://unix.stackexchange.com/questions/41926