Application de script Shell
informations de base de sehll
Le rôle du shell
(1) Le rôle de l'interpréteur de commandes shell "traducteur"
- Entre le noyau système et l'utilisateur, chargé d'expliquer la ligne de commande
(2) le shell de connexion de l'utilisateur - Le programme shell utilisé par défaut après la connexion,
一般为 /bin/bash
- Les commandes internes et l'environnement d'exploitation des différents shells seront différents
(3) [root @ localhost ~] # cat / etc / shells (affiche tous les shells)
Ecrire le premier script shell
(1) Écrire le code de script
-
Utiliser l'éditeur vi ou vim
-
Une commande Linux par ligne, écrite dans l'ordre d'exécution
[root @ localhost ~] # vi first.sh(一般shell脚本的后缀都是.sh)
écrit(推荐使用vim编辑器,因为会变颜色,写的时候写错了不会变颜色)
(vous pouvez utiliser yum -y install vim pour installer si vous ne l'avez pas, généralement les systèmes Centos avec une interface graphique ayez-le, la ligne de commande Vous devez l'installer vous-même)
(2) Accordez des autorisations exécutables -
Avoir une propriété pour rendre le script exécutable
(没有可执行的权限就无法运行脚本)
[root @ localhost ~] # chmod + x first.sh (en utilisant chmod ajouté à l'autorisation d'exécution du script)
(3) exécution de la
méthode du fichier de script : ./ chemin du fichier de script(使用./时最好就直接进入脚本所在目录执行即可)
Méthode deux: script sh chemin du fichier
Méthode 3: chemin du fichier du script source -
(使用./时时必须要求有x可执行权限的使用sh或source可以不用,但是还是要养成习惯给一个x权限)
Méthode d' exécution du script : [root @ localhost ~] # ./first.sh
Méthode deux: [root @ localhost ~] # sh /first.sh
Méthode trois: [the root @ localhost ~] # Source /first.sh
(. 4 ) Une composition de script plus complète (généralement écrite comme ceci) -
La première ligne de l'instruction de script déclare l'environnement d'exécution du script
-
La ligne avec les informations de commentaire commençant par # est une ligne de commentaire, que faites-vous habituellement lorsque vous écrivez ce script, etc.
-
Instruction exécutable
Exemple: [root @ localhost ~] # vi /first.sh
#! / Bin / bash # Ceci(脚本声明,在/bin/bash下运行)
est mon premier script shell(注释信息)
cd / boot(下面都是可执行语句)
echo "Le répertoire courant se trouve:"
pwd
echo "Vml Les fichiers au début include: "(输出友好的提示信息)
ls -lh vml *(ls -lh 长格式更加人性化方式显示出以vml开头的文件)
[root @ localhost ~] #chmod + x first.sh (ajouter des autorisations exécutables)
[root @ localhost ~] # ./first.sh (exécuter le script)
Redirection et opération de canalisation
(1) Matériel matériel interactif
- Entrée standard: recevoir les données d'entrée utilisateur de l'appareil
- Sortie standard: sortie des données vers l'utilisateur via l'appareil
- Erreur standard: rapporter les informations sur l'erreur d'exécution via ce périphérique
[type] [fichier de périphérique] [numéro de description du fichier] [périphérique par défaut]
entrée standard; / dev / stdin; 0;
sortie standard du clavier ; / dev / stdout; 1;
erreur standard d' affichage Sortie; / dev / stderr; 2;
opération de redirection d' affichage (2)
[type] [opérateur] [objectif]
rediriger l'entrée; <; lire les données à partir du fichier spécifié au lieu de
rediriger la sortie depuis l'entrée clavier ;>; la sortie保存
vers la sortie spécifiée fichier(会覆盖原文件)
pour rediriger la sortie; >>; la sortie追加
vers la(不会覆盖原文件默认加到指定文件的末尾)
sortie d'erreur standard du fichier spécifié ; 2>; les informations d'erreur保存
vers la(会覆盖原文件)
sortie d'erreur standard du fichier spécifié ; 2 >>; les informations d'erreur追加
vers la(不会覆盖原文件默认加到指定文件的末尾)
sortie mixte de fichier spécifiée ; &>; enregistrer le contenu de la sortie standard et de l'erreur standard dans le même fichier(就是不管是对的还是错的只要是执行问前一个命令后的所有结果都保存到指定文件,会覆盖原文件)
(un> est d'écraser deux >> est d'ajouter)
Exemple de redirection:
- uname -p> kernel.txt
chat kernel.txt
uname -p
- uname -r >> kernel.txt
chat kernel.txt
- echo "123456"> pass.txt
(利用重定向去设置用户密码)
chat pass.txt
useradd tom
passwd --stdin tom <pass.txt
- tar jcf /nonedir/etc.tgz / etc
tar jcf /nonedir/etc.tgz / etc 2> error.log (entrez les informations d'erreur dans le fichier error.log)
erreur de chat.log
Symbole de tuyau "|"
- Sortie du résultat de la commande à gauche comme cible de traitement de la commande à droite
- Format: cmd1 | cmd2 |… | cmdn
(cmd执行的命令,可以使用管道符|一直执行)
[root @ localhost ~] # grep "bash $" / etc / passwd
[root @ localhost ~] # grep "bash $" / etc / passwd | awk -F: '{print $ 1, $ 7}' (利用管道符和awk行处理器筛选出数据中的第一个和第七个字段 -F是用什么分割,这里是使用的是 :分割的)
Exemple: Utilisez le caractère pipe et le processeur de ligne awk pour extraire l'adresse mac pour / monter l'utilisation
- df -hT | grep “/ $” | awk '{print $ 6}' (l'utilisation du montage avec / se terminant)
- ip a | grep "ff: ff: ff: ff: ff: ff $" | awk '[print $ 2}' (extraire l'adresse mac via grep, awk)