有很多示例如何借助xclip
或来从命令行复制文件的“内容” xsel
。我正在寻找的是从命令行复制文件并粘贴到文件资源管理器中。因此,我将使用命令来复制文件,而不仅仅是内容,然后将Ctrlv其粘贴到 UI 中。
更新
xclip-copyfile
并且xclip-pastefile
工作接近我的预期,但是当我运行xclip-copyfil
e 时,我只能使用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