Wenn ich drin bin ~/blob
und eine Akte drin habe~/blob/a_long_directory_name/c/x.x
ich kann tippen
mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y
Gibt es eine Verknüpfung, mit der ich etwas Kürzeres eingeben kann, das den Verzeichnispfad im ersten Parameter verwendet (nicht jedoch mein aktuelles Verzeichnis), z
mv blob/a_long_directory_name/c/x.x $same_dir/y.y
wo so etwas $same_dir
auf das Verzeichnis von Parameter 1 zeigen würde
quelle
even_more
relativen Pfad ...Mit bash können Sie eine Klammererweiterung verwenden
quelle
Sie können die Textersetzungsfunktionen Ihrer Shell verwenden. In
bash
könnten Sie ein Biest wie:Um es aufzuschlüsseln:
!#
ist die aktuell eingegebene Zeile:$
fordert Sie auf, das letzte Wort der betreffenden Zeichenfolge ( in diesem Fall)n
auszuwählen (durch eine Zahl zu ersetzen, um das letzte Wort auszuwählen ). Das letzte Wort der bisher eingegebenen Zeile wäre das vorherige Wort.n
!#
:gs^xx^yy
Führt eine globale (g
) Textsubstitution (s
) für das resultierende Wort durch und ersetzt 'xx' durch 'yy'.^
ist nur ein Begrenzer für dens
Befehl, der die Verwendung/
in Ihren Mustern zulässt .Diese Methode ist etwas allgemeiner, da Sie einen beliebigen Teil des Pfads ('xx') durch ein beliebiges anderes Wort ('yy') ersetzen können.
Wie bei jeder Manipulation des Verlaufs empfiehlt es sich, entsprechende Shell-Optionen festzulegen (z
~/.bashrc
. B. in ). In diesem Fallzeigt die bearbeitete Zeile an, nachdem Sie die Eingabetaste gedrückt haben, sodass Sie sie weiterhin bearbeiten und auf Fehler überprüfen können.
Warum Sie ein solches Konstrukt verwenden, ist mir nicht sicher, aber in diesem Fall funktioniert es.
quelle
c/x.x
mitevenmore/y.y
Beibehaltung der ursprünglichen Pfadpräfix.$PWD
). Sicher, vielleicht ist es nicht das eleganteste, aber es weist auf die Tatsache hin, dass die Shell textuelle Ersetzungen und Wortbezeichner enthält, die einige Benutzer möglicherweise für die Recherche noch nützlich finden.