***************************************** * * * MEMENTO UNIX 2002 - 2003 * * * ***************************************** Memento des commandes UNIX =========================== Commandes generales ------------------- date donne l'heure et la date. cal m a calendrier du mois m de l'annee a uname -s nom du systeme uname -a nom du systeme, version, etat au boot.... (all) who liste le nom des utilisateurs connectes who am i affichage de votre nom d' utilisateur logname affichage de votre nom d' utilisateur id identificateur d'utilisateur et de groupe passwd permet de changer le mot de passe tty nom du terminal (ou du terminal virtuel) clear effacement d'ecran echo mess affiche le message mess echo -e message affiche et interprete des caracteres speciaux comme en langage C (\n, \t, \c, ......) man nom_cmd manuel du programmeur: (ex : man who) type nom_cmd chemin d'acces et type d'une commande Commandes de fichiers --------------------- cat f1 f2 f3 affiche le contenu des fichiers f1 f2 f3 more f1 affiche page par page le contenu du fichier pg f1 affiche page par page le contenu du fichier lpr f1 impression differee (spool d'impression) cp f1 f2 copie de f1 sur f2; f2 est detruit s'il existait cp -r f1 f2 r1 copie f1 et f2 dans repertoire r1 (recursivemen) mv f1 f3 renomme f1 en f2 rm f1 deruit le fichier f1 rm -i f1 detruit le fichier f1 avec confirmationn rm -r f1 detruit f1 et tous ses sous-repertoires chmod perm fic changement des droits d'un fichiers chown fic changement du proprietaire chgrp fic changement de groupe umask mk initialisation du masque a mk (par defaut) cmp f1 f2 affiche la premiere difference diff f1 f2 affiche toutes les differences comm f1 f2 affiche les lignes communes od f1 affiche le fichier dans son format octal od -c f1 les octets sont interprŽetes en car. Commandes de repertoires ------------------------ mkdir rep cree un repertoire rep rmdir rep efface le repertoire rep pwd affiche le nom du repertoire courant cd rep change le repertoire de travail ls liste les fichiers du repertoire courant ls fic liste seulement le fichier nomme ls -F liste du repertoire (/ pour rep, * pour exec) ls -a liste aussi les fichiers invisibles ls -R liste recursivement tous les repertoires ls -C liste en colonnes ls -x liste en colonnes triees ls -t liste en ordre de mise a jour(tri par date) ls -u liste en ordre d'utilisation ls -i donne la valeur de l'inode ls -l liste avec toutes les informations (long) Informations sur les fichiers et les repertoires ------------------------------------------------ file f1 donne le type du fichier f1 du /rep espace disque utilise par rep df ou bdf espace disque libre ulimit -f taille maximale d'un fichier dirname partie repertoire d'un chemin d'acces basename partie nom de fichier (sans suffixe) Commandes de processus et signaux --------------------------------- ps processus actifs (process status) du terminal ps -e tous (every) les processus actifs sur le site ps -f l'arborescence des processus qctifs ps -l processus actifs avec informations completes sleep nbsec permet d'endormir le processus nbsec secondes kill -l liste des signaux kill -9 pid permet de tuer le processus de numero pid jobs kill %job-no Commande find : Recherche de fichiers ------------------------------------- Conditions: -name recherche de fichier par son nom -print toujours vraie: le nom trouve sera affiche -perm condition sur permission. Exemples -type condition sur le type du fichier (b,c,d, p, f). -links condition sur le nombre de liens. -size condition sur la taille en nb de blocs de 512 octets -user condition sur l'utilisateur -group condition sur le groupe Exemples : $find /usr -name lib trouver lib depuis /usr $find ./ -name "prog*" trouver prog* depuis ./ $find ./ -name "[a,b]*" -print trouver depuis ./ les fichiers dont le nom commence par 'a' ou 'b' voir egalement "whence" , "whereis" et "locate" Filtres ------- head fic affiche les 10 premieres lignes head -n fic affiche les n premieres lignes de fic. tail fic affiche les 10 dernieres lignes de fichiers. tail -n fic affiche les n dernieres lignes de fichiers. tail +n fic affiche les lignes a partir de la ligne n. wc fic compte les lignes, mots et caracteres du fichier fic wc -l fic compte les lignes. uniq supprime les lignes repetees d'un fichier trie nl fic numerote les lignes pr fics mise en forme des fichiers avec en tete pr -n fics mise en forme sur n colonnes. sort fic trie les lignes de fic en ordre alphabetique. grep exp fic affiche les lignes contenant exp. grep -v exp fic affiche les lignes ne contenant pas exp. grep -n exp fic affiche les lignes contenant exp avec no de ligne grep -l exp fic affiche seulement le nom des fichiers contenant exp cut -cn-m selection des caracteres dans les colonnes n a m d'une ligne texte. Exempls simples : -------------------- Le tube (|) : $ls -l | wc -l passe le resultat de "ls" a "wc" Caracteres generiques (?, *) : $ls prog* $ls prog? Sequence de commandes (par ;) $date; id; pwd $cd /usr/include; ls -l | head Capture de la sortie d'une commande : $rep=`pwd` la variable rep contient le resultat de pwd $echo $rep $list = `ll` $echo $list $sys=`uname -a` $echo $sys En arriere plan : $cd .. ; du include & Le || et le &&: $cd $HOME/travail/tp3 || cd $HOME/travail && (pwd;cat tp3.sol) Recuperation des erreurs: $cd ../tp2|| cd $HOME/travail/tp2 2>/dev/null $cat f5 || cat f1 2>/dev/null Les Guillemets : Les guillemets simples inhibent les commandes: $echo '==> voila le resultat de la commande ll \n `ls` ' ==> ecrit simplement le message '..............' Les guillemets double interpretent les commandes: $echo "voila le resultat de la commande ls `ls` " ==> affiche le message puis execute ls Exercices : ------------ 1: Affichage des noms de fichiers par ligne a l'aide de 'cut': $ls -l | cut -c55- 2: Cherchez les fichiers dans le repertoire /usr/local/bin dont l'utilisateur est "root". $find /usr/local/bin -user root -exec ls {} \; Remarques : dans find, respecter "{} \;" a la suite de -exec. voir aussi "man find" 3: Cherchez depuis le repertoire courant les fichiers dans lesquels figure le mot 'main'. Afficher les noms de ces fichiers. $find ./ -exec grep -l 'main' {} \; 4: Chercher depuis le repertoire courant les fichiers 'a.out' ou ceux de la forme '*.o' et les supprimer. $find ./ \( -name a.out -o -name '*.o' \) -exec rm {} \; Quelques commandes regroupees dans un script : ----------------------------------------------- Il faut lire ces commandes, les executer et les comprendre. Exercice de redirection : ----------------------- #!/bin/ksh who -c 2>err cat err who -l >& err cat err who >tempo1 tail tempoo head tempo1 >tempoo ll /usr >tempo2 wc -l tempo3 echo "dans 'echo -e', l'antislash c correspond au backspace" echo -e "l'exection de la commande cat tempo3 sera effectuee a \c" echo "la suite du texte "; cat temppo3 --------------------------------------------------------- voir shell-doc-exo.txt pour la partie SHELL (voir le répertoire TP2).