
Existem muitos exemplos de como copiar o “conteúdo” de um arquivo da linha de comando com a ajuda de xclip
ou xsel
. O que procuro é copiar um arquivo da linha de comando e colar no explorador de arquivos. Portanto, usarei um comando para copiar um arquivo, não apenas o conteúdo, e Ctrlvcolá-lo na UI.
Atualizada
xclip-copyfile
e xclip-pastefile
trabalho perto do que espero, mas quando executo xclip-copyfil
e, só consigo colar com xclip-pastefile
comando, não colar GUI.
Responder1
Eu uso o Nautilus, no Ubuntu, como meu navegador de arquivos, então não posso falar por nenhum outro navegador.
A maneira como o Nautilus lida com a colagem de um arquivo Ctrl-v
é bastante local para o Nautilus, ou seja. O Nautilus só reconhece Ctrl-v comocole um arquivoem resposta a umcopiar arquivocomando que foi emitido enquanto estava emnáutiloem si. Isso significa que você não pode usar Ctrl-v para colar um arquivo cujo caminho você copiou em outro aplicativo.
No entanto, se for conveniente para você, Ctrl+Shift+v pode ser vinculado a um script executado em nautilus-scripts-manager
. Com este script, você pode fazer praticamente o que quiser.
nautilus-scripts-manager
dá acesso a algumas informações fundamentais sobre o diretório atual e quais arquivos/diretórios estão selecionados. Uma coisa que gosto particularmente nos "scripts nautilus" é que ele adiciona seus scripts ao File
item de menu (bem como ao menu de contexto). Isto permite que você defina uma ligação de teclas que seja local paraNáutilus 3ouNáutilus 2.
Aqui está um exemplo aproximado, usando o xclip-pastefiles
exemplo já mencionado. Observe que, do jeito que está agora, é necessário que você configure o xclip-copyfiles
antes de executar este Ctrl-Shift-vcolarroteiro.
Depois de executar o setup xclip-copyfiles
, você só precisa navegar até uma janela do Nautilus, selecionar o diretório de destino (ou um arquivo nesse diretório) e pressionar a tecla do seu script: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