Si j'ai un fichier texte avec une commande séparée sur chaque ligne, comment ferais-je en sorte que le terminal exécute chaque ligne en tant que commande? Je ne veux tout simplement pas avoir à copier et coller une ligne à la fois. Cela ne doit PAS nécessairement être un fichier texte ... Ce peut être n'importe quel type de fichier qui fonctionnera.
example.txt
:
Sudo command 1
Sudo command 2
Sudo command 3
vous pouvez créer un script shell avec ces commandes, puis chmod +x <scriptname.sh>
, puis lancez-le simplement
./scriptname.sh
C'est très simple d'écrire un script bash
Fichier de maquette sh:
#!/bin/sh
Sudo command1
Sudo command2
.
.
.
Sudo commandn
vous pouvez aussi simplement l'exécuter avec un shell, par exemple:
bash example.txt
sh example.txt
Execute
. example.txt
Cela fait exactement ce que vous demandez, sans définir d’indicateur d’exécutable sur le fichier ni exécuter une instance supplémentaire de bash.
Pour une explication détaillée, voir par exemple https://unix.stackexchange.com/questions/43882/what-is-the-difference-between-sourcing-or-source-and-executing-a-file-i
Vous pouvez utiliser quelque chose comme ceci:
for i in `cat foo.txt`
do
Sudo $i
done
Bien que si les commandes ont des arguments (c'est-à-dire qu'il y a un espace dans les lignes), vous devrez peut-être vous en servir un peu pour protéger l'espace blanc afin que toute la chaîne soit vue par Sudo
comme une commande. Mais cela vous donne une idée sur la façon de commencer.