Angenommen, ich habe eine Datei /templates/apple
und möchte
- lege es an zwei verschiedenen Stellen und dann
- Entfernen Sie das Original.
Also, /templates/apple
wird nach /templates/used
AND kopiert /templates/inuse
und danach möchte ich das Original entfernen.
Ist cp
der beste Weg, dies zu tun, gefolgt von rm
? Oder gibt es einen besseren Weg?
Ich möchte alles in einer Zeile erledigen, also denke ich, dass es ungefähr so aussehen würde:
cp /templates/apple /templates/used | cp /templates/apple /templates/inuse | rm /templates/apple
Ist das die richtige Syntax?
Warum nicht
cp
zu Position 1, dannmv
zu Position 2. Dadurch wird das Original "entfernt".Und nein, es ist nicht die richtige Syntax.
|
wird verwendet, um die Ausgabe eines Programms zu "leiten" und in die Eingabe für das nächste Programm umzuwandeln. Was Sie wollen, ist;
, dass mehrere Befehle getrennt werden.Wenn Sie benötigen, dass die einzelnen Befehle erfolgreich sein MÜSSEN, bevor der nächste gestartet werden kann, verwenden Sie
&&
stattdessen:Auf diese Weise wird der
cp
Befehl nicht ausgeführt , wenn einer der Befehle fehlschlägtrm
.quelle
Beachten Sie, dass
cp A B; rm A
das genau istmv A B
. Es wird auch schneller sein, da Sie die Bytes nicht tatsächlich kopieren müssen (vorausgesetzt, das Ziel befindet sich im selben Dateisystem), sondern nur die Datei umbenennen. Also du möchtestcp A B; mv A C
quelle
Eine andere Option ist die Eingabe Ctrl+V Ctrl+Jam Ende jedes Befehls.
Beispiel (ersetzen
#
durch Ctrl+V Ctrl+J):Ausgabe:
Dadurch werden die Befehle ausgeführt, unabhängig davon, ob die vorherigen fehlgeschlagen sind.
Gleich wie:
echo 1; echo 2; echo 3
Wenn Sie die Ausführung bei fehlgeschlagenen Befehlen stoppen möchten, fügen Sie
&&
am Ende jeder Zeile außer der letzten hinzu.Beispiel (ersetzen
#
durch Ctrl+V Ctrl+J):Ausgabe:
In können
zsh
Sie auch Alt+Enteroder Esc+Enteranstelle von verwendenCtrl+V Ctrl+Jquelle
Versuche dies..
cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple
quelle
Die Verwendung von Rohren kommt mir komisch vor. Auf jeden Fall sollten Sie den logischen
and
Bash-Operator verwenden:Wenn die
cp
Befehle fehlschlagen,rm
wird der nicht ausgeführt.Oder Sie können eine ausführlichere Befehlszeile mit einer
for
Schleife und erstellencmp
.quelle