web-dev-qa-db-fra.com

Comment créer un fichier de script pour les commandes de 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, il ouvre cmd.exe et les exécute avec 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 semblable à ces questions, mais elles ne répondent pas à la question:

Stocke les commandes de terminal fréquemment utilisées dans un fichier

émulateur CMD.exe sous Ubuntu pour exécuter le fichier .cmd/.bat

110
Seth

Il y a deux méthodes.

Tout d’abord, le plus courant est d’écrire un fichier, assurez-vous que la première ligne est

#!/bin/bash

Puis enregistrez le fichier. Ensuite, marquez-le comme exécutable avec chmod +x file

Ensuite, lorsque vous cliquez sur (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 par tout autre moyen.

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 d'accès au programme qui doit interpréter le fichier. Des exemples courants incluent /bin/python, /bin/sh, /bin/dash, mais même les choses les plus bizarres sur la balle fonctionnent comme /bin/mysql
  • Bash est une langue complète. Il est beaucoup plus complexe que cmd.exe dans Windows. Il possède un langage de programmation puissant qui prend en charge les fonctions, les boucles, les conditions, les opérations sur les chaînes, etc.
  • Ces documents peut vous 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 comme argument à bash: bash file/to/run.sh

Un exemple simple de Bash

#!/bin/bash  
echo "This is a Shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

La deuxième méthode consiste à enregistrer des commandes en utilisant script. Exécutez script puis faites des choses. Lorsque vous avez terminé, saisissez exit et le script générera un fichier avec tous les "éléments" que vous avez créés. Ceci est moins utilisé mais fonctionne assez bien pour faire des choses comme des macros. man script pour plus d'informations.

144
coteyr

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

touch file

Cette méthode créera simplement 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 remplace le contenu de file par text. Si vous voulez effacer un fichier, vous pouvez simplement faire ceci:

echo "" > file

Supposons que vous souhaitiez écrire plus d'une ligne et que vous ne souhaitiez pas utiliser des milliers de commandes echo, utilisez la commande suivante:

cat << EOF > file
test
test1
foo
bar
EOF

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

test
test1
foo
bar

Si vous souhaitez ajouter un fichier à un fichier, remplacez > par >>.

J'espère que cela t'aides!


EDIT: Oh, je vois, vous écrivez le fichier dans gedit, en utilisant l'extension .sh (facultatif, mais c'est une bonne idée), puis dans un gestionnaire de fichiers, cliquez avec le bouton droit de la souris sur l'icône. fichier, sélectionnez Propriétés-> Autorisations, puis cochez Allow executing file as program. Ensuite, vous pouvez double-cliquer dessus et il sera exécuté :). De plus, si vous voulez le faire dans le terminal, vous pouvez exécuter cette commande pour la rendre exécutable (vous pouvez ajouter du nom Sudo si elle ne vous appartient pas):

chmod +x file

Et pour courir:

./file
14
MiJyn

Les scripts Shell sont l’équivalent des fichiers de commandes Windows. Un excellent guide de démarrage est Script Bash .

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

Quelques éléments différents des fichiers de commandes Windows:

  • Il existe différents interpréteurs de commandes, appelés shells. La valeur par défaut est bash, mais si vous êtes intéressé, il en existe d’autres, tels que 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 <filename>

  • Dans Ubuntu, le répertoire en cours n'est pas le chemin de recherche du programme. Vous devez donc exécuter ./<filename>, pas <filename>

  • Les noms de variable sont $<varname>, pas %<varname>%

  • Les commandes d'un script Shell ne sont pas imprimées par défaut, comme dans un fichier de commandes.

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

  • Les commentaires commencent par #, pas rem.

J'espère que cela vous aide et amusez-vous à écrire des scripts!

14
iBelieve