29/05/2012 4 avis

[MEMO] Commandes UNIX et Shell-Scripting

[MEMO] Commandes UNIX et Shell-Scripting

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

CommandeDescription
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

CodeDescription
#!/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...

Vos réactions 4 avis

Comment #1

peb a écrit : le 28/12/2012 à 4:46pm

Slt,
il manque $? pour indiquer le retour d'une commande.
Sinon, sympa.

Bye

Comment #1

Matux a écrit : le 23/04/2013 à 4:16pm

Merci pour ce tuto

Comment #1

toto a écrit : le 22/07/2014 à 4:49pm

Et $@ ...

Comment #1

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!