Dies wird foo.cin das neue Verzeichnis bazmit dem übergeordneten Verzeichnis verschoben bar.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
Die -pOption zum mkdirErstellen von Zwischenverzeichnissen nach Bedarf.
Ohne -palle 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 mkdirnichts 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 mkdirBefehl übergeben wurde.
Ich habe ein Archiv entpackt, ohne ein Ziel anzugeben, und wollte alle Dateien außer
demo-app.zipmeinem 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 -AGibt alle Dateinamen einschließlich versteckter Dateien zurück (mit Ausnahme der impliziten .und.. ).
Das Pipe-Symbol |wird verwendet, um die Ausgabe des lsBefehls an grep( ein Befehlszeilen-Nur-Text-Suchdienstprogramm) weiterzuleiten .
Das -vFlag weist Sie grepan, 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 mkdirverwiesen wird $_und mit ausgegeben wird echo.