从命令行复制文件,粘贴到 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 

相关内容