Aide sur les machines
Guide des ressources
Les commandes
un petit récapitulatif



Les commandes en ligne sont les instructions de base de commande du système Unix. Elles permettent de manipuler les fichiers et les répertoires de façon plus précise et plus sûre que les applications graphiques. De plus, elles ouvrent la voie vers l'ensemble des langages disponibles sur votre raiseau. Une connaissance meme superficielle des commandes en ligne sert souvent a se sortir d'une situation délicate voir inextricable par un outil graphique.

Les commandes en ligne sont les instructions que vous pouvez demander a l'ordinateur d'exécuter via un shell. Cette fenêtre de commande s'invoque via le menu en séléctionnant (je sais pas quoi) ou simplement en tappant la commande xterm & ou cmdtool &.

Au fait, c'est quoi un shell ?

Un shell est un langage de base pour écrire des programmes simples, interprétés, formés des instructions aue vous utilisez chaque jour dans vos programmes. Bien que la programmation est très facile, leur puissance est limitée si ils ne sont pas combinés à quelques extensions standard à unix telles que sed ou awk. Des langages plus puissants, interprétés et donc moins lourds que le C, en ont découlé, par exemple Perl. Une explication complète de la programmation shell dépasse le cadre de cette page, se référer aux excellents ouvrages de la collection O'Reilly pour plus d'informations.

Comment procéder ?

Pour la gestion des fichiers

ls
affichage du contenu du répertoire.
ll
contraction de ls -l : donne des informations supplémentaires sur les fichiers contenus dans le répertoire étudié. Les autorisations sont notéees de la façon suivante :
rwx owner | rwx group | rwx others (r=read, w=write, x=execute).
Le premier bit marque le type de fichier, notament d pour un directory et rien pour un fichier.
la
contraction de ls -a : affiche les fichiers cachés (commencant par un .). Les fichiers cachés sont des fichiers génerés automatiquement par les programmes, auxquels vous ne devriez pas avoir à toucher dans les conditions normales d'utilisation des machines.
chmod
modification des droits de lecture (Read)/ écriture (Write)/ exécution (eXecute) des fichiers. La sélection se fait en notation binaire par groupe de 3 droits, le bit de poids faible étant l'exécution. Les cas les plus courants sont chmod 777 pour donner tous les droits à tout le monde, chmod 755 pour se donner tous les droits et autoriser les autres a la lecture est exécution. Pour les paranoiaques, chmod 700 retire tout accès aux fichiers aux autres utilisateurs. chmod x nomfile où x est le droit à donner au fichier
quota -v
l'ethique d'utilisation des disques durs n'ayant pas été parfaitement respectée il y a quelques années, il a été necessaure d'instaurer des quotas sur l'espace que chacun peut occuper. Ces quotas sont de 15 Mb, extensibles a 30 Mb pour une période d'une semaine au-delà de laquelle il n'est possible de se logguer que par su (cf plus bas). quota -v donne l'utilisation actuelle du dique en kb (meme chose que cd;du-ks).
rm
efface un fichier. ATTENTION : effacer un fichier sur le système unix est a peu près irrémediable (le fichier sur le disque est perdu et le suel espoir est de déranger root pour qu'il cherche dans les sauvegardes effectuées régulièrement). Cette commande, bien que très importante, est à utiliser avec précaution. Plusieurs options qui ne seront pas discutées ici requièrent une attention toute particulière du fait de leur puissance dévastatrice ...
cp
copie du fichier. Le fichier est dupliqué dans le répertoire de destination. cp nomfile destination
mv
déplace les fichier si le 2ème argument est un nom de répertoire, ou renomme le fichier dans le nom du 2ème argument si ce dernier n'est pas un fichier déjà existant. Le fichier destinataire étant effacé s'il existe déjà, une demande d'autorisation est formulée pour vérifier qu'il n'y a pas erreur.mv nomfile destination
mkdir
création d'un sous repertoire. La structure arborescente des répertoires est très utile dès que plusieurs fichiers existent. Les sous-répertoires sont un moyen de regrouper les fichiers de même origine ou liés a un même projet. Il est fortement conseillé, pour s'y retrouver, de conserver une arborescence claire et facile à accéder. mkdir nomdir : vous devez bien entendu avoir les droits d'écriture dans le directory où vous créez votre nouveau répertoire.
rmdir
efface un sous répertoire. Cette commande ne peut etre exécutee que si le repertoire a effacer est vide de tout fichier ou sous répertoire. Penser à regarder pour des fichiers cachés (commencant par un .) si le répertoire ne veut pas partir. rmdir nomdir
ln
lien de fichier. Cette commande permet de lier un fichier distant (dans un autre compte par exemple) à un répertoire qui vous appartient. Ceci évite d'avoir a chaque fois à retapper le path complet tout en économisant la place sur le disque dur puisque le lien n'est pas une copie physique du fichier. ln -s fichier_à_lier destination
du
donne les détails de l'espace occupé par chacun de vos repertoires. Cette commande permet, lorsque vous êtes en over-quota, de savoir où aller effacer les fichiers les plus encombrants. La taille est donnée en mutiples de 512 Ko. du -k pour avoir l'espace occupé en kilo-octets.

Pour l'impression

lpr
impression d'un fichier. Envoi une demande d'impression à l'imprimante. Les imprimantes laser attendent un fichier Postscript. Rappelez vous qu'il y a un quota de 250 pages sur les impressions laser. Le choix de l'imprimante se fait en introduisant -Pnomprinter entre la commande et le nom de fichier. lpr -Pprinter nomfileprinter est soit lw106 ou lw109.
enscript
permet de convertir du texte en Postscript
lpq
demande du status de l'imprimante. Cette commande est utile pour savoir combien de personnes sont devant vous sur la liste d'attente des impressions et si une commande précédente envoyée à l'imprimante a bien été interprétée. lpq -Pprinter où printer est soit lw106 ou lw109.
lprm
efface une demande d'impression. Utile si un fichier a été envoyé par erreur a l'imprimante ou si on vient de se rendre compte que ce sont 500 pages qui viennent de partir dans la mémoire de l'imprimante :). Il est bien entendu nécessaire d'être propriétaire du job pour pouvoir l'effacer. Il semblerait de plus qu'il faille être sur l'ordinateur émetteur de la commande pour que lprm soit pris en compte.
consommation-laser
un quota sur le nombre d'impressions est installé et vous limite a 250 impressions gratuites. Régulierement, l'administrateur système (root) affiche en salles machines la consommation en impressions de chacun. Entre ces affichages, il est possible de connaitre le nombre d'impressions effectuées au moyen de la commande consommation-laser. Cette commande n'est PAS standard en Unix (shell dans /usr/local/bin/consommation-laser).

Pour le traitement de fichiers

more
affiche le contenu d'un fichier en s'arrêtant a chaque page. more contient des options intéressantes tel qu'un acces possible a vi (tapper sur v lors de la visualisation du fichier), recherche de chaine de charactère (/chaine recherche la chaine dans le texte) et remontée dans le texte (b). Cette instruction est très utile pour rapidement étudier le contenu d'un fichier contenuant du texte (dit fichier ASCII). more nomfile : more a un alias appelé m
cat
affichage du contenu d'un fichier sans interruption. Sert généralement en pipe (cf plus bas) avec une autre commande. cat nomfile
head
affiche l'entête (les 5 premieres lignes) d'un fichier. Très utile pour connaitre l'origine d'un programme ou l'entête d'une source C. head nomfile
tail
affiche les 5 dernières lignes d'un fichier. Moins utile (parfois pour rapidement consulter son mail). tail nomfile ou pour consulter l'évolution d'un fichier de sauvegarde pendant sa création : tail -f nomfile
grep
recherche d'un terme dans un ensemble de fichier. Utile pour retrouver l'utilisation d'une instruction dans une série de programmes par exemple, ou pour filtrer une information d'un ensemble de fichiers. Une version améliorée et plus rapide mais plus complexe à utiliser se lance avec egrep. grep chaine fichiers
>
redirige la sortie standard (stdout : l'écran de votre ordinateur par defaut) vers un fichier qui ne doit pas encore exister. Le fichier est créé et rempli des données émanant du programme appelant. Cette commande est notament utile en fin d'une série de pipes (cf plus bas).
<
redirige l'entrée standard (stdin : le clavier par défaut) de façon à ce que les données traitées ne viennent pas du clavier mais d'un fichier. Utile notament pour include des fichiers dans les mails.
>>
concaténation de données en fin d'un fichier existant déjà. La sortie standard (stdout) est redirigé à la fin du fichier qui doit déjà exister. La commande touch permet eventuellement de créer un fichier vide si nécessaire.
|
ce petit signe est un des éléments les plus puissants des shells unix. Il permet d'envoyer le resultat du traitement d'un fichier vers l'entrée d'un autre programme, permettant ainsi d'effectuer des traitements multiples en serie d'un fichier. | redirige stdout tandis que |& redirige stdout ET stderr (exemple : find / -name file -print |& grep file retire tous les messages inutiles lors de la recherche)

En cas de problème

man
c'est une aide en ligne très puissante. Chaque instruction ou programme écrit pour Unix est accompagnée d'un fichier décrivant son utilisation et ses options. Cette aide est obtenue en tappant man <nom de la commande>. ATTENTION : Unix etant écrit en C, il arrive souvent que des commandes éxistent à la fois pour le langage C et pour un shell unix (cf man 1 chmod est Unix, man 2 chmod est C). Il est donc parfois nécessaire de chercher un peu plus profondément quelle man page on cherche (cf man man :). man -a commande est sûrement la commande LA PLUS IMPORTANTE d'Unix à connaitre.

Les répertoires à connaitre

/tmp
un espace d'une trentaine de Mb est laissé à la disposition du public sur chaque machine pour la durée de la session de travail. Il n'y a aucune limitation sur cette zone du disque dur : tout le monde peut y écrire ou en lire les données. C'est une zone temporaire de stockage sur laquelle il ne faut pas trop faire confiance puisqu'elle peut être effacée par un autre utilisateur ou au reboot (redémarrage) d'une machine plantée.
/var/tmp
comme le /tmp, mais cette zone est un peu plus sûre puisqu'elle n'est pas effacée lorsqu'une machine est rebootee (relancée).
/soft/eleves
la zone élèves du disque dur. Trois responsables informaticiens en possèdent l'accès en écriture. C'est là que se trouvent le jeux et autres utilitaires. Les reponsables peuvent être contactés par mail soft.eleves
/var/mail
la zone de stackage du courrier électronique. Permet de connaitre la taille de sa boite aux lettres ou de consulter rapidement son courrier.
/etc
contient, avec l'arborescence qui en descend, les fichiers de configuration du réseau et du système... Intéressant mais pas indispensable.

Divers

alias
sert à lier une série d'instructions à une commande unique. Vous pouvez ainsi simplifier une longue série d'instruction en une seule commande plus simple à tapper. Lancer alias sans argument donne les alias déjà définis. Exemple : alias sound '/usr/openwin/bin/audiotool & ;/usr/demo/SOUND/bin/gaintool &' me permet de simplement taper sound pour lancer toute la série d'instructions qui suit.
su
permet de remplacer un utilisateur par un autre dans la fenêtre de commande où cette instruction est lancée.
autres langages
Un certain nombre de langages ont été développés pour permettre un traitement puissant et rapide d'une grande quantité d'informations. Nous avons ici notament awk, sed, et perl qui est en fait une combinaison de C et des deux précédents. Je vous laisse le soin d'étudier ces commandes trop puissantes pour être développées ici (de nombreuses pages d'apprentissage sont disponibles sur www).
fichier de configuration
tout shell possède un fichier de configuration lu par défaut lors du lancement du shell correspondant : .cshrc pour le csh (par défaut) et .profile pour le sh notament. Ces fichiers contiennent notament les définitions de variables d'environnement, des alias et des configurations personnelles.
vi
c'est l'éditeur par défaut sous Unix. Bien que moin convivial que textedit (ou emacs), il est beaucoup plus rapide et en possède toutes les fonctions de bases (mais tout de même très puissantes). Il est utile d'en connaitre les commandes de base puisque c'est un éditeur que vous êtes certain de trouver sur toutes les station Unix que vous serez amenés à utiliser. Sa rapidité et simplicité en font un outil idéal pour envoyer les mails ou les news. Lors du lancement vous vous trouvez en mode commande : tapper sur i pour se mettre en mode insertion, R pour écrire par-dessus le texte (Replace) ou A (append) pour pouvoir taper son texte. On revient en mode commande en appuyant sur [ESC ] (escape) après être entré dans un de ces modes. En mode de commande, la recherche d'un terme se fait par /, J pour joindre deux lignes, $ pour aller en fin de ligne, ] pour aller en fin de texte, [ pour aller en début de texte... (man vi pour plus d'informations. Sauvegarde du texte par ZZ et quitter sans sauver par :q!. Il est aussi possible de lancer un shell à partir de vi, mais nous n'allons pas entrer dans les détails ici ...
PS : quelques programmes utiles et standards d'archivage et de compression :
tar pour l'archivage. Archive par tar -cvf nomfile * et désarchive par tar -xvf nomfile (penser à se mettre dans un répertoire spécialement créé à cet effet dans votre directory pour ne pas se retrouver avec plein de fichiers partout). Tar étant un dinosaure d'Unix, le - est facultatif (le standard n'ayant pas encore été établi à cette époque).
gzip et compress pour compresser des fichiers, et gunzip et uncompress pour les décompresser.
uudecode pour décoder un fichier binaire converti au préalable par uuencode, généralement utilisé pour encoder des images ou des programmes dans les mails/news.

Plusieurs pages plus complètes (et complexes) ont déjà été écrites sur la programmation shell, voir :


tutorial de C
#unix homepage : FAQ des instructions de bases
TCSH man page
UNIXhelp for users
meme chose en francais

Dernière mise à jour : 24/10/1999
Page maintenue par Alexandre.Denis@ens-lyon.fr