Opérations Shell communes et pratiques
1. Afficher la prise en charge du shell système
# cat /etc/shells
2. Afficher le shell par défaut des systèmes d'exploitation courants
2.1 échantillon1
# echo $SHELL
2.2 échantillon2
# grep root /etc/passwd
3. Pratique pour les utilisateurs habitués à vi / emacs à utiliser vim
# echo "alias vi='vim'" >> /etc/profile
# source /etc/profile
4. La déclaration de la première ligne du script Shell
#!/bin/bash
La première ligne du script shell indiquera quel programme (interpréteur) exécute le contenu du script et l'emplacement de l'interpréteur correspondant. Si ce n'est pas la première ligne en haut, c'est la ligne de commentaire du script.
Si le fichier de script n'est pas #!
cette ligne, alors il utilisera par défaut l'implémentation de Shell pour expliquer ce script avec la variable d'environnement actuelle (c'est-à-dire, la variable d'environnement $ SHELL)
5. La différence entre bash et sh
[root@VM_153_220_centos ~]# ll /bin/sh
lrwxrwxrwx 1 root root 4 Sep 21 21:29 /bin/sh -> bash
[root@VM_153_220_centos ~]# ll /bin/bash
-rwxr-xr-x 1 root root 964544 Apr 11 2018 /bin/bash
Le début de bash était différent de sh, qui comprenait également les fonctionnalités de csh et ksh. sh
Lien souple bash, le prochain nombre de partages, le début du script utilisé dans le combat #!/bin/bash
et #!/bin/sh
il n'y a pas de différence, mais un libellé plus standardisé est utilisé au début du script#!/bin/bash
Par exemple, la déclaration au début de certains scripts intégrés sous Linux
[root@VM_153_220_centos ~]# head -1 /etc/init.d/mysql
#!/bin/sh
[root@VM_153_220_centos ~]# head -1 /bin/cd
#!/bin/sh
[root@VM_153_220_centos ~]# head -1 /etc/init.d/network
#! /bin/bash
6. Vérifiez la version bash du système
[root@VM_153_220_centos ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@VM_153_220_centos ~]# bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
7. Vérifiez si le système présente des vulnérabilités
# env x='() { :;}; echo be careful' bash -c "echo this is a test"
this is a test
Si les deux lignes suivantes sont renvoyées, cela signifie mettre à jour bash dès que possible, car l'ancienne version de bash comporte de nombreuses vulnérabilités
be careful
this is a test
8. Mettre à niveau la méthode bash
# yum -y update bash
# rpm -qa bash
bash-4.2.46-30.el7.x86_64
9. Le début des scripts communs
#!/bin/sh
#!/bin/bash
#!/usr/bin/awk
#!/bin/sed
#!/usr/bin/tcl
#!/usr/bin/expect
#!/usr/bin/perl
#!/usr/bin/env python
Les scripts dans différentes langues doivent généralement être ajoutés en conséquence 开头解释器语言标志
. Parce que le Shell par défaut sous CentOS et Red Hat Linux est bash. Par conséquent, lors de l'écriture du script Shell, sans la #!/bin/bash
volonté de bash expliqué.
Si la première ligne du script ne spécifie pas d'interpréteur, l'interpréteur correspondant doit être utilisé pour exécuter le script. Ce n'est qu'ainsi que le script peut s'exécuter normalement. Par exemple:
- Script Python qui utilise l'
python test.py
exécutiontest.py
- Les scripts shell utilisent
bash test.sh
pour effectuertest.sh
- …
10. Plusieurs façons d'exécuter un script shell
- bash nom-script 或 sh nom-script
- chemin / nom-script ou ./ nom-script (fichier exécutable)
- nom-script source 或 nom-script
- sh <nom-script 或 cat nom-script | sh