10
votes

Comment exécuter plusieurs commandes UNIX dans une fois?

Je suis toujours nouveau à UNIX. Est-il possible d'exécuter plusieurs commandes d'UNIX en une fois? Par exemple, écrivez toutes ces commandes que je veux exécuter dans un fichier, puis après avoir appelé ce fichier, il exécutera toutes les commandes à l'intérieur de ce fichier? Ou y a-t-il quelque chose (ou mieux) que je ne sais pas?

Merci d'avoir donné tous les commentaires et suggestions, je l'apprécierai.


8 Réponses :


24
votes

La réponse courte est, oui. Le concept est appelé script shell, ou des scripts Bash (une coquille commune). Afin de créer un script Bash simple, créez un fichier texte avec ceci en haut: xxx

puis collez vos commandes à l'intérieur de celui-ci, une à une ligne.

Enregistrez votre fichier, généralement avec l'extension .sh (mais non requise) et vous pouvez l'exécuter comme: xxx

ou vous pouvez modifier les autorisations pour le rendre exécutable: xxx

puis exécutez-le comme: xxx

beaucoup de ressources disponibles sur ce site et le Web pour plus d'informations, si nécessaire.


1 commentaires

Bonjour, puis-je savoir pourquoi "histoire" ne fonctionne pas? J'ai cherché dans le Web et j'ai vu que nous pouvons exécuter la commande "historique" dans le script shell si utilisez ". Script_name", et si pour ma machine, la permission est refusée?



0
votes

Bien sûr. C'est ce qu'on appelle un "script shell". En Bash, mettez toutes les commandes dans un fichier avec le suffixe "SH". Puis exécutez ceci: xxx pré>

puis tapez p>

./myfile


1 commentaires

Notez que la fin du fichier avec un suffixe de "sh" n'a absolument aucun effet. Le chmod fait une différence uniquement si vous incluez un Shebang et vous exécutez le fichier - le ./ myfile au lieu de source myfile ou . myfile .



20
votes
echo 'hello' && echo 'world'
Just separate your commands with &&

5 commentaires

Belle réponse pour le titre de la question, mais a raté les trois références au "fichier" dans le corps de la question. :)


Non, c'est l'opérateur et l'opérateur. Vous avez besoin d'un seul & pour fonctionner en arrière-plan. En outre, ce n'est pas la réponse à la vraie question.


Keith, il voulait dire l'opérateur et l'opérateur. Cela les exécutera consécutivement et c'est ce que nous voulons ici. Sinon, nous aurions des problèmes de sécurité de fil.


@Sarnold OP a suggéré d'utiliser un fichier pourrait être un moyen, mais l'opérateur && est également un excellent moyen d'exécuter plusieurs commandes.


@Emilebergeron pas de soucis, je ne suis pas celui qui a bownted cette réponse :)



2
votes

Yep, il suffit de mettre toutes vos commandes dans un fichier, puis de xxx

Ceci exécutera les commandes en séquence. Si vous voulez qu'ils courent tous en parallèle (c'est-à-dire, n'attendez pas que les commandes finissent), ajoutez ensuite un & à la fin de chaque ligne dans le fichier


0 commentaires

2
votes

Si vous souhaitez utiliser plusieurs commandes sur la ligne de commande, vous pouvez utiliser des tuyaux pour effectuer les opérations.

grep "Hello" <file-name> | wc -l


0 commentaires

3
votes

Vous pouvez également utiliser un point-virgule ';' ' et exécutez plusieurs commandes, comme: $ LS; qui


0 commentaires

7
votes

Nous pouvons exécuter plusieurs commandes en coquille en utilisant; En tant que séparateur entre plusieurs commandes

par exemple, xxx

si nous utilisons && comme séparateur, la commande suivante s'exécutera si la dernière commande réussit.


0 commentaires

0
votes

Pour que les commandes s'exécutent en même temps, vous pouvez utiliser la capacité d'emploi de ZSH

$ zsh -c "[Command1] [Command1 arguments] &; [Commande2] [Arguments de commande2]"

ou si vous exécutez ZSH comme coquille actuelle:

$ ping google.com &; Ping 127.0.0.1

Le ; est un jeton qui vous permet de mettre une autre commande sur la même ligne qui fonctionne directement après la première commande.

Le & est un jeton placé après une commande pour l'exécuter à l'arrière-plan.


0 commentaires