|
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 nomfile où printer 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
|