====== Aide-mémoire des commandes Unix ====== Ce document regroupe les principales commandes susceptibles d'être employées régulièrement par les utilisateurs Unix, rappelant leurs options les plus courantes. Pour avoir plus de détail sur une commande particulière, on consultera le manuel Unix (commande man). **apropos** - Liste les pages du manuel concernant un sujet apropos shell **arch** - Affiche l'architecture de la machine. **at, atq, atrm** - Mémorise, examine ou supprime des jobs à exécuter ultérieurement. //-f// lire les commandes dans le fichier indiqué. at now + 10 minutes < script.sh at 20:55 -f demarre_magnetoscope.sh **awk** - Interpréteur du langage Awk. //NF //nombre de champs sur la ligne //FS// séparateur de champs //NR// numéro d'enregistrement (de ligne) //$1, $2...$NF// champs successifsls -l |awk '{sum+= $5} END{print sum}' additionne les tailles des fichiers du répertoire courant **basename** - Élimine le chemin d'accès et le suffixe éventuel d'un nom de fichier. $basename /usr/src/linux/signal.c signal.c $basename /usr/src/linux/signal.c .c signal **bash** - Shell Gnu Bash **batch** - Lance un job en différé suivant la charge CPU batch << FINtri_des_enregistrementsFIN **bc** - Calculateur en précision arbitraire. //-l// bibliothèque mathématique complète. $ pi=$(echo "a(1)*4" | bc -l) $ echo $pi3.14159265358979323844 **bg** - Relance à l'arrière-plan un job arrêté. $ application(Ctrl-Z)[1]+ Stopped application$ bg[1]+ application & **bunzip2** - Décompresse un fichier .bz2. **bzip2** - Compresse un fichier. **cal** - Affiche un calendrier. cal 5 2003 **cat** - Concatène des fichiers sur la sortie standard. //-n// numérote les lignes en sortie, //-v// caractères spéciaux sous forme symbolique. cat entete corps.txt signature > mail **cc** - Compilateur C. **cd** - Change de répertoire de travail.cd /usr/src/linux cd - revient au répertoire précédent cd revient dans le répertoire personnel. **chgrp** - Change le groupe propriétaire d'un fichier. //-R// modifie récursivement les sous-répertoires. chgrp equipe_2 fichier **chmod** - Modifie les permissions d'un fichier. //-R// modifie récursivement les sous-répertoires. chmod 644 texte lecture pour tous, écriture seulement pour propiétaire chmod 755 script lecture et exécution pour tous, écriture pour propriétaire chmod u+s executableActivation du bit Set-UID du fichier. **chown** - Modifie propriétaire et groupe d'un fichier. //-R// modifie récursivement les sous-répertoires.chown user1.equipe1 fichier **chsh** - Change le shell appelé à la connexion. //-l// liste des shells disponibles, //-s// utilise le shell de connexion indiqué.chsh -s /bin/ksh **cksum** - Nombre d'octets et somme de contrôle. **clear** - Efface l'écran. **cmp** - Compare deux fichiers. //-l// affiche le rang de chaque octet différent, //-s// n'affiche rien, renvoie vrai ou faux.if cmp -s fichier1 fichier2; then ... **col** - Élimine les retours et sauts-de-ligne en arrière. //-b// enlève tous les retours en arrière. man col | col -b > col.man.txt **compress** - Compression simple de fichier. **cp** - Copie de fichiers. //-R// copie récursive des sous-répertoires, //-p// garde horodatage, propriétaire, permissions, //-d// copie les liens symboliques en tant que tels. cp fichier fichier.sauvecp -Rdp fichier_* /autre/repertoire **crontab** - Édite le fichier crontab personnel. //-l// affiche le contenu actuel, //-e// édite le fichier crontab, //-r// supprime le fichier crontab. **csh** - Shell C. **csplit** - Découpe un fichier suivant des lignes de contexte. //-f// préfixe pour nommer les nouveaux fichiers. csplit -f prefixe fichier '/^$/' {*}crée prefixe00 prefixe01... en découpant le fichier à chaque ligne vierge **cut** - Supprime une partie de chaque ligne. //-b// affiche les caractères indiqués, //-f// affiche les champs indiqués, //-d// caractère séparateur de champ ls -l | cut -b 20-28 affiche uniquement les caractères 20 à 28, c'est-à-dire le groupe des fichiers. **date** - Affiche la date et l'heure du système. //-d// indique la date à afficher //+ //chaîne de format pour l'affichage.date +"Date = %D, Heure = %X"date -d 20030401 +"%A"affiche "mardi" (1er avril 2003). **dd** - Copie générique et conversion de fichiers. //if=// nom du fichier d'entrée, //of=// nom du fichier de sortie, //bs=// taille des blocs à copier, //count=// nombre maximal de blocs à copier, //skip=// position de début de lecture, //seek=// position de début d'écriture. dd if=/dev/fd0 of=disquette.img bs=1024 count=1440 **df** - Place occupée sur les systèmes de fichiers. //-k// affiche les tailles en kilo-octets, //-P// affiche une ligne d'en-tête.df -k /tmp/sauvegarde **diff** - Trouve les différences entre des fichiers. //-i// ignore les différences majuscule/minuscule, //-b// ignore les différences d'espaces blancs, //-u// utilise un format compatible avec patch, //-r// étudie récursivement les sous-répertoires. diff -u original copie > modifs.patch **dirname** - Affiche le répertoire d'un chemin d'accès. dirname /usr/src/signal.c /usr/src **dos2unix** - Conversion de texte du format Dos vers Unix. **du** - Statistiques sur l'utilisation du disque. //-a// affiche les statistiques pour les fichiers, //-s// affiche seulement le total, //-x// ignore les autres systèmes de fichiers, //-k// affiche les tailles en kilo-octets. **echo** - Affiche une ligne de texte. //-e// interprète les caractères symboliques, //-n// évite le saut-de-ligne final. echo "Message d'avertissement" >&2 echo -n "Votre choix :" echo -e " effectué : " $i "%"echo -e "007" **ed** - Éditeur ligne-à-ligne **egrep** - Synonyme de grep -E **emacs** - Éditeur Gnu pleine pageVersion X-Window : emacs. **env** - Lance un programme en environnement modifié. //-i// Démarre dans un environnement vide. env affiche l'environnement en cours env -i /bin/shdémarre le shell dans un environnement neuf. **expand** - Convertit les tabulations en espaces. //-t// largeur de tabulation désirée, //-i// uniquement les tabulations en début de ligne. expand -i < script.sh > listing.txt **export ** - Passe une variable dans l'environnement du shell export REP_APPLI=/usr/local/lib/appli/ VERSION_APPLI=1.5 export VERSION_APPLI **expr** Évalue des expressions. expr 4 "*" 3 + 2 affiche 14(les guillemets protègent l'étoile par rapport au shell) **false** - Échoue en ne faisant rien. until false; do ... **fc ** - Édite la dernière ligne de l'historique avec l'éditeur mentionné dans la variable d'environnement FCEDIT. **fg** - Ramène un job à l'avant-plan. **fgrep** - Synonyme de grep -F **file** - Affiche le type d'un fichier **find** - Recherche des fichiers dans une arborescence. //-name ////motif// recherche sur le nom du fichier, //-regex ////expr// recherche sur le nom complet, //-atime ////n// dernier accès il y a //n// jours, //-ctime ////n// dernière modif. de l'état du fichier, //-mtime ////n// dernière modif. du contenu du fichier, //-perm ////mode// autorisations d'accès au fichier, //-size ////n// taille du fichier (en blocs), //-type ////t// type du fichier, //-print //affiche les noms des fichiers trouvés, //-exec ...{} ;// exécute l'action indiquée en remplaçant {} par le nom du fichier, -ok ...{}; exec avec confirmation. find /tmp -ctime +30 -ok rm {} ; find /home -name core -exec rm {} ; **fold**- Coupe les lignes d'un fichier à une largeur donnée. **ftp** - Transfert de fichiers entres machines. **fuser** - Identifie les processus utilisant un fichier. //-k// leur envoie le signal SIGKILL, //-i// confirmation avant d'envoyer le signal, //-m// tous processus accédant au système de fichiers. fuser -k /mnt/cdrom **grep** - Affiche les lignes correspondant à un motif. //-E// le motif est une expression rationnelle étendue, //-F// le motif est une chaîne pas une expression, //-i// ignore différences majuscules/minuscules, //-v// affiche les lignes ne correspondant pas, //-l// affiche seulement le nom des fichiers. grep -i "MoTiF" fichiers_* grep -v "absent" fichier **groups** - Affiche les groupes d'un utilisateur. **gunzip** - Décompresse un fichier .gz. **gzip** - Compresse un fichier. **head** - Affiche le début d'un fichier. //-c ////n// affiche les //n// premiers octets, //-n ////n// affiche les //n// premières lignes. **hostid** - Affiche l'identifiant de la machine **hostname** - Affiche le nom de la machine **iconv** - Convertit des textes d'un jeu de caractères vers un autre iconv -f LATIN1 -t UTF8 < fichier **id** - Affiche les UIDs et GIDs effectifs et réels. //-u// affiche seulement l'UID, //-g// affiche seulement le GID, //-r// affiche les identifiants réels. if [ $(id -u) == 0 ]; then... **jobs** - Affiche la liste des jobs en cours. **join** - Fusionne les lignes de deux fichiers triés. join fichier_1 fichier_2 > fichier_3 **kill** - Envoie un signal à un processus. //-////numéro// le signal dont le numéro est indiqué, //-l// affiche la ligne des signaux disponibles. kill -9 30582 **killall** - Envoie un signal aux processus de même nom. //-i// demande confirmation individuellement, //-l// affiche la liste des signaux disponibles. killall xterm **ksh** - Shell Korn **less** - Affiche un fichier page-par-page. (alternative libre et puissante à more.) **lex** - Générateur d'analyseur lexical **ln** - Crée des liens entre fichiers. //-f// force l'écrasement du fichier s'il existe, //-s// crée un lien symbolique. ln -sf appli-1.4.sh appli **logger** - Journalise un message système. **login** - Relance une connexion sur le système. **logname** - Nom de connexion de l'utilisateur. **lp** - Requête d'impression //-d// sélection de l'imprimante //-n// nombre de copiespr -l 66 appli.c | lp -d listing **ls** - Liste les fichiers et le contenu des répertoires. //-a// aussi les fichiers commençant par un point, //-d// noms des répertoires, pas leur contenu, //-i// affiche les numéros d'i-n?ud, //-l// utilise un format d'affichage long, //-R// affiche récursivement les sous-répertoires. ls -al /home/usera **make** - Construction d'application, et gestion des dépendances. **man** - Affiche une page du manuel Unix. //numéro// recherche dans la section indiquée, //-a// affiche toutes les pages correspondant, //-t// écrit la page Postscript sur la sortie standard, //-k// équivalent à la commande //apropos//.man 1 cman -k socket **md5sum** - Calcule et affiche un compte-rendu MD5. **mkdir** - Crée des répertoires. //-p// crée récursivement les répertoires parents, //-m ////mode// fixe les autorisations d'accès. mkdir -p /var/lib/new-app/font/big **mkfifo** - Crée des FIFOs (tubes nommés). //-m ////mode// fixe les autorisations d'accès. mkfifo -m 666 /tmp/fifo_serveur **mknod** - Crée des fichiers spéciaux. //b// ou //c// fichier spécial bloc ou caractère mknod /dev/hda1 b 3 1crée le noeud de numéros majeur/mineur 3/1. **more** - Consulte un fichier page par page (voir //less//) **mv** - Déplace ou renomme des fichiers. //-f// force l'écrasement du fichier destination. for i in *.JPG; do mv $i ${i%JPG}jpg; done renomme tous les fichiers .JPG en .jpg **nice** - Exécute un programme avec une courtoisie d'ordonnancement modifiée. //-n ////valeur// augmente la courtoisie de la valeur. **nl** - Numérote les lignes d'un fichier. //-f a// numérote aussi les lignes vides. **nohup** - Exécute un programme en le rendant insensible aux déconnexions. $ nohup ~/bin/calcul &[1] 17300$ exit **od** - Affiche le contenu d'un fichier en octal ou sous d'autres formats. //-c// affiche les caractères imprimables en Ascii, //-x// affiche les codes hexadécimaux. **passwd** - Change le mot de passe.$ passwd # passwd utilisateur **patch** - Applique une série de modifications à un fichier. //-p////n// enlève //n// répertoires au début des noms de fichiers $ patch -p1 ../new_version/patch_1 **pathchk** - Vérifie la validité d'un nom de fichier. //-p// vérification stricte de la portabilité. if pathchk "$rep/$fic" ; then... **perl** - Interpréteur du langage Perl. //-w// mode de vérification stricte **ping** - Test de liaison entre machines. //-c// nombre de tentatives//-w// délai maximal en secondes **pr** - Prépare des fichiers de texte pour l'impression. //-h ////texte// indique l'en-tête de chaque page, //-l ////n// affiche n lignes par pages, //-t// supprime les en-têtes et pieds de pages. **printf** - Affiche des données numériques formatées. printf "%05d %4.2f" $x $y **ps** - Affiche l'état des processus en cours. //-ax //tous les processus (BSD)//-u// informations complètes (BSD) //-e// tous les processus (SysV) //-f// informations complètes (SysV) //-w// lignes larges. ps -aux (BSD) ps -ef (SysV) **pwd** - Affiche le nom du répertoire de travail. **quota** - Affiche les quotas d'utilisation du disque. **rcp** - Copîe de fichiers entre systèmes différents. **renice** - Modifie la priorité d'un processus en cours. renice +20 14210 **rev** - Inverse les lignes d'un fichier (voir aussi //tac//). **rlogin** - Connexion sur un système distant(préférer //ssh//) **rm** - Efface des fichiers. //-f// pas de confirmation, //-i// confirmation avant chaque effacement, //-r// efface récursivement les sous-répertoires. rm -rf /home/usera/tmp **rmdir** - Suppression de répertoires vides. **rsh** - Exécution de commande sur système distant.(préférer //ssh//). **script** - Enregistre une session de travail . -//a ////fic// ajoute le résultat dans le fichier. **sed** - Éditeur non-interactif. //-e "..."// commandes fournies sur la ligne, //-f ////fic// commandes dans un fichier, //-n// supprime l'affichage des lignes traitées. Commandes essentielles de Sed : //p// affiche la ligne sélectionnée //d// ignore la ligne sélectionnée //n// affiche la ligne et passe à la suivante //s// recherche un motif et le remplace sed -ne '1,/^$/p' < mail.txtextrait l'en-tête d'un mail. **sh** - Shell Bourne. **sleep** - Attend une durée déterminée. sleep 14(14 secondes) sleep 3m(3 minutes) **sort** - Trie les lignes d'un fichier texte. //-b// ignorer les blancs en début de ligne, //-f// ignorer les différences majuscules/minuscules, //-r// inverser l'ordre du tri. **split** - Découpe un fichier en différentes partie. //-l ////n// en fichiers de //n// lignes, //-b ////n// en fichiers de taille //n//. split -b 1440k gros_fichier disquette_ **ssh** - Connexion sécurisée sur un système distant. ssh user@hostname ssh -l user hostname /usr/bin/commande **strings** - Cherche les chaînes Ascii dans un fichier **stty** - Configuration du terminal. //-a// affiche la configuration en cours, //sane// revient en configuration normale, //-echo// pas d'écho des caractères frappés, //-icanon min 0 time 1//lecture des caractères à la volée. **su** - Exécute un shell avec un UID et un GID différents. //-// exécute un shell de login. **sum** - Somme de contrôle, et nombre de blocs. **tac** - Concatène et affiche des fichiers à l'envers. **tail** - Affiche la fin d'un fichier. //-////num// affiche le nombre de lignes indiqué, //-f// affiche en continu les modifications. tail -f /var/log/messages **tar** - Utilitaire de gestion d'archives. //-f// //fic// nom de l'archive, //-c// crée une archive, //-t// affiche le contenu d'une archive, //-x// extrait le contenu d'une archive, //-z// invoque Gnu gzip pour les (dé)compressions, //-j// invoque bzip2 pour les (dé)compressions, //-v// mode volubile. tar -czf save.tar.gz /home/usera/* tar -xzf appli-1.10.tgz **tcl** - Interpréteur du langage Tcl (voir aussi //wish//). **tee** - Copie entrée sur sortie standard et dans un fichier. //-a// ajout en fin de fichier sans écrasement. ...| tee hublot_1.log | ... **telnet** - Connexion sur un système distant.(préférer //ssh//) **test** - Type d'un fichier, ou comparaison de valeurs. Synonyme de la commande shell //[...]//. if test -f $fichier ; then **time** - Chronométre une commande simple. **touch** - Modifie l'horodatage d'un fichier. //-t ////MMJJhhmm// utilise l'horodatage indiqué, //-r ////fichier// utilise l'horodatage du fichier, **tr** - Transpose ou élimine des caractères. tr 'àâçéèêïîôöùû' 'aaceeeiioouu'|... **true** - Réussit à ne rien faire... while true; do ... **tty** - Affiche le nom du terminal de l'entrée standard. **uname** - Affiche des informations sur le système. //-m// type de matériel, //-n //nom d'hôte, //-r// version du système, //-s// système d'exploitation, //-a// toutes les informations. **uncompress** - Décompression de fichier .Z. **unexpand** - Convertit les espaces en tabulation. (voir aussi expand) **uniq** - Ôte les lignes dupliquées d'un fichier trié. //-u// n'affiche que les lignes uniques, //-d// n'affiche que les lignes dupliquées, //-c// affiche le nombre d'occurrences des lignes. **unix2dos** - Conversion de textes du format Unix vers Dos. **unzip** - Décompresse un fichier //.zip//. **uptime** - Temps fonctionnement et charge système. **users** - Nom des utilisateurs connectés. **uudecode** - Décode un fichier //.uu//. **uuencode** - Code un fichier binaire en Ascii. **Vi** - Éditeur interactifVersion X-Window : //gvim// **wait** - Attend la fin d'un processus. $ ./commande & [1] 2927 ./commande $ wait 2927 [1]+ Done ./commande **wc** - Nombres de caractères, mots et lignes d'un fichier. **whereis** - Recherche les fichiers exécutables, les sources et les pages de manuel d'une commande. **which** - Affiche le chemin d'accès des commandes. **who** - Montre qui est connecté. **whoami** - Affiche notre UID effectif. **wish** - Interpréteur Tcl avec bibliothèque Tk. **xargs** - Construit et exécute une ligne de commande. find . -name "*.c" | xargs grep "init()" **yacc** - Générateur d'analyseur syntaxique. **yes** - Affiche indéfiniment une chaîne(par défaut 'y')yes | rm -r /var/old-backup/ **zcat** - Affiche le contenu d'un fichier compressé. **zip** - Compresse un fichier. ===== Expressions rationnelles ===== grep, sed, find -regex utilisent des expressions rationnelles //simples//.grep -e, awk, perl utilisent des expressions rationnelles //étendues//. Éléments communs //// supprime la signification des caractères spéciaux,prix=25$ //.// remplace n'importe quel caractère,g.n.rique ^ représente le début de chaîne, $ représente la fin de chaîne, ^$ (ligne vide) //* //indique zéro, une ou plusieurs occurrences, //[ ]// représente une liste, un intervalle ou une classe, [eéêèë][0-9] [ [:upper:] ] ////i contenu du //i//ème regroupement entre parenthèses. Classes de caractères //alpha// caractères alphabétiques, //digit// chiffres décimaux, //xdigit// chiffres hexadécimaux, //alnum// caractères alphanumériques, //lower// minuscules, //upper// majuscules, //blank// caractères blancs, //space// caractères séparateurs, //punct// signes de ponctuation, //graph// symboles visibles, //print// symboles visibles ou blancs, //cntrl// caractères de contrôle d'impression. Éléments des expressions rationnelles étendues //| //représente une alternative,Y|y //+// réclame une ou plusieurs occurrences, //?// réclame zéro ou une occurrence, [+-]? [ [:digit:] ] + //{ }// réclament un certain nombre de répétitions, //( )// regroupent des éléments. [[debian_lenny|retour au menu]]