Come combinare più comandi nel terminale?


25

Ho i seguenti comandi.

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

A partire da ora lo sto eseguendo uno per uno.

C'è un modo per combinare quei comandi in una riga?


3
Hai fatto qualche ricerca per questa domanda?
don.joey,

Non era questa la mia domanda. È solo che mezzo minuto di googling ti avrebbe dato la risposta. Quindi, mi chiedevo cosa avessi già trovato, se non altro.
don.joey,

Cosa ti fa pensare che ho annullato il voto della tua domanda? Trascurerò la tua rabbia. Come nota a margine, la domanda "quale è meglio: usare ;o &&eseguire più comandi in una riga" è molto meglio, ha più ricerche e probabilmente avrebbe attirato molti voti positivi.
don.joey,

C'è una variante più generica di questa domanda disponibile su askubuntu.com/questions/334994/… . Affronta esattamente la domanda che menziono nel commento precedente.
don.joey,

Non preoccuparti Giri. L'essenza della domanda è interessante. Mi sono sforzato di farne una variante generica.
don.joey,

Risposte:


33

Sì, separalo con un punto e virgola in questo modo:

dir; ls -l

La maggior parte dei lanugauges / shell usano i punti e virgola per indicare la fine di un comando e per iniziare nuovi durante la valutazione da sinistra a destra.

O come raccomanda @RobieBasak, usa && invece di; per evitare incidenti di codifica.

dir && ls -l

23
È una buona idea usare al &&posto di ;. Ciò garantisce che i comandi successivi vengano eseguiti solo se i comandi precedenti non hanno fallito. Questo evita alcune conseguenze imbarazzanti. Ad esempio: cd /somewhere_else; rm -Rf *potresti fare qualcosa di disastroso se /somewhere_elsenon esiste o se lo scrivi male; cd /somewhere_else && rm -Rf *ti protegge da questo.
Robie Basak,

2
La soluzione "&&" è così buona, dovrebbe essere la prima raccomandazione in questa risposta. Modifica la tua risposta e promuovi la risposta migliore al primo posto.
Kerem Baydoğan,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.