it-swarm.com.de

Wechseln Sie das Verzeichnis zum Ziel des Verschiebevorgangs

Gelegentlich habe ich eine Datei bearbeitet und möchte sie in einen anderen Ordner verschieben. (Normalerweise: in einen Dropbox-Ordner, in dem ich nicht arbeiten wollte, um den anderen Besitzern des Ordners keine ständigen Updates zu geben.) Ich mache das zum Beispiel mit

mv file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf

Danach möchte ich häufig das Verzeichnis in das Zielverzeichnis meiner vorherigen Verschiebeoperation ändern. Ich tippe auf den Aufwärtspfeil, lösche den letzten file.pdf, halte ihn links, lösche mv file.pdf und ersetze ihn durch cd.

Gibt es eine schnellere und intelligentere Möglichkeit, dies zu tun? Gibt es einen Befehl "Datei verschieben und dann Verzeichnis wechseln in" oder eine Verknüpfung für das zuletzt verwendete Verzeichnis oder ähnliches?

12
Mees de Vries

Wenn Sie bash verwenden, hat die Verlaufsinteraktion genau die Abkürzung dafür. Das Wortbezeichner für das letzte Argument des vorherigen Befehls:

!!:$
bezeichnet das letzte Argument des vorhergehenden Befehls. Dies kann auf !$ gekürzt werden.

Kombiniert mit ein Modifikator , um die letzte Pfadnamenskomponente zu entfernen:

Nach dem optionalen Word-Bezeichner können Sie eine Folge von einem oder mehreren der gültigen Modifikatoren einfügen, denen jeweils ein ":" vorangestellt ist.

h
Entfernen Sie eine nachgestellte Pfadnamenskomponente, wobei nur der Kopf übrig bleibt.

Damit:

$ echo /ab/c/d
/ab/c/d
$ echo !$:h
echo /ab/c
/ab/c

Dieselbe Verknüpfung kann auch mit zsh verwendet werden.

17
muru

Wenn Sie den Dateinamen nicht ändern, können Sie ihn weglassen, und mv fügt ihn automatisch hinzu. Dies ist besonders nützlich, wenn Sie mehrere Dateien verschieben:

mv file.pdf ../../../Dropbox/sharedfolder/subdirectory/

mv *.pdf ../../../Dropbox/sharedfolder/subdirectory/

Mit dem Verzeichnis als letztes Argument können Sie !!:$ oder !$ verwenden, wie die Antwort des Gurus beschreibt.
Wenn Sie Bash mit den üblichen Standardeinstellungen verwenden, können Sie verwenden Alt+. stattdessen.
(Dies ist der Readline-Befehl insert-last-argument; bind -p listet alle Ihre aktuellen Bindungen auf.)

4
deltab