Powiedz, że mam plik /templates/apple
i chcę
- umieść to w dwóch różnych miejscach, a następnie
- usuń oryginał.
Tak, /templates/apple
zostaną skopiowane do /templates/used
AND, /templates/inuse
a następnie chciałbym usunąć oryginał.
Czy jest cp
to najlepszy sposób, aby to zrobić rm
? Czy jest jakiś lepszy sposób?
Chcę to wszystko zrobić w jednym wierszu, więc myślę, że wyglądałoby to tak:
cp /templates/apple /templates/used | cp /templates/apple /templates/inuse | rm /templates/apple
Czy to poprawna składnia?
Dlaczego nie
cp
do lokalizacji 1, a następniemv
do lokalizacji 2. To zajmuje się „usunięciem” oryginału.I nie, to nie jest poprawna składnia.
|
służy do „potoku” wyjścia z jednego programu i przekształcenia go w dane wejściowe dla następnego programu. To, czego chcesz, to;
oddzielenie wielu poleceń.Jeśli potrzebujesz, aby poszczególne polecenia MUSI się powieść, zanim będzie można uruchomić następne, użyj
&&
zamiast tego:W ten sposób, jeśli jedno z
cp
poleceń nie powiedzie się,rm
nie uruchomi się.źródło
Zauważ, że
cp A B; rm A
jest dokładniemv A B
. Będzie też szybszy, ponieważ nie musisz kopiować bajtów (zakładając, że miejsce docelowe znajduje się w tym samym systemie plików), po prostu zmień nazwę pliku. Więc chceszcp A B; mv A C
źródło
Inną opcją jest pisanie Ctrl+V Ctrl+Jna końcu każdego polecenia.
Przykład (wymienić
#
z Ctrl+V Ctrl+J):Wynik:
Spowoduje to wykonanie poleceń niezależnie od tego, czy poprzednie nie powiodły się.
Taki sam jak:
echo 1; echo 2; echo 3
Jeśli chcesz zatrzymać wykonywanie nieudanych poleceń, dodaj
&&
na końcu każdego wiersza oprócz ostatniego.Przykład (wymienić
#
z Ctrl+V Ctrl+J):Wynik:
W
zsh
można również użyć Alt+Enterlub Esc+EnterzamiastCtrl+V Ctrl+Jźródło
Spróbuj tego..
cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple
źródło
Używanie rur wydaje mi się dziwne. W każdym razie powinieneś użyć logicznego
and
operatora Bash:Jeśli
cp
polecenia nie powiodą się,rm
nie zostaną wykonane.Możesz też stworzyć bardziej rozbudowaną linię poleceń za pomocą
for
pętli icmp
.źródło