Table des matières
<texit info> author=D. Pellier, D. Janiszek, J. Mauclair title=Memento Unix v1.0 </texit>
Memento Unix
<texit> \newpage </texit> Tout système Unix (Linux, BSD/Mac OS X, System V…) foisonne de commandes. Sans prétendre à l'exhaustivité, nous espérons ici résumer celles qui vous sont à la fois les plus utiles au quotidien et les plus génériques possibles. Les commandes spécifiques à un Unix particulier sont précisées, nous fournissons également le cas échéant les différences entre les shells Bourn/Korn sh bash zsh ksh et les C shells csh et tsh.
Aide
Obtenir de l'aide sur un sujet
$ man [section] sujet
<texit> \vspace{-10mm} </texit>
Lister les pages man parlant d'un sujet
$ man -k sujet $ apropos sujet
<texit> \vspace{-10mm} </texit>
Afficher la page d'un manuel contenue dans le fichier pageman.X
$ groff - Tascii -man pageman.X | less
<texit> \vspace{-10mm} </texit>
Obtenir de l'aide sur un sujet (page info)
$ info sujet
<texit> \vspace{-5mm} </texit>
Les pages info sont presque exclusivement utilisées par les programmes de la FSF (Free Software Foundation) : qcc, ar, nm, objdump, ranlib, ld, libtool, autoconf, automake… Ils sont aussi dotés de pages man qui sont souvent obsolètes.
Référence des sections du man
- commandes
- appels système
- appels de bibliothèques
- interface noyau et drivers
- fichiers de configuration
- jeux
- standards
- commandes d'administration
- documentation du noyau
Confort et shells
Pour identifier l'interpréteur de commandes actif
$ echo $SHELL
<texit> \vspace{-10mm} </texit>
Pour changer d'interpréteur
$ chsh
<texit> \vspace{-10mm} </texit>
Les différents shells
Shell | Commentaires | |
---|---|---|
/bin/sh | Le shell POSIX, anciennement Bourne shell. Peu tourné vers l'utilisation interactive, il est le seul à être standardisé. À préférer pour les scripts. Attention: sur les Unix tels que Linux ou Mac OS X, /bin/sh est un lien vers /bin/bash . | |
/bin/ksh | Très répendu, le Korn shell est un Bourne shell amélioré pour l'utilisation interactive. | |
/bin/csh | Le C-shell est un shell utilisant une syntaxe proche du langage C. | |
bash | Shell standard sous Linux, le Bourne-again shell est un Bourne shell très amélioré au niveau de l'utilisation interactive. | |
tcsh | Un C-shell amélioré. | |
zsh | Shell peu répandu mais empruntant à bash et tcsh pour pousser plus loin les fonctionnalités et l'ergonomie interactive. |
Attention: Sur certain Unix, lorsque l'on configure pour root un shell qui n'est pas sur la partition racine, on rend le monde mono-utilisateur inutilisable.
Raccourcis clavier
Ils sont disponibles sous bash, csh et tcsh par défaut, mais il ne le sont pas sous sh. Sous ksh, il faut activer ces raccourcis clavier avec
$ set -o emacs
<texit> \vspace{-5mm} </texit>
Remarque: Les touches fléchées permettent également de déplacer le curseur et de naviguer entre les commandes précédentes et suivantes si le terminal est bien configuré.
Raccourcis | Commentaires | |
---|---|---|
Ctrl-P | Commande précédente | |
Ctrl-N | Commande suivante | |
Ctrl-A | Début de ligne | |
Ctrl-E | Fin de ligne | |
Ctrl-K | Efface la ligne à partir du curseur | |
Ctrl-U | Efface la ligne jusqu'au curseur en bash ou toute la ligne csh, tcsh et ksh. | |
Ctrl-B | Déplace le curseur vers le début de la ligne | |
Ctrl-F | Déplace le curseur vers la fin de la ligne |
Les variables d'environnement
Le contenu entre (“ ”) est interprété par le shell, le contenu par apostrophes (' ') ne l'est pas. Dans tous les cas, si l'élément considéré ne contient pas de caractère spéciaux, guillemets et apostrophes sont facultatifs.
Actions | Commandes | |
---|---|---|
Afficher une variable VAR | echo $VAR | |
Affiche toutes les variables | set | |
Positionne la variable VAR à la valeur val | VAR='val' ; export VAR sous sh — export VAR='val ' sous bash, sh et ksh | |
Positionne la variable d'environnement VAR à la valeur val | set VAR='val ' sous csh | |
Définit une variables pour une commande commande | VAR='val' commande |
Variables fréquemment utilisées
Variables | Commentaires | |
---|---|---|
SHELL | Nom de l'interpréteur de commandes | |
PATH | Chemin de recherche des exécutables | |
LD_LIBRARY_PATH | Chemin de recherche des bibliothèques (sauf sous MacOs X “DYLD_LIBRARY_PATH ”) | |
MANPATH | Chemin de recherche des pages de man | |
HOME | Répertoire maison | |
LANG | Localisation (ex : fr_FR.ISO8859-1 ) | |
LC_CTYPE | Localisation de la classification des caractères et de la casse | |
LC_ALL | Écrase les définitions d'autres paramètres régionaux LANG , LC_.. | |
DISPLAY | Serveur X, i.e., graphique, vers lequel rediriger l'affichage, e.g., DISPLAY=0 pour local | |
LESSCHARSET | Jeu de caractères pour la commande less . Valeurs possibles: ascii, latin1, utf-8, dos, ebcdic, IBM-1047, koi8-r, next | |
IFS | Séparateur de champs ou de mots lors de l'interprétation d'une chaîne (sh, ksh, bash). NB: les espaces (tabulations, retour chariot, caractère espace) sont gérés différemment des autres caractères. Une série de 3 tabulations sera interprétée comme un seul séparateur tandis que '::: ' sera interprété comme trois séparateurs de champs. | |
LOGNAME | Login de l'utilisateur | |
PWD | Le répertoire courant | |
PS1 | Invite de l'interpréteur de commande (bash) — \u usager — \h nom de la manchine — \W dernier niveau du répertoire courant — \w répertoire courant — \A heure au format HH:MM (24heures) — \$ symbole $. NB: Valable aussi pour sh et ksh mais sans les séquences d'échappement. | |
prompt | Invite de l'interpréteur de comande csh — %n usager — %m nom de la machine — %c répertoire courant — %cX X dernier niveau du répertoire courant — %T heure au format HH:MM (24heures) | |
EDITOR | Éditeur de texte par défaut |
Naviguer dans les répertoires
Commandes | Commentaires | |
---|---|---|
pwd | Affiche le répertoire courant | |
cd rep | Déplacement dans le répertoire rep | |
cd | Déplacement dans le répertoire home , équivalent à cd ~ | |
cd .. | Déplacement dans le répertoire parent | |
ls [rep] | Liste les fichiers du répertoire rep (si un répertoire n'est pas spécifié, les fichiers du répertoire courant sont listés | |
ls -a [rep] | Liste aussi les fichiers cachés | |
ls -l [rep] | Liste les fichiers avec leur droits d'accès |
Gérer les droits d'accès
Conventions pour les droit d'accès
Le 1er caractère correspond au type d'objet (fichier, répertoire, etc.). Les suivants se lisent par groupes de 3 et définissent respectivement les droits accordés:
- au propriétaire
- au groupe propriétaire du fichier et
- aux autres usagers.
Types d'objets
Symboles | Types | |
---|---|---|
- | fichier | |
d | répertoire | |
l | lien symbolique | |
s | socket | |
p | FIFO | |
c | device (mode caractère) | |
b | device (mode bloc) |
Types de droits accordés
Symboles | Droits accordés | |
---|---|---|
- | pas d'accès | |
r | lecture | |
w | écriture | |
x | exécution (fichier), parcourir (répertoire) | |
s | bit set-UID (utilisateur), bit set-GID (groupe) | |
t | sticky bit: impossible d'effacer les fichiers des autres | |
S | bit set-UID sans droit en exécution | |
T | sticky bit sans droit de parcourir |
<texit> \newpage </texit>
Changer le propriétaire d'un fichier
$ chown usager fichier
<texit> \vspace{-10mm} </texit>
Changer le groupe d'un fichier
$ chgrp groupe fichier
<texit> \vspace{-10mm} </texit>
Changer les droits d'accès d'un fichier
$ chmod mode fichier
<texit> \vspace{-7mm} </texit>
ou mode est:
- soit sous la forme groupe(s) + droit(s) (ajout de droits)
- soit sous la forme groupe(s) - droit(s) (suppression de droits) avec groupe : usager
u
, groupeg
et autreso
. - soit sous la forme octale
SUGO
ouS = 1
(sticky-bit) ou 2 (set-GID) ou 4 (set-UID) etU
,G
etO
peuvent chacun prendre pour valeur 1 (exécutable) ou 2 ( droit en écriture) ou 4 (droit en lecture). On additionne les modes par chiffre pour obtenir un mode de quatre chiffre.
Exemples: changer les droits sous la forme groupe + droit
- Permet à tous de lister et de parcourir un répertoire
$ chmod ugo+rx repertoire
<texit> \vspace{-7mm} </texit>
- Retire tous les droits aux utilisateurs autres que le propriétaire du fichier.
$ chmod go-rwx fichier
<texit> \vspace{-7mm} </texit>
Exemples: changer les droits sous la forme octal SUGO
- L'utilisateur courant et le groupe peuvent parcourir le répertoire et le lire
$ chmod 1750 repertoire
<texit> \vspace{-7mm} </texit>
- Le fichier est accessible en lecture et en écriture au groupe et à l'utilisateur propriétaire du fichier
$ chmod 660 fichier
<texit> \vspace{-7mm} </texit>
Manipuler les fichiers
Commandes | Commentaires | |
---|---|---|
mv source cible | Déplace et/ou renomme un fichier | |
cp source cible | Copie un fichier | |
cp -R source cible | Copie un répertoire. Attention: les droits d'accès peuvent être perdus. Pour éviter cela utiliser l'option -p ou utiliser tar | |
ln source lien | Lien fort de source vers lien | |
ln -s source lien | Lien symbolique de source vers lien | |
mkdir répertoire | Crée un répertoire | |
rmdir | Supprime un répertoire vide | |
du -ks répertoire | Affiche la taille du répertoire en Ko | |
rm fichier | Supprime un fichier (Irréversible!) | |
rm -f fichier | Supprime un fichier protégé en écriture | |
rm -R répertoire | Supprime un répertoire | |
touch fichier | Met à jour la date de modification d'un fichier |
Rechercher un fichier
Commandes | Commentaires | |
---|---|---|
locate motif | Recherche des fichiers dont le nom correspond au motif | |
updatedb | Met à jour la base de données de locate (linux) | |
/usr/libexec/locate.updatedb | Met à jour la base de données de locate (BSD, MacOS X) | |
find chemin options | Recherche les fichiers correspondant aux options dans chemin |
Principales options de la commande ''find''
- Recherche à partir du répertoire courant les fichiers dans le nom respectif le motif
$ find . -name motif
<texit> \vspace{-7mm} </texit>
- Recherche à partir du répertoire courant les fichiers du type spécifié :
f
pour les fichiers réguliers,d
pour les répertoires etl
pour les liens symboliques
$ find . -type type
<texit> \vspace{-7mm} </texit>
- Exécute la commande
cmd
sur tous les fichiers trouvés. L'argument{}
désigne le nom du fichier trouvé parfind
$ find . -exec cmd \;
<texit> \vspace{-7mm} </texit>
- Affiche les fichiers trouvés (System V uniquement, implicite pour linux, MacOs X et BSD)
$ find . -print
<texit> \vspace{-7mm} </texit>
Exemples
- Recherche dans le répertoire courant tous les fichiers dont l'extension est
html
$ find . -name '*.html'
<texit> \vspace{-7mm} </texit>
- Supprime à partir du répertoire courant tous les fichiers dont l'extension est
png
$ find . -name '*.png' -exec rm {} \;
<texit> \vspace{-7mm} </texit>
Redirection des flux
Commandes | Commentaires | |
---|---|---|
cmd > fichier | Redirige la sortie standard de la commande cmd dans le fichier spécifié | |
cmd > > fichier | Écrit à la fin du fichier au lieu de l'écraser | |
cmd < fichier | Utilise le fichier spécifié comme entrée de la commande cmd | |
cmd1 | cmd2 | Utilise la sortie de la commande cmd1 comme entrée de la commande cmd2 | |
cmd < < “chaîne” | Utilise l'entrée standard pour la commande cmd jusqu'à que la chaîne spécifiée soit rencontrée | |
cmd 2>&1 > fichier | Redirige la sortie standard et les erreurs dans le fichier spécifié (sh, bash, ksh) | |
cmd >& fichier | Redirige la sortie standard et les erreurs dans le fichier spécifié (csh, tcsh) | |
cmd > fichier1 2> fichier2 | Redirige la sortie standard dans le fichier1 et les erreurs dans le fichier2 (sh, bash, ksh) | |
(cmd > fichier1) >& fichier2 | Redirige la sortie standard dans le fichier1 et les erreurs dans le fichier2 (csh, tcsh) |
Exemple
- Liste tous les fichiers du répertoire courant avec leurs droits d'accès dans le fichier
liste_fichiers
$ ls -al > liste_fichiers
<texit> \vspace{-10mm} </texit>
Comparer et trier des fichiers
- Affiche les différences entres les deux fichiers texte spécifiés
$ diff fichier1 fichier2
<texit> \vspace{-7mm} </texit>
- Affiche les différences entres les deux fichiers spécifiés au format
patch
$ diff -u fichier1 fichier2
<texit> \vspace{-7mm} </texit>
- Compare et affiche un contexte de deux lignes pour chaque différence constatée
$ diff -C 2 fichier1 fichier2
<texit> \vspace{-7mm} </texit>
- Compare deux fichiers binaires spécifiés
$ cmp fichier1 fichier2
<texit> \vspace{-7mm} </texit>
- Compare le premier fichier à partir du 13ème octet et le second fichiers à partir du 17ème
$ cmp fichier1 fichier2 13 17
<texit> \vspace{-7mm} </texit>
- Trie les lignes d'un fichier. Options:
-n
Tri numérique-k n
Tri sur le nième champs de la ligne
$ sort fichier
<texit> \vspace{-7mm} </texit>
- Supprime les doublons de lignes dans un fichier trié (l'option
-c
permet d'afficher le nombre d'occurrences devant chaque ligne)
$ uniq fichier
<texit> \vspace{-7mm} </texit>
Exemples
- Stock dans un fichier
main.patch
les différences entres deux fichiers sources
$ diff -u logiciel2.0/main.c logiciel1.0/main.c > main.patch
<texit> \vspace{-7mm} </texit>
- Affiche les différences entres deux fichiers sources en précisant 2 lignes de contexte
$ diff -C 2 logiciel2.0/main.c logiciel1.0/main.c
<texit> \vspace{-7mm} </texit>
Afficher le contenu de fichiers
Commandes | Commentaires | |
---|---|---|
wc fichier | Compte le nombre de lignes, de mots, d'octets d'un fichier spécifié | |
cat fichier1 fichier2 | Concatène les fichiers spécifiés | |
more fichier | Affiche un fichier page après page: — espace pour passer à la page suivante — entrée pour passer à la ligne suivante — u pour remonter — q pour quitter. | |
less fichier | Affiche un fichier page après page et permet d'y naviguer avec les flèches Page prec et Page Suiv . | |
head -n 3 fichier | Affiche les 3 premières lignes du fichier spécifié | |
tail -n 3 fichier | Affiche les 3 dernières lignes du fichier spécifié | |
tail -f fichier | Affiche la fin du fichier au fur et à mesure qu's'il est rempli | |
echo 'chaîne' > fichier | Crée le fichier avec le nom spécifié contenant la chaîne en argument | |
echo 'chaîne' > > fichier | Crée la chaîne en argument à la fin du fichier après un saut de ligne | |
cat - > fichier « EOF | Écrit ligne à ligne dans in fichier jusqu'à ligne EOF (End of file) |
Exemples d'utilisation
- Affiche le fichier
/etc/resolv.conf
$ cat /etc/resolv.conf
<texit> \vspace{-7mm} </texit>
- Liste tous les fichiers du répertoire courant et les affiche page après page
$ ls -as | more
<texit> \vspace{-7mm} </texit>
- Affiche les 3 premières lignes du fichier
todolist
$ head -n 3 todolist
<texit> \vspace{-7mm} </texit>
- Affiche les 3 dernières ligne du fichier de log
/var/log/message
$ tail -n 3 /var/log/message'
<texit> \vspace{-7mm} </texit>
- Affiche la fin du fichier de log d'erreur du serveur Web apache
/var/log/apache/error.log
au fur et à mesure qu'il est rempli
$ tail -f /var/log/apacheerror.log
<texit> \vspace{-7mm} </texit>
- Écrit la ligne
licorne
dans le fichier/etc/hostname
autrement dit changement le nom réseaux de la machine
$ echo 'licorne' > /etc/hostname
<texit> \vspace{-7mm} </texit>
- Écrit ligne à ligne dans le fichier
list_de_courses-0806.txt
jusqu'à ligne EOF
$ cat - > list_de_courses-0806.txt << "EOF"
<texit> \vspace{-7mm} </texit>
Recherche de chaînes avec grep
La commande grep
recherche un motif dans un ensemble de chemins spécifiés et affiche les lignes correspondantes:
$ grep motif chemins
<texit> \vspace{-7mm} </texit>
- Exemple: recherche tous les fichiers du répertoire “Mail/inbox/” avec un nom contenant la chaîne de caractères “recette de cassoulet”:
$ grep "recette de cassoulet" Mail/inbox/*
<texit> \vspace{-7mm} </texit>
Options | Commentaires | |
---|---|---|
grep -A N | Affiche la ligne et les N lignes suivantes (Linux, BSD, MacOs X) | |
grep -B N | Affiche la ligne et les N lignes précédentes (Linux, BSD, MacOs X) | |
grep -i | Le motif est insensible à la casse | |
grep -P | Le motif est donné comme une expression régulière Perl (Linux, BSD, MacOs X) | |
grep -R | Le motif est recherché récursivement dans les sous-répertoires (Linux, BSD, MacOs X) | |
grep -E | Le motif est une expression régulière étendue (voir ci-dessous) |
Remarque: Lorsque la commande grep -R
n'est pas disponible, on peut effectuer la recherche récursivement une chaîne avec la commande find
:
$ find chemin -exec grep motif {} \; - print
<texit> \vspace{-10mm} </texit>
Les expressions régulières étendues
Elles consistent en des chaînes de caractères modèle auxquelles comparer d'autres chaînes. Dans une expression régulière, certain caractères revêtent un sens particulier:
Caractères | Significations | |
---|---|---|
. | n'importe quel caractère | |
[0-9] | un chiffre | |
[A-Z] | une majuscule entre A et Z | |
[a-z] | une minuscule entre a et z | |
[A-Z0-9] | une majuscule entre A et Z ou un chiffre | |
[a,g,h,i] | l'un des caractère a , g , h ou i |
À ces atomes peuvent être ajoutés des localisateurs:
Localisateurs | Significations | |
---|---|---|
^E | un E en début de ligne | |
toto$ | la chaîne “toto” en fin de ligne |
et des quantifieurs:
Quantifieurs | Significations | |
---|---|---|
E* | un nombre quelconque et éventuellement aucun E | |
[0-9]+ | un nombre quelconque et au moins un chiffre | |
[xyz]? | rien ou une lettre parmi x , y ou z | |
.{3} | 3 caractères n'importe lesquels | |
Z{2,} | au moins 2 caractères Z | |
[A-Z]{,6} | au plus 6 majuscules | |
[a-z]{3,5} | entre 3 et 5 minuscules |
Enfin on peut factoriser des expressions et indiquer des alternatives:
Factorisateurs | Significations | |
---|---|---|
(toto){2} | la chaîne “toto” répétée deux fois | |
(toto | tata)$ | la chaîne ““toto” ou “tata” en fin de ligne |
Le caractère « \ » permet de faire perdre sont sens particulier (« échapper ») à l'un des caractères spéciaux.
Remplacer des chaînes
La commande sed
Remplace l'expression régulière expr
par la chaîne spécifiée dans un fichier
$ sed 's/expr/chaine/' fichier
<texit> \vspace{-7mm} </texit>
Remplace directement l'expression régulière expr
par la chaîne spécifiée dans un fichier et enregistre l'ancien fichier avec le nom fichiersuff
(Linux)
$ sed -i suff 's/expr/chaine/' fichier
<texit> \vspace{-7mm} </texit>
Remplace plusieurs occurrences par ligne
$ sed 's/expr/chaine/g' fichier
<texit> \vspace{-7mm} </texit>
Remplace l'expression régulière expr
par une chaîne: \1
est remplacé par ce qui correspond à la partie de l'expression régulière entre \(
et \)
$ sed 's/\(groupe\)expr/chaine\1/' fichier
<texit> \vspace{-7mm} </texit>
Remarque: Il peut y avoir plusieurs groupes entre parenthèse dans le premier membre qui se substitue à \1 \2… \9
dans le second membre.
Exemple: remplace tous les noms de fichier se terminant par .html
par des noms de fichier se terminant pas .fr.html
$ sed 's/\(.*\).html/\1.fr.html/' fichier
<texit> \vspace{-7mm} </texit>
La commande tr
Remplacement sur le flux d'entrée standard: les a
sont transformé en d
, les b
en e
et les c
en f
.
$ tr 'abc' def'
<texit> \vspace{-7mm} </texit>
Remarque: On peut utiliser des classes de caractères telles que '[A-Z]
'.
Exemples (La conversion de fichier)
- Conversion de fichier LF Unix ⇒ CR MacOS
$ tr '\n' '\r' < in > out
<texit> \vspace{-7mm} </texit>
- Conversion de fichier LF Unix ⇒ CRLF MS-DOS
$ tr '\n' '\r\n' < in > out
<texit> \vspace{-7mm} </texit>
- Conversion majuscules ⇒ minuscule
$ tr '[A-Z]' '[a-z]' < in > out
<texit> \vspace{-7mm} </texit>
Éditer des fichiers
La commande cut
La commande cut
affiche les champs d'un fichier (séparés par des tabulations, index commençant à 1):
x,y
: champsx
ety
x-y
: champs entrex
ety
inclus-d
: délimiteur.
$ cut -f champs fichier
<texit> \vspace{-7mm} </texit>
Exemple: Extrait la deuxième et la cinquième colonne d'un fichier nommé data.csv
(séparation des champs par le point-virgule).
$ cut -f 2,5 -d ';' data.csv
<texit> \vspace{-7mm} </texit>
La commande paste
La commande paste
affiche des lignes contenant la ligne correspondante de chaque fichier séparées par des tabulations:
-d
: délimiteur
$ paste f1 f2 ...
<texit> \vspace{-7mm} </texit>
Exemple: Si les fichiers f1
, f2
et f3
sont des fichiers numériques, affiche des lignes de nombres sous la forme x1:x2:x3
.
$ paste -d ':l' f1 f2 f3
<texit> \vspace{-7mm} </texit>
La commande join
La commande join
permet de fusionner deux fichiers ayant un champ commun (jointure):
-1 champ
: champ de jointure dans le fichier 1-2 champ
: champ de jointure dans le fichier 2
$ joint fichier1 fichier2
<texit> \vspace{-7mm} </texit>
La commande vi
La commande vi
permet d'éditer un fichier. Pour plus d'information vous pouvez consulter le memento Vi.
$ vi fichier
<texit> \vspace{-7mm} </texit>
Vi dispose de deux modes: édition et commande, qui est le mode au lancement. En mode édition, ESC
permet de passer en mode commande. En mode commande:
:w
enregistre:q
quitte:wq
enregistre et quitte:q!
quitte sans enregistrer
La manipulation du curseur s'effecture avec les touches fléchées si le terminal est bien configuré ou avec les touches:
h
pour se diriger à gauchei
pour se diriger en bask
pour se diriger en hautl
pour se diriger à droit
Les commandes d'édition les plus courantes:
x
efface un caractèrer
remplace un caractèredd
coupe la ligne couranteyy
copie la ligne couranteu
annuler3yy
copie 3 lignes à partir de la ligne courantep
colle la dernière ligne coupée ou copier après la ligne courante!
execute une commande externe sur le fichier, e.g.,
: 1,$!tr '[A-Z]' '[a-z]'
<texit> \vspace{-7mm} </texit>
Réseaux
Commandes | Commentaires | |
---|---|---|
ping [-n] machine | Envoie un ping à la machine spécifiée (-n sans DNS) | |
traceroute [-n] machine | Trace la route d'un paquet de données vers machine spécifiée (-n sans DNS) | |
netstate [-n] | Affiche l'usage du réseaux par les processus | |
netstate [-n] -a | Idem avec affiche des processus serveur | |
fuser , fstat , lsof | Liste détaillée de l'usage des fichiers et du réseau | |
ifconfig -a | Affiche la configuration des interfaces réseaux | |
ifconfig interface IP masque | Configure une interface réseau | |
route [-n] show | Affiche la table de routage (-n sans DNS et sans l'option show pour les systèmes Linux) | |
route [-n] add route [gw] passerelle | Ajoute une entrée de routage (gw uniquement pour Linux) | |
route add default [gw] passerelle | Ajoute une entrée de routage par défaut (gw uniquement pour Linux) | |
route delete default | Efface la route par défaut | |
hostname | Affiche et configure le nom réseau de la machine | |
/etc/resolv.conf | Fichier de configuration de la résolution DNS |
Exemple de fichier resolv.conf
nameserver 192.0.2.15 search example.com
<texit> \vspace{-10mm} </texit>
Connexion à une machine distante
La commande SSH
La commande SSH permet de se connecter à distance à une machine et un port spécifiés
$ ssh [-p port] [usager@]machine
<texit> \vspace{-7mm} </texit>
Examples:
- Les connexions au port 2223 de la machine locale seront renvoyées au port 23 de la machine 1, en passant pas un tunnel SSH entre la machine locale et la machine 2. À moins d'utiliser l'option
-g
, seule la machine locale peut utiliser ce renvoi.
$ ssh -L 223:machine1:23 machine2
<texit> \vspace{-7mm} </texit>
- Les connexions au port 23 de la machine 2 seront renvoyées au port 23 de la machine, en passant par un tunnel SSH entre la machine 2 et la machine locale.
$ ssh -R 2223:machine1:23 machine2
<texit> \vspace{-7mm} </texit>
- Redirige l'affichage graphique si autorisé avec un X11Forwarding yes dans
/etc/ssh/sshd_config
pour un serveur OpenSSH.
$ ssh -X [usager@]machine
<texit> \vspace{-7mm} </texit>
La commande scp
La commande scp permet d'effectuer une copie de fichier à distance sécurisée (même principe que la commande cp
).
scp [[usager1]@machine1:]fichier [[usager2]@machine2:]chemin
<texit> \vspace{-7mm} </texit>
Transférer récurcivement un répertoire de manière sécurisée (utiliser l'option -P
pour préciser un port particulier)
scp -R [[usager1]@machine1:]chemin [[usager2]@machine2:]chemin
<texit> \vspace{-7mm} </texit>
La commande sftp
La commande sftp permet le transfert defichier de manière sécurisée en mode interactif
sftp machine
<texit> \vspace{-7mm} </texit>
Archivage, signature, UUencode
La commande gunzip
La commande gunzip
décompacte une archive au format .gz
ou tgz
):
$ gunzip fichier.gz
<texit> \vspace{-10mm} </texit>
La commande unzip
La commande unzip
décompacte une archive au format .zip
:
$ unzip fichier.zip
<texit> \vspace{-10mm} </texit>
La commande uncompress
La commande uncompress
décompacte une archive au format .Z
:
$ uncompress fichier.Z
<texit> \vspace{-10mm} </texit>
La commande zip
La commande zip
compacte au format .zip
:
$ zip archive.zip fichiers
<texit> \vspace{-10mm} </texit>
La commande gzip
La commande gzip
compacte une archive au format .gz
:
$ gzip fichier
<texit> \vspace{-10mm} </texit>
La commande compress
La commande compress
compacte une archive au format .Z
':
$ compress fichier
<texit> \vspace{-10mm} </texit>
La commande bunzip
La commande bunzip
permet d'extraire des archives au format .bz2
La commande tar
La commande tar
permet de manipuler des archives en respectant les droits la structure des répertoires archiver.
Exemples:
- Créer une archive
.tar
d'un répertoire spécifié
$ tar -cf archive.tar repertoire
<texit> \vspace{-7mm} </texit>
- Examine le contenu d'une archive spécifiée
$ tar -tf archive.tar
<texit> \vspace{-7mm} </texit>
- Extrait le contenu d'une achive
$ tar -xf archive.tar
<texit> \vspace{-7mm} </texit>
- Extrait l'archive dans un répertoire donné
$ tar -xf archive.tar -C repertoire
<texit> \vspace{-7mm} </texit>
- Extrait une archive en respectant au mieux les droits d'accès aux fichiers contenus dans l'archive
$ tar -xpf archive.tar
<texit> \vspace{-7mm} </texit>
- Décompacte et extrait une archive au format
.tgz
outar.gz
$ tar -xzf archive.tar.gz
<texit> \vspace{-7mm} </texit>
- Décompacte et extrait une archive au format
.tgz
outar.gz
dans le cas général
$ gunzip archive.tar.gz | tar -xf -
<texit> \vspace{-7mm} </texit>
- Décompacte et extrait une archive au format
.tar.bz2
dans le cas général
$ tar -xjf archive.tar.bz2
<texit> \vspace{-7mm} </texit>
La commande sha1
La commande sha1
affiche la signature SHA1 d'un fichier
$ sha1 fichier
<texit> \vspace{-7mm} </texit>
Remarque: sous linus la commande s'appelle sha1sum
.
Exemple: Comparaison des signatures SHA1 de deux fichiers
$ sha1sum fich1 fich2 | uniq | wc -l
<texit> \vspace{-7mm} </texit>
La commande md5
La commande md5
affiche la signature MD5 d'un fichier.
$ md5 fichier
<texit> \vspace{-7mm} </texit>
Remarque: sous linus la commande s'appelle md5sum
.
La commande uuencode
La commande uuencode
encode un fichier au format UU
$ uuencode f > f.uu
<texit> \vspace{-7mm} </texit>
La commande uudecode
La commande uudecode
décode un fichier au format UU
$ uudecode f.uu > f
<texit> \vspace{-7mm} </texit>
Gestion des processus
Commandes | Commentaires | |
---|---|---|
ps | Affiche la liste des processus de l'usager attachés à un terminal | |
ps -ax | Affiche tous les processus (BSD, Linux) | |
ps -aux | Affiche tous les processus en indiquant les usagers (BSD, Linux) | |
ps -ef | Affiche tous les processus (System V) | |
top | Affiche les processus les plus gourmands (BSD, Linux). Pour réaliser l'affichage par ordre décroissant de mémoire utilisée option M . | |
systat | Affiche les processus les plus gourmands (BSD, MacOs X) | |
nohup programme | Un lance un programme qui ne meure pas en faim de session | |
kill [-signal] pid | Tue un processus en donnant son PID | |
pkill [-signal] nom | Tue un processus en donnant son nom |
Signaux les plus souvent utilisés
Signaux | Commentaires | |
---|---|---|
-1 (HUP) | Recharge le fichier de configuration | |
-2 (INT) | Interrompt le processus (résultat d'un contrôle-C ) | |
-3 (QUIT) | Quitte le processus | |
-9 (KILL) | Tue le processus immédiatement (à éviter, essayer -15 avant) | |
-15 (TERM) | Tue le processus proprement (par défaut si pas de signal indiqué) | |
-18 (STOP) | Gèle le processus | |
-20 (CONT) | Reprend l'exécution d'un processus gelé |
Réaliser des tâches de maintenance périodiques
Commandes | Commentaires | |
---|---|---|
crontab -l | Liste des tâches périodiques de l'usager | |
crontab -e | Édite les tâches périodiques de l'usager avec l'éditeur Vi | |
crontab -e -u usager | Édite les tâches périodiques d'une usager particulier (root uniquement) |
Format des commandes crontab
Une commande est composée de 5 champs temporels, d'un nom d'usager s'il s'agit de la table générale du système et d'une commande. Les 5 champs temporels représentent les minutes (0-59), les heures (0-23), les jours du mois (1-31), les mois (1-12) et les jours de la semaine (0-7; le dimanche est représenté par 0 ou par 7):
x,y…
Liste de valeurx-y
Intervalle de valeurs*
toutes les valeurs/n
Période ou pas
Exemples:
- Tous les jours:
0 5 * * *
- Toutes les 5 minutes:
*/5 * * * *
- Un mardi sur deux à 10h22:
10 22 * * 2/2
- Du lundi au vendredi à 21h52:
21 52 * * 1-5
- Le 10 et le 20 de chaque mois à 18h48:
18 36 10,20 * *
Gestion des disques et des partitions
Commandes | Commentaire | |
---|---|---|
mount | Affiche la liste des systèmes de fichiers montés | |
mount device rep | Monte un système de fichiers (depuis un périphérique device ) sur un répertoire. NB: device est souvent de la forme /dev/hd* ou /dev/sd* . | |
mount -t msdos device rep | Montage d'une partition MS-DOS | |
df | Affiche l'espace occupé/libre sur les systèmes de fichiers montés: — -k Exprime les tailles en Ko — -h Exprime les tailles dans l'unité la plus significative (Linux, BSD) | |
fdisk device | Modification du partitionnement | |
pdisk device | Modification du partitionnement (MacOs X, BSD) | |
disklabel device | Modification du partitionnement (BSD) | |
newfs device | Formatage d'une partition | |
mkfs device | Formatage d'une partition | |
/etc/fstab | Fichier contenant les correspondances entre devices et points de montage et indication des options de montage. NB: Le fichier fstab est également utilisé pour le montage automatique des partitions au démarrage. |
Développement
Les commandes de bases
Commandes | Commentaires | |
---|---|---|
cc -c fcihier.c | Compilation de fichier.c en fichier.o | |
cc -o prog f1.o f2.o | Liaison de f1.o et f2.o pour générer le programme prog | |
ar | Manipulation d'archive .a | |
ranlib | Indexation des archive .a | |
nm | Liste les symboles d'un binaire | |
objdump | Affichage, désassemblage d'un binaire | |
patch -pX < fichier.patch | Applique le patch fichier.patch en supprimant X niveau d'arborescences dans les chemins |
Les principales options de GCC pour la compilation
Options | Commentaires | |
---|---|---|
-Wall | Affiche tous les avertissements | |
-Werror | Prend les avertissements pour des erreurs | |
ansi | Exige un style ANSI | |
-I/usr/pkg/include | Recherche des entêtes dans /usr/pkg/include | |
-O, -O2, -O3, -O6 | Optimisation pour la vitesse | |
-Os | Optimisation pour la taille de l'exécutable |
Les principales options de GCC pour la liaison
Options | Commentaires | |
---|---|---|
-static | Liaison statique (utilise les librairies .a ) | |
-dynamic | Liaison dynamique (utilise les librairies .so ou .dylb sous MacOs X). | |
-Ibiblio | Lie avec la libraririe biblio.a ou biblio.so | |
-Lchemin | Recherche les librairies dans chemin | |
-Rchemin | Indem, mais effectue la recherche au moment de l'exéctution |
Remarque: cc
et un alias de gcc
sous BSD, Linux et MacOs X.
Utilisateurs
Commandes | Commentaires | |
---|---|---|
whoami | Affiche son propre login | |
who | Affiche la liste des usagers | |
finger usager | Affiche les informations concernant un utilisateur | |
talk usager[@machine] | Engage une conversation avec un usager | |
write usager | Affiche un message sur le terminal d'un usager | |
wall | Affiche un message à tous les usagers | |
msg [y|n] | Autorise (y) ou pas (n) l'affichage des messages | |
tty | Affiche le nom de son terminal |
Contrôle de version avec CVS et SVN
Les commandes de bases de CVS
Commandes | Commentaires | |
---|---|---|
cvs -d dépôt co -P module | Récupération d'un module depuis le dépôt | |
cvs -d dépôt update -P -d | Mise à jour des sources | |
cvs -d dépôt diff | Liste les differences au dépôt | |
cvs -d dépôt diff | patch -R | Annule les differences au dépôt | |
cvs -d dépôt commit | Valide les modification vers le dépôt |
Remarque: L'option -d
des commandes CVS peut être supprimée si la variable d'environnement CVS_ROOT
est correctement initialisée.
Les chemins de dépôt
Chemins | Commentaires | |
---|---|---|
/chemin | Dépôt local | |
:pserver:usager@serveur:/chemin | Accès via le protocole pserver au dépôt sur le serveur serveur en utilisant le nom usager | |
usager@serveur:/chemin | Accès via le protocole rsh ou ssh en fonction de la valeur de la variable d'environnement CVS_RSH |
Les commandes de bases de SVN
Commandes | Commentaires | |
---|---|---|
svn co dépôt/dossier copie_locale | Récupération d'un dossier depuis le dépôt | |
svn update copie_locale | Mise à jour des sources | |
svv diff dépôt/dossier copie_locale | Liste les differences au dépôt | |
svn distant local | patch -R | Annule les differences au dépôt | |
svn -commit copie_locale | Valide les modification vers le dépôt |
Exemple:
svn co https://www.ens.math-info.univ-paris5.fr/stage-unix/MementoUnix/ / home/mu/MementoUnix/
<texit> \vspace{-10mm} </texit>