Mögliches Duplizieren:
Wiederverwenden von Text in einem Bash-Befehl
Wie kann ich vermeiden, den Pfad zu wiederholen, wenn ich eine Datei einige Verzeichnisse tief umbenennen möchte?
Beispielsweise:
mv path/to/old_filename.txt path/to/new_filename.txt
Ich frage mich, ob es einen Weg gibt, dies zu tun:
mv path/to/old_filename.txt (?)new_filename.txt
Wo (?)
könnte man "im selben Verzeichnis" sagen?
Sie können die Klammererweiterung verwenden:
mv path/to/{old_filename.txt,new_filename.txt}
Hier ist ein Link zum GNU-Handbuch zur Klammererweiterung in der Bash-Shell, das eine Liste von Substituten definiert und Bash anweist, den Parameter bei jeder Wiederholung mit einem anderen Substitut zu wiederholen.
Beispielsweise,
wird erweitert auf
Die einzige Einschränkung besteht darin, dass die erweiterten Wiederholungen als Argumente für das Zielprogramm aufeinander folgen können müssen.
quelle
mv path/to/{old,new}_filename.txt
. Dies hilft auch bei der Umkehrung oder anderen Arten der Wiederholung des Befehls. Ich habe es oft getan, um zBmv /etc/X11/xorg.conf{,.backup}
den Prozess durch die einfache Änderung umzukehrenmv /etc/X11/xorg.conf{.backup,}
.Darths Antwort oben ist klug, aber wenn Sie einen Ansatz mit verwenden möchten
cd
, können Sie auch die Verwendung einer Subshell in Betracht ziehen:Da der Verzeichniswechsel in der Subshell stattfindet, werden Sie die Verzeichnisse in Ihrer interaktiven Shell nicht ändern.
quelle
old_filename.txt
.Eine weitere Alternative, die nützlich ist, wenn Sie mehrere Befehle im Verzeichnis ausführen möchten, ist folgende:
quelle
Ich mag @ Darths Antwort . Hier ist eine Alternative:
cd path/to && mv oldfile newfile && cd -
quelle
mv
fehlschlägt (z. B. keine Berechtigungen), bleiben Sie impath/to
Verzeichnis. Sie könnten versuchencd path/to && mv oldfile newfile ; cd -
sicherzustellen, dasscd -
immer ausgeführt wird, es sei denn, wenncd path/to
(keine Berechtigungen) fehlschlagen, werden Sie weiterhin ausgeführtcd -
und gehen zum vorherigen Verzeichnis, das unerwünscht ist. mlc (+1) Subshell-Antwort ist besser. Ich schätzecd . && cd path/to && mv oldfile newfile ; cd -
, 99,9% der Zeit würden funktionieren (cd .
nur wenn Sie oder Ihre aktuellen dirs-Berechtigungen sich ändern; und in diesem Fall ist es nicht so schlimm, zu einem anderen dir zu