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 .cmd ou .bat fichier). Lorsque je clique sur ces fichiers, il s'ouvrira cmd.exe et exécutez les commandes que le fichier contient.

Comment ferais - je 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:

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

CMD.émulateur exe dans Ubuntu à exécuter .cmd/.fichier bat

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

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

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, cependant vous pouvez les faire se terminer par .sh ou de toute autre manière.

Quelques notes:

  • N'importe quel fichier (et je veux dire n'importe quel fichier) peut être exécuté sous Linux à condition que la première ligne soit le chemin d'accès au programme qui devrait interpréter le fichier. Les exemples courants incluent /bin/python, /bin/sh, /bin/dash, mais même les choses bizarres fonctionnent comme /bin/mysql
  • Bash est un langage complet. C'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 de chaîne, 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 en 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écuter script alors fais juste des trucs. Quand vous avez fini de faire des choses type exit et le script générera un fichier pour vous avec toutes les" choses " que vous avez faites. Ceci est moins utilisé mais fonctionne assez bien pour faire des choses comme des macros. man script pour plus d'infos.

Vous voulez dire écrire dans un fichier à l'aide d'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 écrase le contenu de file de text. Si vous souhaitez effacer un fichier, vous pouvez simplement le faire:

echo "" > file

Disons que vous voulez y écrire plus d'une ligne et que vous ne voulez pas en utiliser des milliers echo commandes, vous utiliseriez cette commande:

cat << EOF > filetesttest1foobarEOF

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

testtest1foobar

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

J'espère que cela vous aidera!


MODIFIER: Oh, je vois, donc vous écririez le fichier dans gedit, en utilisant le .sh> extension (facultatif, mais c'est une bonne idée), puis sur un gestionnaire de fichiers, faites un clic droit sur le fichier, sélectionnez Propriétés-Autorisations et cochez Allow executing file as program. Ensuite, vous pouvez double-cliquer dessus et il s'exécutera :). De plus, si vous souhaitez le faire dans le terminal, vous pouvez exécuter cette commande pour la rendre exécutable (vous voudrez peut-être ajouter un préfixe sudo s'il ne vous appartient pas):

chmod +x file

Et de courir:

./file

L'équivalent des fichiers batch Windows est les scripts shell, et 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.

Un couple de choses qui sont différentes des fichiers batch 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 y en a 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 <filename>

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

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

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

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

  • Les commentaires commencent par #, pas rem.

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