Comment créer un fichier de script pour les commandes de terminal?
114
Dans Windows , je peux écrire un fichier contenant des commandes pour cmd (généralement .cmdou .batfichiers). Lorsque je clique sur ces fichiers, il s’ouvre cmd.exeet exécute les commandes qu’il contient.
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:
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 avecchmod +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 se terminer de .shtoute 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 d'accès au programme qui doit interpréter le fichier. Des exemples courants comprennent /bin/python, /bin/sh, /bin/dash, mais les choses balle même bizarre 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 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 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. Courez scriptalors faites juste des trucs. Une fois que vous avez terminé, le type exitet le script génèrent un fichier contenant 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 scriptpour plus d'informations.
Vous voudrez peut - être que le changement /bin/bashà /bin/sh, bash est même pas la valeur par défaut pour Ubuntu.
TC1
@ TC1 Il est installé par défaut, donc peu importe que ce soit par défaut ou non.
Carlos Campderrós
1
Je tiens à souligner que /bin/dash(qui /bin/shest généralement liée à un lien symbolique), est beaucoup plus rapide que bash (j'ai mesuré environ 15 fois plus vite). Si possible, utilisez /bin/dashpour les scripts shell :)
MiJyn
4
Si vous êtes dans le même dossier que le fichier, assurez-vous de ./file.sh
coteyr
1
J'ai essayé les deux méthodes, mais si j'essaye de double-cliquer sur le fichier de script bash, il ouvre simplement le fichier texte dans geany / gedit, prêt à être édité. J'aimerais que le script soit exécuté après un double-clic. Cette question contient plus de détails sur ce que je veux faire.
Thymaro
15
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 écrase le contenu de fileto 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 echocommandes, 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 fileserait alors ceci:
test
test1
foo
bar
Si vous souhaitez ajouter un fichier, remplacez >par >>.
J'espère que cela t'aides!
EDIT : Oh, je vois, vous écrivez le fichier dans gedit, en utilisant l’ .shextension (facultatif, mais c’est une bonne idée), puis dans un gestionnaire de fichiers, cliquez avec le bouton droit de la souris sur le 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 préfixe sudosi elle ne vous appartient pas):
En fait, ce que je veux, c’est écrire un fichier, disons gedit, contenant des commandes de terminal. Ensuite, lorsque je double-clique sur ce fichier, il lance ces commandes dans le terminal.
Seth
Excellente réponse, mise à jour attentionnée. Pour créer simplement un fichier, j'ai toujours juste utilisétouch filename
TryTryAgain
@TryTryAgain, yep c'est une méthode facile, probablement plus rapide que echo "" > file. Est-ce que je peux inclure cette méthode dans ma réponse?
MiJyn
@MiJyn Absolument l'inclure, se sentir libre. Merci
TryTryAgain
Comment puis-je le faire pour exécuter n'importe où dans le terminal ... comme une commande globale?
Omer
14
Les scripts shell sont l'équivalent des fichiers de commandes Windows . Le script de démarrage est un excellent guide de démarrage .
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>, non<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 .shou (plus habituel) vous n'avez pas besoin d'utiliser une extension. Placez #!/bin/bashla toute première ligne du fichier , qui indique à Ubuntu le programme à utiliser pour exécuter le fichier.
Les commentaires commencent par #, non rem.
J'espère que cela vous aide et amusez-vous à écrire des scripts!
/bin/bash
à/bin/sh
, bash est même pas la valeur par défaut pour Ubuntu./bin/dash
(qui/bin/sh
est généralement liée à un lien symbolique), est beaucoup plus rapide que bash (j'ai mesuré environ 15 fois plus vite). Si possible, utilisez/bin/dash
pour les scripts shell :)Vous voulez dire écrire dans un fichier en utilisant un script shell? Voici quelques façons:
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.
Cette méthode écrase le contenu de
file
totext
. Si vous voulez effacer un fichier, vous pouvez simplement faire ceci:Supposons que vous souhaitiez écrire plus d'une ligne et que vous ne souhaitiez pas utiliser des milliers de
echo
commandes, utilisez la commande suivante:Cela vous permet d'écrire plusieurs lignes dans une commande. Le contenu de
file
serait alors ceci:Si vous souhaitez ajouter un fichier, remplacez
>
par>>
.J'espère que cela t'aides!
EDIT : Oh, je vois, vous écrivez le fichier dans gedit, en utilisant l’
.sh
extension (facultatif, mais c’est une bonne idée), puis dans un gestionnaire de fichiers, cliquez avec le bouton droit de la souris sur le fichier, sélectionnez Propriétés-> Autorisations, puis cochezAllow 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 préfixesudo
si elle ne vous appartient pas):Et pour courir:
la source
touch filename
echo "" > file
. Est-ce que je peux inclure cette méthode dans ma réponse?Les scripts shell sont l'équivalent des fichiers de commandes Windows . Le script de démarrage est un excellent guide de démarrage .
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>
, non<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. Placez#!/bin/bash
la toute première ligne du fichier , qui indique à Ubuntu le programme à utiliser pour exécuter le fichier.Les commentaires commencent par
#
, nonrem
.J'espère que cela vous aide et amusez-vous à écrire des scripts!
la source