Misfu, le site des cours Informatique/Bureautique/Mathematiques


 

Récapitulatif des principales commandes UNIX

Commandes usuelles d'Unix




Commande

Action

who -s

Utilisateurs connectés et leur station

man

Obtenir de l'aide sur une commande Unix

man -k

Chercher de l'aide sur un mot clé

exit

Se délogger

pwd

Obtenir le chemin actif

ps -A

Obtenir la liste des jobs actifs

| pg ou | more

Paginer une commande (arrêt fin écran)

kill -9

Arrêter un job

ls ('LS' minuscule)

Liste des fichiers du répertoire courant

shutdown

Attendre la question 'do you.. continue'

Répondre 'y'

Au redémarrage, attendre 'BOOT'

Appuyer sur [ENTER]

Puis [CTRL]+[D]

Arrêt serveur

su nom_utilisateur

Changer de profil utilisateur

cp fichier_source fichier_destination

Copier un fichier

LS -L (en minuscules, ça suffit)

Commande équivalent au DIR du DOS

CAT nom_fich

Commande équivalente au TYPE du DOS. Utiliser MORE pour paginer

> nom_fichier

Redirection des sorties vers un fichier



Autres commandes utiles


Commande

Action

hostname

Nom de la station sur laquelle on est conncté

uname

Nom de l'utilisateur courant

date

renvoie la date

cal

calendrier

logname

nom de login courant

id

renvoie les UID et GID de l'utilisateur courant

more

permet de paginer une sortie écran

clear

efface l'écran

echo

visualise une chaine ou variable

man

aide d'UNIX

env

visualise les variables d'environnement

whereis

localise une commande sur les disques

apropos

recherche des rubriques connexes de l'aide

grep

recherche une chaine

tty

donne le nom du périphérique de sortie standard

mkdir

créer un répertoire

mv

déplace un fichier/répertoire

cp

copie un fichier/répertoire

touch

crée un fichier vide ou met à jour les flags d'un fichier

df

donne l'utilisation des disques

cd ~ ou cd

replace dans le $HOME de l'utilisateur courant

whoami

donne le nom de login de l'utilisateur courant

mkdir -p

crée une arborescence

rm -r

supprime une arborescence

ls -R

équiv. au tree

su - loginname

cette commande permet de changer de login et en plus de lire l'environnement complet de l'utilisateur

cat fich1 fich2 >fich3

concaténation de fichiers

tail -f

visualise la fin d'un fichier


tris et actions d'extraction



Commande

Action

sort

Tri standard

uniq

élimine les lignes identiques consécutives

head

extrait le début d'un fichier

tail

extrait la fin d'un fichier (tail +2 pour sauter une entête par exemple)

split

découpage en paquets

cut

extraction d'une partie d'un fichier, colonnes, caractères, etc…

grep

recherche une chaine et extrait les lignes correspondantes

paste

colle ligne à ligne deux fichiers

join

réalise une jointure entre deux fichiers de type base de données

wc

compte le nombre de lignes ou de mots



Entrées/sorties basiques


Commande

Action

read var

attend une saisie au clavier et positionne var

echo

affiche à l'écran

echo -e

affiche avec codes de contrôle étendus

tput

locate + invertion vidéo


calculs


on peut faire des calculs en utilisant l'instruction 'let'. Exemple : let 'i = $i + 1'


Retrouver le répertoire par défaut d'un utilisateur


Pour retrouver le répertoire par défaut d'un utilisateur Unix:

· Se logger avec le profil en question et son mot de passe

· ouvrir un shell

· taper: echo $HOME

Le répertoire par défaut de l'utilisateur s'affiche.


Séquence d'exécution d'un login


Lorsqu'un utilisateur se connecte, son fichier .cshrc, contenu dans son répertoire par défaut ($HOME) est exécuté. Est exécuté ensuite son fichier .login
s'il existe.


Dans le fichier .cshrc se trouvent toutes les déclarations de variables unix, les alias définits pour cet utilisateur.

Dans le fichier .login se trouvent les informations concernant la configuration du terminal et de l'environnement.


Métacaractères du shell


Le shell comprend les caractères étendus suivants:


' '

permet de spécifier une chaine dont le contenu ne sera PAS interprété par le shell

' '

permet de spécifier une chaine dont le contenu sera interprété par le shell (peut contenir des variables $ qui seront interprétées)

*

tous les fichiers

?

remplace un caractère dans le nom d'un fichier

[ ]

spécifie une liste

;

permet d'enchainer des commandes (attention, différent du pipe)

&

lancer un processus en arrière-plan

#

commentaire

` `

récupére le résultat d'une commande

$

= contenu de


Manipulation des fichiers


Exemples :

lister les fichiers commençant par D ou d et finissant par 'pont': ls [Dd]*pont

lister les fichiers qui ne commencent pas par un chiffre: ls [!0-9]*


Les liens


Il existe les liens physiques et les liens logiques.
Un lien physique est une duplication du descripteur (l'INODE) du fichier cible. Lorsqu'un utilisateur ouvre son lien physique, il ouvre les données contenues dans le premier fichier.
On peut retrouver qu'il s'agit d'un lien car le nombre de liens dans un
ls -l est >1.

Les liens logiques sont en fait des 'raccourcis' et sont des fichiers de type 'l' lorsqu'on fait un ls -l.


Trouver un fichier


find -name ''


on peut ensuite enchainer une action sur les fichiers trouvés par la commande find:


find ~ -name '' -exec '{}' ;


'{}' signifie 'fait porter l'action sur l'ensemble des fichiers trouvés par le critère du find'

par exemple :


find ~ -name 'dup*' -exec rm '{}' ;


recherche à partir du home de l'utilisateur tous les fichiers commençant par 'dup' et les supprime.
Les fichiers commençant par un '.' n'apparaissent pas dans un
ls, sauf un ls -a.


Principes de gestion des fichiers et répertoires


Sous UNIX, tout est fichier.
Un périphérique, un écran, une imprimante, un répertoire, tout est fichier.
Un fichier peut être exécutable si son flag d'exécution ( 'x' ) est positionné.
Un répertoire est un fichier qui contient la liste des fichiers sensés être stockés dans ce répertoire.

Un fichier est constitué de deux parties: l'INODE qui est le descripteur du fichier (secteurs, n° d'INODE, etc…) et des données. Lorsqu'un fichier est copié, il y a copie de l'INODE et des données. Lorsqu'un lien physique est créé, seule l'INODE du fichier est dupliqué car les données elles-même sont partagées.


Création de liens


Pour créer un lien physique :


ln fichier


pour créer un lien logique :


ln -s répertoire


Droits courants des fichiers et répertoires


Tout fichier/répertoire a une série de bits définissant les droits d'accès: Ces droits sont formatés comme suit :


bit ' type'

bit 'user'

bit 'group'

bit 'others'

répertoires

d

rwx

rwx

rwx

fichiers

-

rwx

rwx

rwx

lien logique

l

rwx

rw

rwx


Pour les répertoires :


le 'r' veut dire que l'on peut lire le fichier-répertoire, c'est-à-dire que l'on peut lister les fichiers qu'il contient
le 'w' veut dire que l'on peut écrire dans le fichier-répertoire, c'est-à-dire que l'on peut créer des fichiers dans ce répertoire
le 'X' veut dire que l'on peut se déplacer dans le répertoire


Pour les fichiers :


le 'r' veut dire que l'on peut lire le fichier
le 'w' veut dire que l'on peut y écrire
le 'x' veut dire que l'on peut l'exécuter (script ou programme compilé par exemple)

La commande permettant de changer ces droits est 'chmod'. Par exemple, si on veut rendre un fichier exécutable (et que ce fichier nous appartient), il faut écrire :


chmod u+x


Si on veut donner le droit à tout le monde de lire ce fichier, il faut entrer :


chmod a+x


Si on veut donner aux utilisateur de mon groupe le droit de modifier et lire ce fichier, il faut entrer :


chmod g+wr


Lorsqu'on crée un fichier, le bit 'user' est positionné sur notre UID, les informations de groupe du fichier sont positionnés en fonction de notre GID. Si on veut temporairement endosser les ID d'un autre groupe, on entre :


chgrp


Si on veut changer l'UID d'un fichier :



chown


On rappelle qu'un répertoire est en fait un fichier contenant la liste des fichiers contenus dans ce répertoire.

Note: Si on ne donne que le droit 'w' à un fichier, on peut modifier ce fichier sans le lire, par exemple avec un echo 'xxxxxxxxx'>> .


Jobs


On peut visualiser la liste des processus actifs par ps. On peut également utiliser la commande


jobs

Si on veut passer au premier plan un process lancé avec '&', il suffit d'écrire :


fg %


Si on veut passer en arrière-plan un job stoppé :


bg %


Options de kill des jobs :


kill -1 pour les démons, relit les fichiers de configuration
kill -9
tue le processus sans sécurité
kill -15
terminate
kill -19
stop


Le numéro est l'ID du process donné par un ps.


Redirection


Toute commande UNIX peut être redirigée vers un fichier par l'utilisation de l'opérateur de redirection '>'.
Les erreurs peuvent elles-aussi être redirigées vers un fichier par l'utilisation de l'opérateur '2>
'.

Si on ne veut pas garder trace, on peut rediriger une sortie vers la poubelle d'UNIX: /dev/null.

Par exemple :


find ~ -name '…..' >resultats 2>/dev/null


Variables d'environnement


UNIX utilise différentes variables dont certaines sont standard :


$HOME

renvoit le chemin vers le répertoire de base de l'user

$PS1

est le texte correspondant au prompt n°1 du shell.

$?

renvoie 0 ou 1 selon que la commande précédente du shelle a été correctement exécutée ou non


Exemples de commandes shell d'utilisation courante


affiche le plus gros fichier d'un répertoire :


ls -l | sort +4nbr | head -n 1


renvoie le nombre d'utilisateurs connectés :


who | wc -l


lister les répertoires :


ls -l | grep '^d'


renvoyer le premier champ d'un who :


who | cut -f 1 -d' '


Liste des utilisateurs connectés :


who | awk '{print $1}' | sort | uniq


ou


who | cut -f 1 -d' ' | sort | uniq


Les scripts


Pour écrire un script, il suffit d'éditer un fichier et d'entrer des commandes shell.
Il faut ensuite spécifier en première ligne de ce script l'interpréteur de commandes qu'il faudra utiliser pour exécuter le fichier (typiquement, sur le shell en écrivant par exemple
#!/bin/bash ou #!/bin/csh en fonction du shell utilisé)


Il faut enfin rendre le fichier exécutable en lançant chmod u+x
Si on veut débugger l'exécution du script, il faut ajouter le commutateur '-x' sur la ligne du shell à lancer. A ce moment-là, chaque ligne sera affichée avant et après exécution :


#!/bin/bash -x


Exemple de script de sauvegarde :


#!/bin/bash
# Script de sauvegarde du HOME
JOUR=`date +%d`
MOIS=`mois +%m`
ANNEE=`date +%D`
REP='/tmp/$ANNEE/$MOIS'
FICH=${JOUR}.tar
mkdir -p $REP
cd $REP
tar cf $FICH $HOME
NBFICHS=`tar tvf $FICH | wc -l`
echo '$NBFICHS ont été sauvegardés dans le répertoire $REP'
compress -f $FICH
echo 'Fin du travail'
cd


calculs


on peut faire des calculs en utilisant l'instruction 'let'.
Exemple: let 'i = $i + 1'


Conditions


Deux exemples:


if cmde
then …
else …
fi


if [ test ]
then …
else …
fi


où test peut être : [ $# -ge 3 ]

pour le nombre de paramètres >3. METTRE DES ESPACES PARTOUT car le shell interprète chaque opérateur comme un paramètre.


[ -f fichier]


si 'fichier' est de type fichier classique.


La connexion d'un utilisateur à UNIX


Lorsqu'une session est demandée en ouverture sur un système UNIX, par exemple à partir d'un telnet sur une machine windows, il y a tout d'abord autentification de l'utilisateur et saisie de son pwd;


La liste des utilisateurs déclarés se trouve dans /etc/passwd
corrélativement, les mots de passe sont stockés sous forme codés dans/etc/shadow
de même les informations d'appartenance de groupe se trouvent dans /etc/group


le format du fichier /etc/password est le suivant :


login:x:UID:GID:nomprénom:homepath:shell //login est le nom de login de l'utilisateur
UID: ID d'utilisateur
GID: ID de groupe de l'user
nomprénom: est le libellé détaillé de l'user
homepath: est le chemin absolu de son $HOME
shell: path est le shell utilisé pour l'user


L'utilitaire de création des utilisateurs est ADDUSER.


Sauvegarde et restauration


les commandes courantes de sauvegarde/restauration sont :


- sauvegarde : tar cvf


si on sauvegarde un chemin absolu, la restauration ne pourra être qu'absolue. Il est fortement conseillé de vérifier le contenu du fichier tar en effectuant un affichage : tar tvf


- restauration : tar xvf


- compression : compress


- décompression : uncompress -v


Editeur standard VI


VI est l'éditeur standard d'UNIX. Il a été créé au XVIIè siècle est fonctionne à priori sur toutes les plateformes.
Il faut savoir que VI fonctionne sur deux modes: le mode commande et le mode édition. On passe de l'un à l'autre par [ESC].


Commandes courantes:


i

insérer du texte

o

insérer une ligne au-dessous de la ligne courante

O

insérer une ligne au-dessus de la ligne courante

A

insérer du texte à la fin de la ligne courante

a

insérer du texte au début de la ligne courante

x

supprimer le caractère courant

:q

quitter VI

:wq

enregistrer et quiter

:w [nom]

enregistrer [sous nom]

nG

aller à la ligne n

dd

supprimer la ligne courante

yy

copier la ligne courante

p

coller (placer) la ligne copiée au-dessous de la ligne courante

P

coller (placer) la ligne copiée au-dessus de la ligne courante

:!q

quitter sans sauvegarder

R

remplacer


Les batches


UNIX donne la possibilité d'exécuter des scripts ou des commandes en schedulé. On utilise pour cela la commande 'at' pour planifier l'exécution unique ou 'crontab' pour l'exécution récurente d'un programme ou script.


crontab s'utilise avec le nom d'un fichier 'cron' qui a le format suivant:


minute

heure

jour

mois

jour semaine

commande

0-59

0-24

0-31

0-12

0-7


exemples :


tous les vendredi à 20h :


minute

heure

jour

mois

jour semaine

commande

0

20

*

*

5

commande


tous les jours à 20h sauf le vendredi :


minute

heure

jour

mois

jour semaine

commande

0

20

*

*

1-4

commande


Tous les premier lundi du mois à 21h30 :


minute

heure

jour

mois

jour semaine

commande

30

21

1-7

*

1

commande


Passation de variables dans le shell


Lorsqu'on exécute une commande, le shell commence par se cloner et passe la commande à son clone, si bien que toutes les variables du clone sont locales au clone.
Pour exécuter le script ou la commande dans le shell courant et non à un clone (par exemple pour redéfinir des variables d'environnement de ce shell) il faut utiliser l'opérateur point '
.':


. script


exécutera 'script' dans le shell courant.


Si d'autre part on veut qu'une variable contenue dans un script devienne disponible à toutes les occurrences de shell (c'est-à-dire dans le shell courant) il faut utiliser la commande 'export'.


export var=valeur


La variable 'var' devient donc disponible dans le shell courant et tous les clones futurs. C'est typiquement l'utilisation des fichiers de configuration.


Fichiers de configuration


Quand

Qui

shell 'sh'

shell 'ksh'

shell 'bash'

à la connexion

tout le système

/etc/profile

/etc/profile

/etc/.login

chaque utilisateur

$HOME/.profile

$HOME/.profile

$HOME/.login

Au lancement d'un nouveau shell

chaque utilisateur

$HOME/.kshrc si on a un export ENV=$HOME/.kshrc dans le .profile

$HOME/.cshrc

A la sortie du shell

chaque utilisateur

$HOME/.logout


pour relire son fichier de configuration à un instant t :


. .profile

La déclaration des variables d'environnement .profile du $HOME. Ne pas oublier d'exporter les variables de sorte qu'elles soient disponibles pour le shell !
Par exemple le changement du prompt par défaut, si on veut que figure le chemin de travail :

PS1='w'


Passage de paramètres entre commandes : commande arg1 arg2 arg3 …


les variables se récupèrent dans la commande en utilisant les variables suivantes :$1, $2, … paramètres 1, 2, …


$# est le nombre d'arguments passés
$* est la liste constituée des différents arguments
$0 est le nom de la commande lancée


Rappelons-nous que l'on peut utiliser les quotes et guillemets si l'on veut passer des paramètres multiples qui, respectivement, ne seront pas ou seront interprétés par le shell.



www.misfu.com