137 votes

Comment créer un fichier de script pour des commandes terminal?

Sous Windows, je peux écrire un fichier contenant des commandes pour cmd (généralement des fichiers .cmd ou .bat). Lorsque je clique sur ces fichiers, cela ouvrira cmd.exe et exécutera les commandes contenues dans le fichier.

Comment pourrais-je faire cela dans Ubuntu?

Je suis sûr que c'est un doublon, mais je ne trouve pas ma réponse.
C'est similaire à ces questions, mais elles ne répondent pas à la question :

Sauvegarder des commandes terminal fréquemment utilisées dans un fichier

Émulateur CMD.exe sous Ubuntu pour exécuter des fichiers .cmd/.bat

175voto

coteyr Points 16560

Il y a deux méthodes.

Premièrement, la plus courante est d'écrire un fichier, assurez-vous que la première ligne est

#!/bin/bash

Enregistrer ensuite le fichier. Ensuite, marquez-le comme exécutable en utilisant chmod +x fichier

Ensuite, lorsque vous cliquez (ou exécutez le fichier à partir du terminal), les commandes seront exécutées. Par convention, ces fichiers n'ont généralement pas d'extension, mais vous pouvez les faire terminer par .sh ou de toute autre manière.

Quelques notes :

  • N'importe quel (et je veux dire n'importe quel) fichier peut être exécuté sous Linux à condition que la première ligne soit un chemin vers le programme qui devrait interpréter le fichier. Les exemples courants incluent /bin/python, /bin/sh, /bin/dash, mais même des choses étranges fonctionnent comme /bin/mysql
  • Bash est un langage complet. Il est beaucoup plus complexe que cmd.exe sous Windows. C'est un langage de programmation puissant qui prend en charge les fonctions, les boucles, les conditionnelles, les opérations sur les chaînes, etc.
  • Ces documents peuvent aider si vous rencontrez des problèmes.
  • Si vous ne souhaitez pas rendre le fichier exécutable, vous pouvez l'exécuter en le passant en argument à bash : bash fichier/a/exécuter.sh

Un exemple simple de script Bash

#!/bin/bash  
echo "Ceci est un script shell"  
ls -lah  
echo "J'ai fini d'exécuter ls"  
SOMEVAR='texte'  
echo "$SOMEVAR"

La deuxième méthode consiste à enregistrer des commandes en utilisant script. Exécutez script puis faites simplement ce que vous avez à faire. Lorsque vous avez terminé, tapez exit et script générera un fichier pour vous avec tout ce que vous avez fait. C'est moins utilisé mais fonctionne assez bien pour créer des choses comme des macros. man script pour plus d'informations.

20voto

MiJyn Points 3180

Vous voulez dire écrire dans un fichier en utilisant un script shell? Voici quelques façons :

touch file

Cette méthode va simplement créer un fichier, mais si le fichier existe déjà, elle modifie simplement la date de modification à l'heure à laquelle vous avez utilisé cette commande.

echo "text" > file

Cette méthode écrase le contenu de file par text. Si vous voulez effacer un fichier, vous pouvez simplement faire ceci :

echo "" > file

Supposons que vous vouliez écrire plusieurs lignes dans ce fichier et que vous ne voulez pas utiliser des milliers de commandes echo, vous utiliseriez alors cette commande :

cat << EOF > file
test
test1
foo
bar
EOF

Cela vous permet d'écrire plusieurs lignes en une commande. Le contenu de file serait alors le suivant :

test
test1
foo
bar

Si vous voulez ajouter du contenu à un fichier, remplacez > par >>.

J'espère que cela vous aidera!


ÉDITER: Oh, je comprends, donc vous écririez le fichier dans gedit, en utilisant l'extension .sh (optionnelle, mais c'est une bonne idée), puis dans un gestionnaire de fichiers, faites un clic droit sur le fichier, sélectionnez Propriétés->Autorisations, et cochez Autoriser l'exécution du fichier en tant que programme. Ensuite, vous pouvez double-cliquer dessus et il s'exécutera :). De plus, si vous voulez le faire dans le terminal, vous pouvez exécuter cette commande pour le rendre exécutable (vous voudrez peut-être préfixer sudo s'il ne vous appartient pas) :

chmod +x file

Et pour l'exécuter :

./file

14voto

iBelieve Points 5254

Le pendant des fichiers de commandes Windows sont les scripts shell, et un excellent guide pour débutants est Bash Scripting.

Pour la plupart, les commandes que vous pouvez entrer en ligne de commande peuvent être placées dans un script shell.

Voici quelques différences par rapport aux fichiers de commandes Windows :

  • Il existe différents interpréteurs de commandes, appelés shells. Le par défaut est bash, mais s'il vous intéresse, il en existe d'autres, comme zsh, ksh, dash, perl, python, etc.

  • Pour exécuter un script shell, vous devez rendre le fichier exécutable, ce que vous pouvez faire avec chmod +x

  • Dans Ubuntu, le répertoire courant n'est pas dans le chemin de recherche des programmes, donc vous devez exécuter ./, pas

  • Les noms de variables sont $, pas %%

  • Les commandes dans un script shell ne sont pas affichées par défaut, comme dans un fichier de commandes.

  • L'extension du nom de fichier peut être .sh ou (plus courant) vous n'avez pas besoin d'utiliser une extension. Placez #!/bin/bash sur la toute première ligne du fichier, ce qui indique à Ubuntu quel programme utiliser pour exécuter le fichier.

  • Les commentaires commencent par #, pas rem.

En espérant que cela vous aide et amusez-vous à écrire des scripts !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X