Comment exécuter un fichier .sh sous Linux
Comment exécuter un fichier .sh sous Linux
1. Le fichier .sh est un fichier texte Si vous souhaitez l'exécuter, vous devez utiliser chmod a+x xxx.sh pour donner les autorisations exécutables.
Est-ce un script bash
Vous pouvez utiliser touch test.sh # pour créer le fichier test.sh
vi test.sh # Editez le fichier test.sh
Ajouter du contenu
#! /bin/bash
mkdir test
Enregistrez et quittez.
chmod a+x test.sh #Donner des autorisations à l'exécutable test.sh
Par exemple, le fichier test,sh se trouve sous le fichier /home/work
Exécuter
Méthode 1 : Exécutez
dans son propre répertoire. Entrez le fichier cd /home/workwen
et exécutez ./test.sh
.La commande sera dans le répertoire courant Créez un répertoire "test" sous le répertoire.
Méthode 2 : Courir avec une force absolue
Exécuter /home/work/test.sh
Méthode 3 : Courir seul répertoire
sh test.sh
Suggestion finale : utiliser
Code C
1.man sh
man sh Jetons un coup d'œil à l'introduction de sh~
Recommandé : "Tutoriel Linux"
linux Syntaxe .sh
Introduction :
1 Début
Le programme doit commencer par la ligne suivante (doit être placé sur la première ligne du fichier ):
# !/bin/sh
Le symbole #! est utilisé pour indiquer au système que les paramètres derrière lui sont les programmes utilisés pour exécuter le fichier. Dans cet exemple, nous utilisons /bin/sh pour exécuter le programme.
Une fois l'écriture du script terminée, si vous souhaitez exécuter le script, vous devez également le rendre exécutable.
Pour rendre le script exécutable :
Compilez chmod +x filename afin de pouvoir utiliser ./filename pour exécuter
2 Notes
Faire de la programmation shell Lorsque , une phrase commençant par # représente un commentaire jusqu'à la fin de la ligne. Nous vous recommandons sincèrement d'utiliser des commentaires dans vos programmes.
Si vous utilisez des commentaires, vous pouvez comprendre la fonction et le principe de fonctionnement du script en peu de temps même si vous n'avez pas utilisé le script depuis longtemps.
3 variables
Dans d'autres langages de programmation, vous devez utiliser des variables. En programmation shell, toutes les variables sont composées de chaînes et vous n'avez pas besoin de déclarer de variables. Pour attribuer une valeur à une variable, vous pouvez écrire :
#!/bin/sh
#Attribuer une valeur à une variable :
a="bonjour tout le monde"
# Imprimez maintenant le contenu de la variable a :
echo "A est :"
echo $a
Parfois, les noms de variables sont facilement confondus avec d'autres texte, tel que :
num=2
echo « ceci est le $numnd »
Ceci n'imprime pas « ceci est le 2ème », mais imprime uniquement « c'est le " , car le shell recherchera la valeur de la variable numnd, mais cette variable n'a aucune valeur. Vous pouvez utiliser des accolades pour indiquer au shell que ce que nous voulons imprimer est la variable num :
num=2
echo "this is the ${num}nd"
Ceci affichera : ceci est la 2ème
4 Variable d'environnement
Les variables traitées par le mot-clé export sont appelées variables d'environnement. Nous ne discuterons pas des variables d'environnement car elles ne sont généralement utilisées que dans les scripts de connexion.
5 Commandes Shell et contrôle de processus
Trois types de commandes peuvent être utilisés dans les scripts shell :
1) Commandes Unix :
Bien que dans les scripts shell Vous pouvez utiliser n'importe quelle commande Unix, mais il existe des commandes relativement plus couramment utilisées. Ces commandes sont généralement utilisées pour les opérations sur les fichiers et le texte.
Syntaxe et fonctions de commande communes
echo « some text » : imprimer le contenu du texte à l'écran
ls : liste de fichiers
wc –l fichier wc -w file wc -c file : Comptez le nombre de lignes dans le fichier ; comptez le nombre de mots dans le fichier ; comptez le nombre de caractères dans le fichier
cp sourcefile destfile : copiez le fichier
mv oldname newname : répéter Nommez le fichier ou déplacez le fichier
rm file : supprimez le fichier
grep 'pattern' file : recherchez une chaîne dans le fichier telle que : grep 'searchstring' file.txt
cut -b colnum file : Spécifiez la plage du contenu du fichier à afficher et envoyez-le vers le périphérique de sortie standard. Par exemple : affichez les 5e à 9e caractères de chaque ligne coupée -. b5-9 file.txt. Ne le confondez pas avec la commande cat
Ce sont deux commandes complètement différentes
cat file.txt : Sortez le contenu du fichier sur le périphérique de sortie standard (écran). )
file somefile : obtenez le type de fichier
read var : invite l'utilisateur à saisir et attribue l'entrée à la variable
sort file.txt : trie les lignes dans le fichier file.txt
uniq : supprimer le fichier texte Les lignes en double qui apparaissent, telles que : sort file.txt | uniq
expr : effectuer des opérations mathématiques Exemple : ajouter 2 et 3 est expr 2 « + » 3
find : rechercher des fichiers tels que : basé sur la recherche du nom de fichier find .
tee : Sortie des données vers le périphérique de sortie standard (écran) et le fichier Par exemple : somecommand tee outfile
basename file : Renvoie le nom du fichier sans chemin. renverra tux
dirname file : Renvoie le chemin du fichier Par exemple : dirname /bin/tux renverra /bin
head file : Imprime les premières lignes du fichier texte <.>
tail file : Imprimer le fichier texte Les dernières lignes sed : Sed est un programme de recherche et de remplacement de base. Vous pouvez lire le texte à partir d'une entrée standard (telle qu'un tube de commande) et afficher les résultats vers la sortie standard (écran). Cette commande utilise des expressions régulières (voir référence) pour rechercher. A ne pas confondre avec les caractères génériques dans le shell. Par exemple : remplacez linuxfocus par LinuxFocus : cat text.file | sed ’s/linuxfocus/LinuxFocus/' >newtext.fileawk : awk est utilisé pour extraire des champs de fichiers texte. Par défaut, le séparateur de champ est un espace. Vous pouvez utiliser -F pour spécifier d'autres séparateurs. cat file.txt | awk -F, '{print $1 ", " $3}'Ici, nous utilisons comme séparateur de champ pour imprimer les premier et troisième champs en même temps. Si le contenu du fichier est le suivant : Adam Bor, 34 ans, IndiaKerryMiller, 22 ans, USA, le résultat de la commande est : Adam Bor, IndiaKerry Miller, USA2) Concept : pipeline, redirection et backtick Ce ne sont pas des commandes système, mais elles sont vraiment importantes. Pipe (|) prend la sortie d'une commande comme entrée d'une autre commande. grep "hello" file.txt | wc -l Recherchez les lignes contenant "hello" dans file.txt et comptez le nombre de lignes. Ici, la sortie de la commande grep est utilisée comme entrée de la commande wc. Bien entendu, vous pouvez utiliser plusieurs commandes. Redirection : Afficher les résultats de la commande dans un fichier au lieu de la sortie standard (écran). > Écrivez dans le fichier et écrasez l'ancien fichier >> Ajouter à la fin du fichier, en conservant l'ancien contenu du fichier. Barre oblique inverse Utilisez la barre oblique inverse pour utiliser la sortie d'une commande comme paramètre de ligne de commande d'une autre commande. Commande : find .mtime -1 -type f -print est utilisée pour rechercher des modifications au cours des dernières 24 heures (-mtime -2 signifie les 48 dernières heures). heures) fichiers transmis. Si vous souhaitez regrouper tous les fichiers trouvés dans un package, vous pouvez utiliser le script Linux suivant : #!/bin/sh # Les ticks sont des backticks (`) et non des guillemets normaux ( '): tar -zcvf lastmod.tar.gz `find -mtime -1 -type f -print`3) Contrôle de processus 1.if l'expression « if » exécute la partie après puis si la condition est vraie : if ….; then …. elif ….; then …. else …. fi Dans la plupart des cas, vous pouvez utiliser des commandes de test pour tester les conditions test. Par exemple, vous pouvez comparer des chaînes, déterminer si un fichier existe et est lisible, etc... Habituellement "[ ]" est utilisé pour représenter des tests conditionnels. Notez que les espaces ici sont importants. Assurez-vous qu'il y a des espaces entre les crochets. [ -f "somefile" ] : Détermine s'il s'agit d'un fichier [ -x "/bin/ls" ] : Détermine si /bin/ls existe et dispose d'autorisations exécutables [ -n "$var" ] : Déterminer si la variable $var a une valeur [ "$a" = "$b" ] : Déterminer si $a et $b sont égaux Exécutez man test pour afficher tous les types qui peuvent être comparés et jugés par des expressions de test. Exécutez directement le script suivant : #!/bin/sh if [ "$SHELL" = "/bin/bash" ]; 🎜 >echo "votre shell de connexion est le bash (bourne encore un shell)" else echo "votre shell de connexion n'est pas bash mais $SHELL" fiLa variable $SHELL contient le nom du shell de connexion, que nous avons comparé avec /bin/bash. Opérateurs de raccourci Les amis qui connaissent le langage C peuvent aimer l'expression suivante : [ -f "/etc/shadow" ] && echo "Cet ordinateur utilise shadow mots de passe » Ici && est un opérateur de raccourci Si l'expression de gauche est vraie, l'instruction de droite sera exécutée. Vous pouvez également y penser comme l'opération ET dans les opérations logiques. L'exemple ci-dessus indique que si le fichier /etc/shadow existe, "Cet ordinateur utilise des mots de passe fantômes" sera imprimé. La même opération OU (||) est également disponible dans la programmation shell. Voici un exemple : #!/bin/sh mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]' '{ echo « Impossible de lire $mailfolder » ; exit 1 ; } echo « $mailfolder contient des messages provenant de : » grep « ^From » $mailfolder Le script en premier Déterminez si le dossier de messagerie est lisible. Si lisible, imprimez la ligne « De » dans le fichier. S'il n'est pas lisible, l'opération OR prend effet et le script se termine après l'impression d'un message d'erreur. Il y a un problème ici, c'est-à-dire que nous devons avoir deux commandes : ◆Imprimer le message d'erreur ◆Quitter le programme
Nous utilisons des accolades pour regrouper deux commandes en une seule commande sous la forme d'une fonction anonyme. Les fonctions générales sont mentionnées ci-dessous.
Sans les opérateurs AND et ou, nous pouvons également utiliser des expressions if pour faire n'importe quoi, mais il est beaucoup plus pratique d'utiliser les opérateurs AND ou.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!