Dies wird foo.c
in das neue Verzeichnis baz
mit dem übergeordneten Verzeichnis verschoben bar
.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
Die -p
Option zum mkdir
Erstellen von Zwischenverzeichnissen nach Bedarf.
Ohne -p
alle Verzeichnisse im Pfad muss das Präfix bereits vorhanden sein.
Alles in Backticks ``
wird ausgeführt und die Ausgabe wird als Teil Ihres Befehls inline zurückgegeben.
Da mkdir
nichts zurückgegeben wird, wird nur die Ausgabe von echo $_
zum Befehl hinzugefügt.
$_
verweist das letzte Argument auf den zuvor ausgeführten Befehl.
In diesem Fall wird der Pfad zu Ihrem neuen Verzeichnis ( ~/bar/baz/
) zurückgegeben, das an den mkdir
Befehl übergeben wurde.
Ich habe ein Archiv entpackt, ohne ein Ziel anzugeben, und wollte alle Dateien außer
demo-app.zip
meinem aktuellen Verzeichnis in ein neues Verzeichnis namens verschieben
demo-app
.
Die folgende Zeile macht den Trick:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -A
Gibt alle Dateinamen einschließlich versteckter Dateien zurück (mit Ausnahme der impliziten .
und..
).
Das Pipe-Symbol |
wird verwendet, um die Ausgabe des ls
Befehls an grep
( ein Befehlszeilen-Nur-Text-Suchdienstprogramm) weiterzuleiten .
Das -v
Flag weist Sie grep
an, alle Dateinamen mit Ausnahme zu suchen und zurückzugeben demo-app.zip
.
Diese Liste von Dateien wird unserer Befehlszeile als Quellargumente für den Befehl move hinzugefügt mv
. Das Zielargument ist der Pfad zu dem neuen Verzeichnis, an das mit mkdir
verwiesen wird $_
und mit ausgegeben wird echo
.