
Hay muchos ejemplos de cómo copiar el "contenido" de un archivo desde la línea de comando con la ayuda de xclip
o xsel
. Lo que busco es copiar un archivo desde la línea de comando y pegarlo en el explorador de archivos. Entonces usaré un comando para copiar un archivo, no solo el contenido, y Ctrlvlo usaré para pegarlo en la interfaz de usuario.
actualizado
xclip-copyfile
y xclip-pastefile
trabajo cerca de lo que espero, pero cuando ejecuto xclip-copyfil
e, solo puedo pegar con xclip-pastefile
comando, no con GUI.
Respuesta1
Utilizo Nautilus, en Ubuntu, como mi explorador de archivos, por lo que no puedo hablar por ningún otro navegador.
La forma en que Nautilus maneja el pegado de un archivo Ctrl-v
es bastante local para Nautilus, es decir. Nautilus sólo reconoce Ctrl-v comopegar un archivoen respuesta a uncopiar archivocomando que fue emitido mientras estaba ennautilosí mismo. Esto significa que no puede usar Ctrl-v para pegar un archivo cuya ruta copió en otra aplicación.
Sin embargo, si le conviene, Ctrl+Shift+v se puede vincular a un script que se ejecuta en nautilus-scripts-manager
. Con este script, puedes hacer prácticamente lo que quieras.
nautilus-scripts-manager
le brinda acceso a información fundamental sobre el directorio actual y qué archivos/directorios están seleccionados. Una cosa que me gusta especialmente de "nautilus-scripts" es que agrega sus scripts al File
elemento del menú (así como al menú contextual). Esto le permite configurar una combinación de teclas que es local paraNautilo 3oNautilo 2.
Aquí hay un ejemplo aproximado, utilizando el xclip-pastefiles
ejemplo ya mencionado. Tenga en cuenta que, tal como está ahora, requiere que configure xclip-copyfiles
antes de ejecutar Ctrl-Shift-vpegarguion.
Una vez que haya ejecutado la configuración xclip-copyfiles
, solo necesita navegar a una ventana de Nautilus, seleccionar el directorio de destino (o un archivo en ese directorio) y presionar la combinación de teclas de su script:Ctrl-Mayús-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