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

92

Sous Windows, je peux écrire un fichier contenant des commandes pour cmd (généralement les fichiers .cmd ou .bat ). Lorsque je clique sur ces fichiers, il ouvre cmd.exe et exécute les commandes du fichier.

Comment pourrais-je le faire dans Ubuntu?

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

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

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

    
posée Seth 30.11.2012 - 03:56
la source

3 réponses

123

Il existe deux méthodes.

D'abord, le plus commun est d'écrire un fichier, assurez-vous que la première ligne est

#!/bin/bash

Enregistrez ensuite le fichier. Marquez-le ensuite comme exécutable en utilisant chmod +x file

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

Quelques notes:

  • Tout fichier (et je veux dire) peut être exécuté sous Linux à condition que la première ligne soit un chemin vers le programme qui doit interpréter le fichier. Parmi les exemples courants, citons /bin/python , /bin/sh , /bin/dash , mais même les objets à billes étranges fonctionnent comme /bin/mysql
  • Bash est une langue complète. Il est beaucoup plus complexe que cmd.exe dans Windows. Il dispose d'un langage de programmation puissant qui prend en charge les fonctions, les boucles, les conditions, les opérations de chaîne, etc.
  • Ces documents peuvent 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 de bash simple

#!/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 les commandes en utilisant script . Exécutez script alors faites juste des choses. Lorsque vous avez fini de faire des choses, tapez exit et le script générera un fichier avec toutes les "choses" que vous avez faites. Ceci est moins utilisé mais fonctionne assez bien pour créer des choses comme des macros. man script pour plus d'informations.

    
réponse donnée coteyr 30.11.2012 - 04:18
la source
14

L'équivalent des fichiers de commandes Windows est des scripts shell, et un excellent guide de démarrage est Bash Scripting .

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

Quelques choses différentes 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 y en a 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 variables 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 , ce 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 que vous aurez du plaisir à écrire des scripts!

    
réponse donnée iBelieve 30.11.2012 - 04:14
la source
13

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à, il modifie simplement la date de modification au moment où vous avez utilisé cette commande.

echo "text" > file

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

echo "" > file

Supposons que vous souhaitiez y écrire plusieurs lignes et que vous ne souhaitiez pas utiliser des milliers de commandes echo , vous utiliseriez cette commande:

cat << EOF > file
test
test1
foo
bar
EOF

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

test
test1
foo
bar

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

J'espère que ça aide!

EDIT : Oh, je vois, vous écrivez donc le fichier dans gedit, en utilisant l’extension .sh (optionnel, mais c’est une bonne idée), puis sur un gestionnaire de fichiers, à droite Cliquez sur le fichier, sélectionnez Propriétés-> Autorisations et vérifiez Allow executing file as program . Ensuite, vous pouvez double-cliquer dessus et le lancer :). De même, si vous voulez le faire dans le terminal, vous pouvez exécuter cette commande pour la rendre exécutable (vous pouvez ajouter sudo si elle ne vous appartient pas):

chmod +x file

Et pour courir:

./file
    
réponse donnée MiJyn 30.11.2012 - 04:00
la source

Lire d'autres questions sur les étiquettes