從命令列複製文件,貼上到 Gnome 窗口,反之亦然

從命令列複製文件,貼上到 Gnome 窗口,反之亦然

有許多範例如何借助xclip或來從命令列複製文件的“內容” xsel。我正在尋找的是從命令列複製文件並貼上到文件資源管理器。因此,我將使用命令來複製文件,而不僅僅是內容,然後將Ctrlv其貼到 UI 中。

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

答案1

我在 Ubuntu 中使用 Nautilus 作為我的檔案瀏覽器,所以我不能代表任何其他瀏覽器。
Nautilus 處理貼上檔案的方式Ctrl-v對於 Nautilus 來說是非常本地化的,即。 Nautilus 只將 Ctrl-v 辨識為貼上文件響應一個複製文件在中時發出的命令鸚鵡螺本身。這意味著您無法使用 Ctrl-v 貼上您在另一個應用程式中複製了路徑的檔案。

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

nautilus-scripts-manager使您可以存取有關當前目錄以及選擇的文件/目錄的一些基本資訊。我特別喜歡“nautilus-scripts”的一件事是它將其腳本添加到File選單項目(以及上下文選單)。這允許您設定本地的鍵綁定鸚鵡螺3號或者鸚鵡螺2號

這是一個粗略的範例,使用您已經提到的xclip-pastefiles範例。請注意,就目前情況而言,它要求您xclip-copyfiles在運行此 Ctrl-Shift-v 之前進行設置貼上腳本。
執行 setup 後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 

相關內容