Es gibt zahlreiche Beispiele, wie man den „Inhalt“ einer Datei mithilfe von xclip
oder von der Befehlszeile aus kopiert xsel
. Ich möchte eine Datei von der Befehlszeile aus kopieren und in den Datei-Explorer einfügen. Ich werde also einen Befehl verwenden, um eine Datei zu kopieren, nicht nur den Inhalt, und Ctrlvihn in die Benutzeroberfläche einfügen.
Aktualisiert
xclip-copyfile
und xclip-pastefile
funktioniert ungefähr so, wie ich es erwarte, aber wenn ich xclip-copyfil
e ausführe, kann ich nur mit xclip-pastefile
Befehlen einfügen, nicht mit der GUI.
Antwort1
Ich verwende Nautilus in Ubuntu als Dateibrowser, daher kann ich nicht für andere Browser sprechen.
Die Art und Weise, wie Nautilus das Einfügen einer Datei handhabt, Ctrl-v
ist ziemlich lokal für Nautilus, d. h. Nautilus erkennt nur Strg-v alsEinfügen einer Dateials Reaktion auf eineDatei kopierenBefehl, der ausgegeben wurde, währendNautilusselbst. Das bedeutet, dass Sie Strg-V nicht verwenden können, um eine Datei einzufügen, deren Pfad Sie in einer anderen Anwendung kopiert haben.
Wenn Sie möchten, können Sie Strg+Umschalt+V jedoch an ein Skript binden, das unter ausgeführt wird nautilus-scripts-manager
. Mit diesem Skript können Sie praktisch alles machen, was Sie möchten.
nautilus-scripts-manager
gibt Ihnen Zugriff auf einige grundlegende Informationen über das aktuelle Verzeichnis und welche Dateien/Verzeichnisse ausgewählt sind. Was mir an „nautilus-scripts“ besonders gefällt, ist, dass es seine Skripte zum File
Menüpunkt (sowie zum Kontextmenü) hinzufügt. Dies ermöglicht Ihnen, eine Tastenkombination festzulegen, die lokal ist fürNautilus 3oderNautilus 2.
Hier ist ein grobes Beispiel, das Ihr bereits erwähntes Beispiel verwendet . Beachten Sie, dass es in der aktuellen Form erfordert, dass Sie vor dem Ausführen dieses Ctrl-Shift-v xclip-pastefiles
einrichtenxclip-copyfiles
PasteSkript.
Sobald Sie das Setup ausgeführt haben xclip-copyfiles
, müssen Sie nur zu einem Nautilus-Fenster navigieren, das Zielverzeichnis (oder eine Datei in diesem Verzeichnis) auswählen und die Tastenkombination Ihres Skripts drücken:Strg-Umschalt-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