Jak połączyć wiele poleceń w terminalu?

25

Mam następujące polecenia.

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php

Na razie wykonuję to jeden po drugim.

Czy istnieje sposób na połączenie tych poleceń w jednym wierszu?

Giri
źródło
3
Czy przeprowadziłeś jakieś badania dotyczące tego pytania?
don.joey
To nie było moje pytanie. Po prostu pół minuty googlingu dałoby ci odpowiedź. Zastanawiałem się więc, co już znalazłeś.
don.joey
Co sprawia, że ​​myślisz, że przegłosowałem twoje pytanie? Zlekceważę twój gniew. Na marginesie, pytanie „który z nich jest lepszy: używanie ;lub &&wykonywanie wielu poleceń w jednym wierszu” jest znacznie lepsze, ma więcej badań i prawdopodobnie przyciągnęłoby bardzo wiele pozytywnych opinii.
don.joey
Bardziej ogólny wariant tego pytania dostępny jest na stronie askubuntu.com/questions/334994/… . Dotyczy dokładnie pytania, o którym wspomniałem w poprzednim komentarzu.
don.joey
Nie martw się Giri. Istota pytania jest interesująca. Podjąłem wysiłek, aby stworzyć ogólny wariant tego.
don.joey

Odpowiedzi:

33

Tak, oddziel je średnikiem tak:

dir; ls -l

Większość lanugauges / pocisków używa średnika do oznaczenia końca polecenia i rozpoczęcia nowego podczas oceny od lewej do prawej.

Lub, jak zaleca @RobieBasak, użyj && zamiast; aby uchronić się przed wypadkami związanymi z kodowaniem.

dir && ls -l
Colyn1337
źródło
23
&&Zamiast tego warto używać ;. Zapewnia to, że kolejne polecenia są wykonywane tylko wtedy, gdy poprzednie polecenia nie zawiodły. Pozwala to uniknąć pewnych niezręcznych konsekwencji. Na przykład: cd /somewhere_else; rm -Rf *może zrobić coś katastrofalnego, jeśli /somewhere_elsenie istnieje lub źle przeliterujesz; cd /somewhere_else && rm -Rf *chroni przed tym.
Robie Basak,
2
Rozwiązanie „&&” jest tak dobre, że powinno być pierwszą rekomendacją w tej odpowiedzi. Edytuj swoją odpowiedź i promuj lepszą odpowiedź na pierwszym miejscu.
Kerem Baydoğan,