Comment combiner plusieurs commandes dans le terminal?

25

J'ai les commandes suivantes.

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

À partir de maintenant, je l'exécute un par un.

Existe-t-il un moyen de combiner ces commandes sur une seule ligne?

Giri
la source
3
Avez-vous fait des recherches sur cette question?
don.joey
Ce n'était pas ma question. C'est juste qu'une demi-minute de recherche sur Google vous aurait donné la réponse. Par conséquent, je me demandais ce que vous aviez déjà trouvé, le cas échéant.
don.joey
Qu'est-ce qui vous fait penser que j'ai voté contre votre question? Je vais négliger ta colère. En remarque, la question "laquelle est la meilleure: utiliser ;ou &&exécuter plusieurs commandes sur une seule ligne" est bien meilleure, a fait plus de recherches et aurait probablement attiré un grand nombre de votes positifs.
don.joey
Il existe une variante plus générique de cette question disponible sur askubuntu.com/questions/334994/… . Cela répond exactement à la question que je mentionne dans le commentaire précédent.
don.joey
Ne t'inquiète pas Giri. L'essence de la question est intéressante. J'ai pris l'effort d'en faire une variante générique.
don.joey

Réponses:

33

Oui, séparez avec un point-virgule comme ceci:

dir; ls -l

La plupart des lanugauges / shells utilisent le point-virgule pour signifier la fin d'une commande et pour recommencer tout en évaluant de gauche à droite.

Ou comme @RobieBasak le recommande, utilisez && au lieu de; pour se prémunir contre les accidents de codage.

dir && ls -l
Colyn1337
la source
23
C'est une bonne idée d'utiliser à la &&place de ;. Cela garantit que les commandes suivantes ne sont exécutées que si les commandes précédentes n'ont pas échoué. Cela évite certaines conséquences gênantes. Par exemple: cd /somewhere_else; rm -Rf *pourrait faire quelque chose de désastreux s'il /somewhere_elsen'existe pas ou si vous l'orthographiez mal; cd /somewhere_else && rm -Rf *vous protège de cela.
Robie Basak
2
La solution '&&' est si bonne qu'elle devrait être la première recommandation de cette réponse. Veuillez modifier votre réponse et promouvoir la meilleure réponse à la première place.
Kerem Baydoğan