Durant ma première année de DUT informatique, j'avais commencé à réaliser un petit pense-bête pour se souvenir rapidement des commandes UNIX de base (les plus utilisées) et de la syntaxe des scripts Shell. Ces petit scripts permettent d'automatiser des actions, parfois fastidieuses manuellement sous un environnement Unix. Je viens de le retrouver dans mes archives, donc je me permet de le partager avec vous, cela peut toujours servir...
Commandes de base UNIX
Commande | Description |
---|---|
man commande | Affiche le manuel utilisateur de la commande |
cat fichier | Affiche le contenu du fichier |
tail -5 fichier | Affiche les cinq dernières lignes du fichier |
head -5 fichier | Affiche les cinq premières lignes du fichier |
file fichier | Affiche le type du fichier |
ls -l [répertoire] (-a : inclu les fichiers cachés) | Liste le contenu d'un répertoire |
tr -d " " < fichier | Afficher le fichier en supprimant le caractère espace |
touch fichier | Création d'un fichier vierge |
mkdir repertoire | Création d'un répertoire vide |
cp fichier_source fichier_destination cp -R /rép_source /rép_destination |
Copie d'un fichier et copie d'un répertoire entier |
mv fichier nouveau_chemin/fichier mv repertoire nouveau_chemin/ |
Déplacement d'un fichier et copie d'un répertoire entier |
mv fichier nouveau_nom | Renommer un fichier ou un répertoire |
rm (-r) fichier rmdir repertoire |
Supprimer un fichier ou un répertoire |
cmp fichier fichier2 diff fichier fichier2 |
Comparer deux fichiers |
sort fichier / sort -n fichier / sort -u fichier | Trier un fichier : alphabétiquement ou numériquement et sans doublons |
tar -vcf nom_archive.tar nom_dossier_à_archiver | Archiver un dossier/répertoire |
tar -vxf mon_archive.tar | Désarchiver une archive |
gzip archive_tar.tar | Compression d'une archive tar |
wc -c fichier (-w words, -l lines) | Compter les caractères d'un fichier |
find /chemin -name "nom" | Rechercher un fichier |
who / finger | Qui est connecté ? |
whoami / pwd | Qui suis-je ? Ou suis-je ? |
top / ps / htop | Activité du système – Listing des processus |
uniq | Supprime les doublons |
password username | Modification du mot de passe |
uname -a | Afficher les informations du système (noyau, version) |
grep "texte" | Recherche une chaine dans un fichier et affiche les lignes contenant cette chaine. |
cut -d" " -f1,2 | Coupe les champs 1 et 2 séparé par un espace. |
wget URL | Téléchargement local de la page web |
chown username /chemin/repertoire | Changer le propriètaire d'un répertoire |
chmod ugo+-=rwx fichier | Changer les droits d'un fichier |
kill -signal PID pkill nom_processus |
Terminer ou tuer un processus |
ssh login@serveur_host scp -c /chemin/fichier login@serveur:/chemin/destination/ |
Connexion à une serveur distant (SSH) et copie d'un fichier local sur le serveur distant |
commande > fichier : dirige la sortie vers le fichier (avec écrasement) commande >> fichier : idem sauf le résultat est rajouté à la suite du fichier. commande < fichier : dirige l'entrée standard vers le fichier commande 2> fichier : la sortie d'erreur est le fichier commande 2>&1 : la sortie d'erreur devient entrée standard commande1 | commande2 : redirige la sortie de la commande 1 vers l'entrée de la commande 2 (pipeline). |
Les méchanismes d'entrées-sorties |
Introduction au Scripting-Shell
Code | Description |
---|---|
#!/bin/sh (ou #!/bin/bash) | En début de script : Shebang, celui-ci varie selon l'interpréteur. |
# votre_commentaire | Ajouter des commentaires dans le script |
read variable | Demander une saisie à l'utilisateur |
variable=50 variable2=`cat fichier` echo $variable (résultat à l'écran : 50) |
Création et lecture d'une variable |
$# : nombre d'arguments $0 : nom du fichier script $$ : PID du processus $i ($1 et +) : affiche la valeur de l'argument i $* : renvoie tout les arguments shift n : décale les arguments de n rang. |
Passage et utilisation d'arguments dans le script |
break / continue / exit valeur | Sort de la boucle - Passe à l'itération suivante - Termine le script et renvoie la valeur. |
while [ condition ] do commandes done |
La boucle : while |
for var in `cat fichiers` do commandes done |
La boucle : for |
case var in valeur1) instruction ;; valeur2) instruction ;; *) instruction par défaut ;; esac |
La conditionnelle case-esac (ressemble au switch dans les langages POO) |
if [ condition ] then commande1 elif [ condition2 ] commande2 else commande par défaut fi |
Mise en place d'une conditionnelle if-else |
$chaine1 = $chaine2 (ou ==) $chaine1 != $chaine2 -z $chaine1 : teste si la chaine est vide -n $chaine1 : teste si la chaine est non-vide |
Principaux tests sur les chaines de caractères |
$num1 -eq $num2 : Si les nombres sont égaux. $num1 -ne $num2: Si les nombres sont différents. $num1 -lt $num2 : Si num1 est inférieur ( < ) à num2. $num1 -le $num2 : Si num1 est inférieur ou égal ( <= ) à num2. $num1 -gt $num2 : Si num1 est supérieur ( > ) à num2 $num1 -ge $num2 : Si num1 est supérieur ou égal ( >= ) à num2 |
Principaux tests sur les valeurs numériques |
-a fichier : le fichier existe -d fichier : est un répertoire -f fichier : est un fichier ordinaire |
Principaux tests sur les fichiers |
[ condition1 ] && [ condition2 ] [ condition1 ] || [ condition2 ] [ ! condition1 ] : inversement de la condition |
Les options des tests : ET - OU - NON |
sh script.sh [args] : avec l'interpréteur ./script.sh [args] : en rendant le script exécutable source script.sh [args] |
3 facons pour lancer son script |
Plus d'informations sur l'écriture de scripts-shells : Ubuntu-fr ou Petit tutorial SdZ...
peb a écrit : le 28/12/2012 à 4:46pm
Slt,
il manque $? pour indiquer le retour d'une commande.
Sinon, sympa.
Bye
Matux a écrit : le 23/04/2013 à 4:16pm
Merci pour ce tuto
toto a écrit : le 22/07/2014 à 4:49pm
Et $@ ...
Thank you so much for this aretcli, it saved me time! a écrit : le 14/05/2016 à 10:42pm
Thank you so much for this aretcli, it saved me time!