PRECEDENT | SOMMAIRE | SUIVANT |
Rappelons qu'il existe deux types de commandes: les commandes shells (commandes internes) que le shell interprète directement comme la commande cd pwd ..., et les commandes UNIX (commandes externes) qui sont des fichiers exécutables (binaires ou scripts shell, voir section7) dont le shell lance l'exécution. Les commandes binaires se trouvent en générale sous les répertoires /bin ou /usr/bin. L'exemple suivant utilise la commande time qui imprime le temps d'exécution de la commande passée en argument. time existe en deux versions, commande shell et commande UNIX. La priorité est donnée à la commande interne. Pour la commande UNIX time il faut taper dans ce cas le chemin complet du fichier binaire concerné.
%time cp f1 f2
0.0u 0.5s 0.01 33% 0+168k 0+44io 111pf+0w%/bin/time cp f1 f2
1.4 real 0.0 user 0.6 sys
Une commande UNIX, ainsi que ses arguments éventuels, sont donc des fichiers. Or un nom de fichiers est un chemin d'accès: par rapport au répertoire courant (chemin relatif, ne commençant pas par /) ou par rapport à la racine du système (chemin absolu, commençant par /). Ainsi
%com arg
est la demande d'exécution de com avec le fichier arg en paramètre. com, chemin relatif, est d'abord cherchée sous le répertoire courant ensuite sous le répertoire utilisateur bin (s'il existe). Sinon, dans la liste des répertoires mentionnés par la variable d'environnement PATH (attention, l'ordre de cette liste est significatif). De même, arg est cherché dans le répertoire courant. Deux éventualités peuvent se produire:
com: Command not found.
ou
arg: No such file or directory
Dans un cas, la commande n'a été trouvée ni dans le répertoire courant, ni dans la liste path. Soit elle n'existe pas (erreur de nom, ou fichier non encore créé), soit il manque un répertoire dans la liste path. Dans ce dernier cas, il faut taper le chemin complet ou rajouter le bon répertoire à la liste path.
Dans l'autre cas, le fichier argument n'a pas été trouvé dans le répertoire courant. Taper son chemin complet (relatif ou absolu), si on est sûr qu'il existe quelque part, ou corriger le nom.
% cp t ici
cp: t: No such file or directory
% cp /shems/users/roudies/t ici
% cp ../roudies/t here% emacs ici
emacs: Command not found
% /usr/local/emacs ici
Il faut tout un ouvrage pour traiter les commandes UNIX. Nous nous contenterons ici d'en citer quelques unes des plus courantes (y compris des commandes internes shell), groupées par catégories, avec un rapide commentaire sur leur usage y compris quelques options. Ce sont principalement les commandes du chapitre 1 du manuel de référence UNIX. On peut (et doit) souvent faire man commande pour un bon usage des commandes UNIX.
Remarques: Dans la syntaxe des commandes nous indiquerons uniquement les arguments éventuels. Des options s'il y en a, viennent bien sûr avant ces argument. Des noms mnémoniques, assez courants pour certaines options et à retenir sont: -a (all) pour toutes les options, -l (long) pour l'affichage de toutes les informations (format long), -i (interactive) pour un mode confirmation et -r (récursif) pour un parcours récursif des sous répertoires.
Ce sont des commandes générales relatives à l'information et le suivi d'une session UNIX.
csh
Lancement de l'interprète de commande csh.
env
Liste des variables environnement.
id
Donne l'identité utilisateur sous UNIX: numéro et nom d'utilisateur et de groupe.
% id uid=272(tounsi) gid=20(other) groups=20(other)
login [utilisateur]
Lance une nouvelle session qui remplacera celle en cours. Avec un paramètre utilisateur, elle permet de basculer d'un utilisateur à un autre. Avec une option -p, les variables environnement existantes sont préservées.
logname
Donne le nom (du login) de l'utilisateur.
pwd
(print working directory) Affiche le nom du répertoire courant .
script [fichier]
Enregistre dans le fichier donné en paramètre (défaut typescript) la trace <<script>> d'une nouvelle session shell lancée à cet effet. Tout ce qui sort sur l'écran du terminal est aussi enregistré dans ce fichier. script termine quand la session shell correspondante est terminée. Avec une option -a (append), le fichier script est rallongé. Voici un exemple, où on a utilisé un prompt historique pour montrer le nouveau shell.
<17>script monScript
Script started, file is monScript
<1>pwd
/shems/users/tounsi
<2>echo le fond de l air est frais
le fond de l air est frais
<3>cat monScript <--- script non encore créé
<4>Script done, file is monScript <--- après frappe de ^D
<18>cat monScript
Script started on Fri Jul 7 17:39:05 1995
<1>pwd
/shems/users/tounsi
<2>echo le fond de l air est frais
le fond de l air est frais
<3>cat monScript
<4>^D
script done on Fri Jul 7 17:39:31 1995
<19>
tty (teletype)
Affiche le nom (chemin absolu) de la référence du terminal entrée standard.
%tty /dev/ttyp3 %tty <data not a tty
clear
Efface l'écran, et ramène le prompt en haut a gauche. stty [arguments] (set tty) Commande très utile. Elle fixe ou informe sur les caractéristiques de fonctionnement d'un terminal. Nous en donnerons uniquement quelques exemples. Pour les détails complets voir man stty.
%stty speed 9600 %stty size 24 80
donnent respectivement la vitesse de transmission (ici 9600
bauds) et les dimensions en caractères du terminal (ici
24 lignes, 80 colonnes). Avec l'option -a (stty
-a) stty affiche toutes les
caractéristiques actuelles du terminal. Exemple:
%stty -a
Pour ce qui concerne les caractères de
contrôle, on peut les fixer ainsi:
stty erase ^?
permet de rendre ^? (touche del) caractère backspace (qui est aussi parfois ^H). (Taper ^ et ? ou appuyer sur del).
stty kill ^U
^U devient effacement de ligne lors de la frappe d'une commande.
stty werase ^W
^W devient effacement du dernier mot tapé. D'autres options sont eof (défaut ^D), intr (défaut ^C), stop/start (défaut ^S/^Q) etc... Attention ne pas s'amuser à les modifier à tort et à travers, surtout eof. stty permet aussi de gérer le mode d'entrée/sortie du terminal. Comme l'E/S bufferisée (mode canonique) où les caractères sont envoyés par lignes, après frappe de return. L'autre mode, non canonique (stty -icanon) comme sous vi ou emacs, les caractères sont envoyés dès leur frappe. Ce mode est obtenable par: "stty min 1 time 0".
Remarque: Parfois le terminal se met en mode majuscule (indépendamment de shift). Faire
STTY -LCASE
pour s'en sortir (LowerCASE).
date
Imprime la date du jour.
df
(display free) Informe sur l'état (noms, espaces libres/occupés, montages ...) des systèmes de fichiers (disques logiques).
du [chemin]
(disque usage) Informe sur la quantité d'espace utilisé par le fichier ou répertoire en argument. Par défaut le répertoire courant. Avec une option -a (défaut) l'information est donnée pour tous les fichiers du chemin. Avec -s, seul le total de chaque répertoire est donné. Ainsi
% du -s BOOKS
2643
donne la taille du répertoire BOOKS en Kilo-octets.
finger nomLogin
Donne l'identité, le répertoire du travail, la date de dernière connexion etc... de l'utilisateur en paramètre. Si les fichiers .projet et .plan, sensés contenir le projet et le plan de travail d'un utilisateur existent dans son répertoire, leur contenu est aussi imprimé. finger nomLogin@host marche pour un utilisateur sur un autre site. finger @host par contre, donne la liste des personnes connectées au le site host. Voir aussi who.
who
Informe sur les utilisateurs actuellement connecté(e)s au système, leur terminal et la date de connexion.
who am i, n'informe modestement que sur soi. w Comme who, mais donne ce que fait chaque utilisateur [8].
% finger iznogoud
Login name: iznogoud In real life: Grand Vizir IZNOGOUD.
Directory: /shems/users/iznogoud Shell: /bin/csh
On since Jul 9 18:20:28 on ttyp0 from shems
Mail last read Tue Jul 4 11:46:02 1995
Project: Devenir Calif a la place du Calif
No Plan.
% who
ayadi tty03 Jun 22 19:52 (alibaba)
tounsi ttyp0 Jul 9 18:20 (shems)
% who am i
alibaba!tounsi ttyp0 Jul 9 18:20 (shems)
% w
6:25pm up 18 days, 2:37, 2 users, load average: 1.36, 1.27, 1.00
User tty from login@ idle JCPU PCPU what
ayadi 03 alibaba 22Jun93 17days -
tounsi p0 shems 6:20pm w
uname Affiche des informations sur le système présent.
tounsi@shems >uname
SunOS
tounsi@shems >uname -a
SunOS shems 4.1.3_U1 2 sun4m
tounsi@yasmina >uname -a
ULTRIX yasmina 4.4 0 RISC
Sans option, uname affiche le nom du système actuel. Avec une option -a, on a toutes les informations: nom du système, identificateur de la machine dans un réseau, la révision (release) et la version du système et enfin le modèle de la machine (hardware). Avec les options -s, -n, -r, -v, -m on a respectivement chacune des informations ci-dessus.
On a groupé ici les commandes, connues du monde UNIX, qui manipulent des fichiers. Ce sont des commandes très puissantes quand on sait les utiliser ou combiner. La plus connue est cat déjà vue.
cat [fichier [fichier[...]]
(catenate) Affiche sur sa sortie standard, l'un après l'autre les fichiers en paramètre. Défaut, l'entrée standard. Des options intéressantes sont -v pour afficher aussi les caractères de contrôle, ou -n pour numéroter les lignes affichées. Voir aussi la commande more.
chmod mode chemin ... (change mode)
Modifie les droits d'accès et les privilèges associés à des fichiers (ou répertoires). Pour les droits d'accès, iI y a trois catégories d'utilisateurs symbolisées par: u (user) pour le propriétaire, g (group) pour les membres d'une même équipe et o (other) pour tous les autres. Il y a aussi trois privilèges qui sont: r (read) droit de consulter, w (write) droit de modifier et x (execute) droit d'exécuter. Ces informations sont fournies par la commande ls -l sous la forme:
- rwx rwx rwx
signifiant respectivement les privilèges de chaque catégorie d'utilisateur dans l'ordre cité ci-dessus (le premier tirait est le type de fichier, voir plus loin commande ls). On peut faire:
chmod u+x fichier
pour ajouter (+) à soi-même (u) le droit d'exécuter (x) fichier
% ls -l hello
-rw-rw-rw- 1 tounsi 345 Jan 2 11:59 hello
% chmod u+x hello
% ls -l hello
-rwxrw-rw- 1 tounsi 345 Jan 2 11:59 hello
ou
chmod o-w fichier
pour enlever aux autres le droit de modifier fichier.
% chmod o-w hello
% ls -l hello
-rwxr--r-- 1 tounsi 345 Jan 2 11:59 hello
On peut utiliser l'argument a pour tous (au lieu de ugo) comme dans "chmod a+r f" qui donne à tous le droit de lire f. L'usage du signe = sert à affecter un privilège donné ou ceux d'un utilisateur: g=x donne au groupe le droit d'exécuter et g=u donne au groupe les mêmes droit que le propriétaire. Une syntaxe commode est de considérer chaque triplet de privilège comme un chiffre octal. 1 est oui 0 est non.
% chmod 644 hello
% ls -l hello
-rw-r--r-- 1 tounsi 345 Jan 2 11:59 hello
6 4 4 étant 110 100 100, soit
rw-r--r--
L'option -R descend récursivement dans les
sous répertoires pour faire chmod.
chown propriétaire chemin
(change owner) Modifie le propriétaire d'un fichier ou répertoire. Le nouveau propriétaire devient celui indiqué. Ne pas confondre avec chmod! L'option -R (majuscule) descend récursivement dans les sous répertoires pour faire chown.
cmp fichier_1 fichier_2
(compare) Compare les deux fichiers arguments. Ne sort rien si les deux fichiers sont identiques, sinon indique l'octet et le numéro de ligne où les deux fichiers différent. Avec l'option -l, affiche les valeurs octales et le numéro de tous les octets qui diffèrent. Voir aussi comm et diff.
comm fichier_1 fichier_2
Compare aussi les deux fichiers, mais supposés triés par ordre ASCII (voir sort). Affiche sur 3 colonnes et dans cet ordre: les lignes du fichier_1 ne se trouvant pas dans fichier_2, les lignes du fichier_2 ne se trouvant pas dans fichier_1 et les lignes communes (common) aux deux fichiers.
% cat f1
ali
brahim
cherifa
dalila% cat f2
ali
chafik
farid% comm f1 f2
ali
brahim
chafik
cherifa
dalila
farid
%
Des options sont -123, pour ôter de l'affichage, la ou les colonnes de numéro donné. Voir aussi cmp et diff.
cp fichier_1 fichier_2
cp fichier ... répertoire
cp -r répertoire ...
répertoire
(copy) Copie fichier_1 sur fichier_2, ou la liste des fichiers fournis en argument dans le répertoire spécifié en fin de liste, ou la liste des répertoires fournis dans le répertoire spécifié aussi en fin de liste. L'option -r (copie récursive des sous répertoires) est nécessaire dans ce dernier cas. L'option -i (copie interactive) demande confirmation pour chaque fichier copié. Voir aussi mv.
csplit [prefixe] [fichier] arg_1 [... arg_n]
(contexte split) Eclate un fichier (défaut entrée standard) en n+1 morceaux, de longueur variant selon les arguments fournis. Chaque fichier résultat est appelé par défaut xx00, xx01, ... et contiennent respectivement les lignes 1 à arg_1 exclue, arg_1 à arg_2 exclue ... du fichier de départ.
% cat f1
ali
brahim
cherifadalila
% csplit f1 2 4
% cat xx00
ali
% cat xx01
brahim
cherifa
% cat xx02
dalila
On peut renommer les fichiers résultats par l'option
-f prefixe qui remplace la chaîne
xx par le prefixe fourni. Un usage (voir le manuel) plus
élaboré de cette commande et qui utilise les
expressions régulières (cf. grep) est
possible. Voir aussi les commandes split,
cut, fold
et paste.
cut -fliste [-ddelimiteur] [fichier]
Extrait des colonnes d'une table ou des champs de chaque ligne d'un fichier (à la manière de projection d'une relation en terme base de données). Par défaut les champs ou colonnes sont délimités par le caractère <tab> ou <fin de ligne>, et l'option -d permet justement de préciser un autre délimiteur. La liste des champs sélectionnés, numérotés à partir de 1, est donnée par l'option -f. On peut y utiliser la syntaxe intervalle n-m. Si n (resp. m) est absent, il vaut 1 (resp. fin de ligne). -f2-4,8 veut dire les champs 2,3,4 et 8, -f-2 les 2 premiers champs, et -f4,7- le champ 4 et les champs de 7 à la fin. Dans une autre forme:
cut -cliste [fichier]
Extrait de chaque ligne du fichier les caractères sélectionnés par liste (qui s'applique aux caractères dans ce cas). cut -c 1-9,30- extrait dans chaque ligne les 9 premiers caractères et tous les autres à partir du 30ème. Voir aussi cspilt paste et fold.
diff fichier_1 fichier_2
Affiche ligne par ligne la différence entre les deux fichiers textes. Son intérêt réside dans le fait que le résultat produit (avec l'option -e) est un ensemble de commandes de l'éditeur ed, permettant de constituer une version de fichier à partir d'une autre. diff ignore les blancs (espace, tab) si L'option -b est présente. Voir aussi cmp et comm.
file fichier...
Détermine le type d'un fichier (ASCII, binaire, répertoire, source C etc.) en examinant son contenu. Elle utilise pour cela les premiers octets (magic number) d'un fichier et la base de données /etc/magic. Donne empty si un fichier est vide.
% file . hello.c .login hello.o data monTexte mbox
. : directory
hello.c: c program text
.login: shell commands
hello.o: sparc executable not stripped
donnees: data
monTexte: ASCII texte
mbox: mail folder
find répertoire arguments
Commande très puissante qui cherche récursivement dans le répertoire mentionné, les fichiers qui satisfont les critères fournis en arguments, et entreprend une action fournie aussi en argument. Quelques exemples en illustrent l'usage.
find . -name core -print
cherche sous le répertoire courant les fichiers de
nom core
(argument -name core) et imprime leur
chemin d'accès (argument -print).
find $HOME -name core -exec rm {} \;
fait de même - sous le répertoire utilisateur cette fois-ci - mais supprime (rm) les fichiers core s'ils existent. L'action ici, est une commande introduite par l'argument -exec. les {} représentent le fichier courant - trouvé par find - et \; marquent la fin de la commande (le \ enlève la signification shell du ';'). On peut utiliser des noms génériques. On supprimera tous les fichiers .o par:
find $HOME -name "*.o" -exec rm {} \;
Remarque: Si rm est aliasée, l'alias ne fonctionne pas. faire plutôt
find ... -exec rm -i {} \;
D'autres critères sont indiqués par les arguments suivants:
-type t recherche en testant le type de fichier. t parmi: d (directory), f (fichier ordinaire), c (fichier spécial caractères), l (lien) etc...
find . -type d -print
imprime le nom de tous les sous répertoires du répertoire courant.
-newer f teste si un fichier est modifié plus récemment que le fichier f.
-size n est vrai si le fichier trouvé est de taille n, exprimé en blocs de 512 octets.
-atime n (resp. -mtime n) teste si le fichier a été accédé en consultation (resp. en modification) dans les n jours. Avec -n voulant dire moins de n jours, +n plus de n jour et n exactement n jours.
-user u teste sur le propriétaire du
fichier trouvé. Vrai s'il est u (nom login ou
numéro uid).
etc... On peut combiner les critères par:
énumération pour la conjonction et,
! pour la négation d'un critère, -o
pour la disjonction ou de critères et
parenthèses \( \) pour le groupement. Pour
enlever les fichiers a.out ou core
et qui ne sont pas des répertoires on a:
find . \( -name a.out -o -name core \) ! -type d -exec rm -i {} \;
Remarque: La syntaxe de find est très précise. Attention aux blancs séparateurs. Utiliser \ pour enlever leur signification shell aux caractères '(', ')', et ';'
fold [-wlargeur] [fichier...]
Découpe les lignes d'un fichier pour les fixer à une largeur largeur donnée par l'option -w. Cela sert par exemple à sortir un fichier sur un support de largeur limité tel un listing 80 colonnes, valeur par défaut de largeur. Avec une option -s, les lignes sont coupées à l'espace précédent la largeur désirée (pour ne pas couper brutalement). Voir aussi cut et paste.
grep expression [fichier...]
(Globally search Regular Expression and Print) Cherche dans les fichiers donnés, les lignes qui s'apparient avec un motif donné par l'expression régulière. Par défaut, l'entrée standard est utilisée. Une expression régulière [9] est une chaîne qui combine des caractères fixés ou génériques pour représenter un motif (à la façon d'une grammaire). Très brièvement on a:
caractère * | : | répétition d'un motif un certain nombre de fois, y compris 0. |
caractère . | : | un caractère quelconque sauf fin de ligne. |
[] | : | Définition d'un motif par énumération d'un ensemble de caractères, y compris '*' '[' et '.'. Le caractère '-' est indicateur d'intervalle x-y sauf en début ou fin d'énumération. |
En outre, $ signifie fin de ligne quant il est
juste après une expression, et ^ signifie
début de ligne s'il est en début d'expression ou
complément d'ensemble, s'il est juste après
[ qui marque le début d'un ensemble. Un \
fait perdre sa signification à un caractère
spécial.
% grep tounsi /etc/passwd
tounsi:BerFtYukN:272:15:Najib TOUNSI Pr. Ass.:/shems/users/tounsi:/bin/csh
% grep '^[a-zA-Z]*$' t.c <--lignes de t.c ne contenant que des lettres do
else
% nl chapitre1.pr | grep -e "-[0-9][0-9]*-"
56 -1-
113 -2-
... ...
635 -12-
La dernière ligne commande est pour chercher les
numéros de lignes où se trouve la
numérotation de pages dans le fichier texte
chapitre1.pr . nl est là pour
numéroter les lignes du fichier qui est ensuite
envoyé à grep. L'expression
recherchée est de la forme -n- ou -n...n-
où n est un chiffre. Ici, l'option -e est
utile quand l'expression commence par un caractère -. Le
sens de l'expression est donc: un tirait, suivi d'un chiffre
ensuite d'un certain nombre de fois un chiffre et enfin un
tirait. La commande egrep (extended grep) utilise
la syntaxe complète des expressions
régulières, où |
entre deux motifs signifie l'un ou l'autre des motifs,
+ après un motif signifie
répétition au moins une fois du motif et
? après un motif le rend facultatif
(répétition 0 ou 1 fois).
head [-n] [fichier...]
Donne les n premières lignes (défaut 10) des fichiers spécifiés (défaut entrée standard). Voir aussi tail.
ln nomFichier nomLien
ln fichier... répertoire
Crée un nouveau nom, appelé lien, associé à un fichier existant. Un fichier peut avoir autant de liens que possible (à l'image des pointeurs qui pointent sur un même objet). nomFichier est le nom original du fichier et nomLien le nouveau nom. Dans la seconde forme, où le dernier argument est un répertoire, ln crée dans ce répertoire des liens de même nom vers les fichiers arguments. L'exemple suivant crée un lien tprime sur le fichier t:
% cat t
Benali Ali
Bensaid Said
% ln t tprime
% cat tprime
Benali Ali
Bensaid Said
% ls -l t tprime
-rwr--r-- 2 tounsi 24 Jul 14 18:00 t
-rwr--r-- 2 tounsi 24 Jul 14 18:00 tprime
Le nombre 2 dans la 2e colonne de ls -l indique le nombre de liens sur un fichier (ici deux). L'exemple suivant crée un lien vers le fichier t dans le répertoire rep:
% ln t rep
% cat rep/t
Benali Ali
Bensaid Said
% ls -l rep/t
-rwr--r-- 3 tounsi 24 Jul 14 18:00 t
Noter que t a le même nom, et que le nombre de liens est passé de 2 à 3. Remarque: Lors de la suppression par rm, un fichier n'est définitivement perdu que si on supprime son dernier lien.
Avec l'option -s ln crée un lien dit symbolique. Un lien symbolique est une entité qui contient le nom du fichier origine.
% cat ts
Benali Ali
% ln -s ts tsprime
% ls -l ts tsprime
-rw-r--r-- 1 tounsi 11 Nov 1 11:31 ts
lrwxr-xr-x 1 tounsi 2 Nov 1 11:31 tsprime -> s
% cat tsprime
Benali Ali
% file tsprime
tsprime: symbolic link to ts
% rm ts
% cat tsprime
% tsprime: No such file or directory
Comparer les caractéristiques données par
"ls -l" pour les deux fichiers. En particulier le type
l
pour lien. Noter aussi que la suppression du fichier
d'origine se répercute sur le lien (contrairement
à l'autre type de lien). En outre, un lien symbolique
peut se faire à travers 2 systèmes de fichiers
différents.
ls [chemin ...]
(list) Liste le contenu de chaque répertoire donné en argument, ou le nom des fichiers arguments avec d'autres informations selon les options choisies. Les principales options sont:
-a qui permet d'afficher aussi les fichiers cachés (commençant par . comme .login)
-l (format long) qui donne le type (- fichier ordinaire, d répertoire, l lien symbolique etc...) du fichier, son mode (bits de protections) , le nombre de liens, le propriétaire, la taille en octets, la date de dernière modification et le nom du fichier.
-d si l' argument est un répertoire, il n'est pas examiné. Utile avec -l.
-F pour distinguer entre les références affichées. Les répertoires sont suivis de / et les fichiers exécutables de *.
mkdir répertoire
(make directory) Crée un répertoire vide. Les références . (répertoire lui-même) et .. (répertoire parent) y sont inclus automatiquement. L'option -p permet de créer un répertoire en profondeur avec tous les sous répertoires intermédiaires.
more [fichier]
Affiche page par page sur un écran le contenu d'un fichier. un prompt "more " apparaît en bas de page avec le pourcentage du fichier déjà visualisé. L'affichage de la suite se fait ligne par ligne (touche espace) ou page par page (touche return). Par ailleurs, un certain nombre de commandes est possible avec ce prompt more. Par exemple h permet d'avoir la liste de ces commandes. On peut commencer l'affichage à partir d'une ligne de numéro donné (option +n) ou contenant une chaîne (option +/chaîne). Laquelle chaîne peut être une expression régulière (cf. grep). Voir aussi cat.
mv nom_1 nom_2
mv nom ... répertoire (move)
Déplace (renomme en fait) un fichier ou un répertoire. Dans le premier cas, la référence , fichier ou répertoire, de nom nom_1 est changée en nom_2 (si cette derniere existe elle est d'abord supprimée). Dans le second cas, une ou plusieurs références sont déplacées, avec leur nom d'origine, dans le répertoire spécifié . L'option -i, entraîne une demande de confirmation. Voir aussi cp (et ne pas confondre avec).
paste fichier_1 fichier_2 ...
Fusion horizontale (opposé de cat) de deux ou plusieurs fichiers. Les lignes de chaque fichier sont concaténées, avec le caractère <tab> comme séparateur, et le résultat est imprimé sur la sortie standard. Avec une option -dlist, les caractères de list sont utilisés à tour de rôle comme séparateurs au lieu de <tab>.
% cat f1 Benali
Bensaid
% cat f2
Ali
Said
cherif
% paste -d"," f1 f2
Benali,Ali
Bensaid,Said
,Cherif
%
rm ficher ...
(remove) Supprime les entrées correspondant à un ou plusieurs fichiers. Si l'une de ces entrées est le dernier lien sur un fichier, celui-ci est perdu. Les options sont -i pour une demande de confirmation, -f pour forcer la suppression si le fichier est protégé en écriture et -r pour supprimer récursivement tout le contenu d'un répertoire, ses sous répertoires et le répertoire lui-même (si l'argument est un répertoire). Voir aussi rmdir. Voir aussi rm.
rmdir répertoire ...
(remove directory) Supprime tout répertoire nommé en argument. Ce dernier doit être vide (faire rm -r autrement).
sort [fichier ...]
Tri lexicographique des lignes du ou des fichiers donnés (défaut entrée standard). Le résultat est affiché sur la sortie standard (ou sur fichierSortie avec l'option -o fichierSortie). Les lignes d'un fichier à trier peuvent être décomposées en champs de tri, qui sont des mots séparés par tab ou espace (ou car avec l'option -tcar). Ces champs sont numérotés à partir de 0. Ainsi, l'option +n, fait le tri à partir du champ numéro n, et avec l'écriture +n -m, le critère de tri s'arrête avant le champ m. Avec l'option -n, le champ numérique en début de ligne est traité comme nombre. Avec une option -b, les blancs sont ignorés en début de champs. L'option -r inverse l'ordre de tri.
% cat f1
3 Benali Ali
2 Alaoui Said
1 Charif Aziz
% sort f1
2 Alaoui Said
1 Charif Aziz
3 Benali Ali
% sort -n f1 <---
premier champ numérique 1 Charif Aziz
2 Alaoui Said
3 Benali Ali
% sort -b +1 f1 <--- ignorer blancs
2e champ 2 Alaoui Said
3 Benali Ali
1 Charif Aziz
% sort -b +2 f1 <--- ignorer blancs
3e champ 3 Benali Ali
1 Charif Aziz
2 Alaoui Said
%
split [fichier [préfixe]]
Lit le fichier et le découpe en morceaux de n lignes chacun (défaut 1000 lignes). n peut être fourni avec l'option -n. Les noms des différents morceaux résultats commencent par préfixe (défaut x) et se terminent par aa, ab, ... zz. Cette commande est moins élaborée que csplit.
tail [fichier ...]
Extrait les dernières lignes d'un ou plusieurs fichiers et les affiche sur la sortie standard. La position d'extraction est donnée en nombre de lignes (défaut ou option l)) par +/-n, où +n signifie à partir de la nème ligne par rapport au début de fichier et -n par rapport à la fin de fichier. Défaut -10, les dix dernières lignes. Les options b ou c expriment quant à elles, la position en nombre de blocs ou de caractères respectivement. Avec l'option r l'affichage se fait de la fin du fichier jusqu'à la position exprimée. Attention, ces options, lbcr sont collées à +/-n et r ne s'applique pas avec b ouc. Voir aussi head.
% cat t a b c d e f % tail +3 t c d e f % tail -3 t d e f |
% tail
-4c t e f <--- les returns comptent % tail +4r t f e d % tail -4r t f e d c |
touch fichier ...
Rend la date de dernier accès au fichier égale à la date du jour, ou celle spécifiée par date avec l'option -t date (format mmjjhhmm[aa]) ou celle du fichier autre avec l'option -r autre. On peut modifier uniquement la date d'accès en lecture, option -a, ou en écriture, option -m. touch est surtout utile en conjonction avec l'utilitaire make, qui se base sur ces dates pour faire un traitement. Si le fichier argument de touch n'existe pas, il est créé vide. C'est donc aussi un moyen de créer des entrées dans un répertoire.
uniq entrée sortie
Reporte les lignes répétées d'un fichier. Lit le fichier entrée et élimine les lignes répétées une ou plusieurs fois. Le résultat est écrit sur le fichier sortie. Pour un fichier quelconque, il vaut mieux lui appliquer sort avant, pour rendre les lignes doubles adjacentes. Des options -u (ne conserver que les lignes uniques) et -d (ne conserver que les lignes doubles) sont possibles. Leur combinaison est donc par défaut. L'option -c fait précéder chaque ligne de son nombre d'occurrence. (Voir aussi sort)
% cat toto
a
c
b
a
b
% sort toto |uniq -c
2 a
2 b
1 c
%
wc fichier
(word count) Compte le nombre de caractère, de mots et de lignes d'un fichier. Les options sont -c (compter les caractères) -w (compter les mots) et -l (compter les lignes). Les trois sont par défaut.
at moment [jour ]
[fichier]
at -r tâche ...
at -l tâche ...
batch fichier
Ces commandes exécutent un fichier commande à
un moment ultérieur (en différé)
indiqué par moment. L'environnement
(répertoire de travail, variables etc...) est
hérité par la commande. Les sorties standards et
erreurs sont , si non redirigées, envoyées dans
la boite au lettre utilisateur. La forme de moment est:
h, hh, hhmm, noon,
midnight,now, today, tomorrow
On peut mettre un jour jour, dans le cas où
le délai est supérieur à 24h, sous la
forme: nom du mois, suivi du numéro du jour: at 1530
jan
24
<--- pour 24 Janvier 15h 30 La
forme avec -r ou -l, permet de révoquer
(resp. lister) une demande d'exécuter en
différé. tâche est alors le
numéro attribué à la demande et qui est
affiché juste après la demande at.
batch est tout simplement une demande
d'exécution de fichier dès que la charge
du système le permet. C'est pour ne pas gêner les
camarades ou les autres utilisateurs quand une commande est
lourde.
bg
Rend une tâche en arrière plan (background). Voir gestion des travaux section 4.8.
fg
Rend une tâche en avant plan (foreground); Voir gestion des travaux section 4.8.
kill -signal
no_de_processus
kill -l
Envoie un signal à un processus de numéro
donné (voir ps). Le signal est donné par
son numéro ( e.g. -9) ou par un nom symbolique (e.g.
INTR) . kill -l
permet justement d'afficher la liste des signaux
possibles. Leur sens est dans man kill ou
/usr/include/signal.h . (voir aussi [[section]] gestion
des travaux).
ps
(process status) Donne la liste des processus
utilisateurs lancés depuis le terminal dans la session.
Elle affiche le numéro (PID), le terminal de
contrôle(TT) de lancement, l'état
(STAT), le temps d'exécution (TIME) du
processus et le nom de la commande l'ayant créé.
Les informations d'état sont R pour actif,
S pour processus en sommeil, T
pour stoppé (ne pas confondre avec S) et
Z pour terminé (zombie). Des options
intéressantes sont:
-a: tous les processus
-tterm: les processus rattachés au terminal term (e.g. ps -tty02, ps -tty02,03)
-u[user]: donne plus d'informations. Et avec un nom d'utilisateur, ses processus.
-x: les processus utilisateurs, y compris ceux non rattachés au terminal.
stop
Suspend une tâche background. Voir gestion des travaux section 4.8.
time commande
Affiche le temps d'exécution d'une commande. Sous csh, faire /bin/time pour ne pas confondre avec la commande interne de même nom.
Ce sont des commandes pour communiquer entre utilisateurs, locaux ou distants, en immédiat ou en différé.
Principalement, il y from, mail, mesg, talk et write.
from
Affiche les entêtes expéditeurs du courrier non encore lu. Voir mail.
mail [utilisateur]
Commande qui gère le courrier entres utilisateurs
UNIX. Il en existe un certain nombre de versions, plus ou moins
élaborées. Nous décrirons la principale,
version Berkeley, qui se trouve dans /usr/ucb
[10]. La commande seule permet de consulter son courrier
dans sa boite aux lettres. Celle-ci est sauvegardée pour
chaque utilisateur dans un répertoire système
sous /usr/spool/mail. Après frappe de
mail, s'il y a courrier, une liste d'entêtes des
lettres (numéro d'arrivée, expéditeur,
date réception et sujet) et d'indicateurs (N
nouveau, R déjà lu, U
par encore lu unread) s'affiche. Le prompt est
& (ou #). Comme d'habitude, la frappe de
? ou de la lettre h
(help) donne des indications sur qu'on peut faire.
En générale, on a:
next
header delete edit reply save ref quit xit |
affiche le message suivant,
(ou type) affiche le message courant, reaffiche les entêtes des messages, supprime le message courant, édite le message courant, répond à l'expéditeur du message, sauvegarde le message courant en bout du fichier de référence donnée, quit sortie avec sauvegarde des messages non encore lus, sortie avec sauvegarde de tous les messages. |
La première lettre de chaque commande suffit. Suivies d'un numéro, les commandes p t d e r et s s'appliquent au message de numéro donné.
Avec une option -f fichier, mail utilise le fichier donné comme boite aux lettres. En generale on l'appelle mbox.
Dans la forme
mail utilisateur
mail envoie un courrier à l'utilisateur donné (nom login). Le courrier est à taper sur le clavier. On termine la frappe par un caractère '.' en début de ligne (ou ^D). Avant de commencer la lettre, mail invite (subject:) à fournir l'objet du courrier. On peut écrire à des utilisateurs distants. La référence utilisateur doit être nom@hôte. Le système hôte est un simple nom de machine ou un nom de site divisé en plusieurs domaines séparés par le caractère '.' (syntaxe internet).
mail benali@loria.fr
Voir aussi la commande from.
mesg y|n
La commande mesg permet d'être, ou de ne pas être, dérangé par write d'un(e) autre utilisateur(trice). La commande a comme paramètre y ou n (yes or no). mesg n interdit la réception des messages de write (mais pas les envois). Pour restaurer la réception des messages, faire mesg y.
write utilisateur [tty]
Envoie ce qu'on tape sur son clavier sur l'écran de l'utilisateur mentionné qui doit être connecté (affichable par who). Si ce dernier est connecté plusieurs fois, il faut rajouter sur quel terminal tty on envoi le message. On peut ainsi mener une conversation avec un interlocuteur qui doit procéder de la même façon (faire write aussi). La commande write (ou la conversation) termine quand l'un des interlocuteurs fait ^D. Il est conseillé de s'entendre avec son interlocuteur sur la planification de la conversation, e.g. en tapant chacun à tour de rôle et on terminant la phrase par un mot de type STOP. Car ce qu'on envoi risque de se mélanger avec ce qu'on reçoit. (Voir aussi talk)
exemple: Voici une conversation entre deux utilisateurs, averel et joe
averel@karima>write joe Message from joe@karima on ttyp3
at Je n'ai pas encore
termine, OK Je t'attends dans un
quart |
joe@karima> Message from averel@karima on ttyp2 at 12:14 ... joe@karima>write averel Quand est-ce qu'on
mange du calme joe Entendu a tout a
l'heure ^D |
talk utilisateur [tty]
Comme write mais permet de dialoguer plus aisément car l'écran des deux utilisateurs est partagé en deux zones: l'une pour écrire et l'autre pour recevoir. On peut donc parler en même temps, et il n'y a pas besoin de protocole. La conversation se termine avec la frappe de ^D ou ^C. (Voir aussi write)
Filtre, est une métaphore pour parler des commandes
UNIX qui appliquent une transformation sur un fichier. Le fait
est générale, puisqu'une commande a un fichier
entrée stdin et un fichier sortie
stdout. Mais filtre colle mieux à certaines
commandes.
dd option=valeur ...
Convertit les caractères d'un fichier et écrit le résultat dans un autre fichier. Les options sont:
if=f1, of=f2 fichier origine f1 et cible f2 (défaut stdin et stdout)
conv=ascii convertit en ASCII à partir d'un code EBCDIC par exemple.
conv=lcase convertit en majuscule etc...
D'autres options intéressantes, comme sauter des lignes, copier quelques lignes etc. existent. Voir man dd.
% dd conv=lcase
AzErTY
QwERtY
azerty
qwerty
0+2 records in
0+1 records out
%
tee fichier
(T prononcé en anglais) Envoie son entrée standard à la fois sur sa sortie standard et sur un fichier référence. Elle est surtout utile avec un pipe.
cmd_1 | tee f | cmd_2 ...
La sortie de cmd_1 est envoyée en
entrée de cmd_2, d'après le
principe des pipes, mais entre temps la commande tee
l'a captée et l'a mise dans un fichier f. Un
usage courant fait de f le fichier
/dev/ttyxx
alias l'écran, pour imprimer le
résultat de cmd_1 avant le
pipe.
% who | tee /dev/tty05 |wc -l
ouardani tty02 Oct 27 18:45 (SERV1)
tounsi tty05 OCT 27 14:30 (shems)
2
La résultat de who est lu par wc (soit 2 lignes) et est imprimé sur l'écran (par tee).
tr [chaîne_1 [chaîne_2]]
Transforme (tr) l'entrée standard vers la sortie standard avec substitutions ou suppressions de caractères spécifiés par les arguments. A chaque occurrence du i-ème caractère de chaîne_1 est substitué le i-ème caractère de chaîne_2. Pour la suppression, on utilise l'option -d pour supprimer tous les caractères définis dans chaîne_1. Une option -c spécifie les autres caractères (le complément par rapport à l'ensemble des caractères) que ceux de lachaîne_1.
% cat t
abcdefg
hijklmn
opqrst
% tr "aeg" "AEG" <t
AbcdEfG
hijklmn
opqrst
% tr -d "m-q" <t
abcdefg
hijkl
rst
% tr "[a-z]" "[A-Z]" <t
ABCDEFG
HIJKL
RST
%
On peut utiliser les notations classiques de définition de chaînes.
banner chaîne
Affiche la chaîne donnée sous forme de bannière formée avec des caractères #.
basename fichier [suffixe]
Enlève le suffixe et le chemin éventuel précédant le nom (de base) d'un fichier.
% basename /usr/users/hello.c .c
hello
% basename hello
hello
% basename hello.c
hello.c
Cette opération est purement syntaxique et ne suppose pas que le fichier existe.
bc [fichier]
Interprète des commandes de calcul arithmétique en précision quelconque, avec un mini langage de programmation proche de C. Les commandes sont lues dans fichier et ensuite sur l'entrée standard. L'option -l appelle une bibliothèque mathématique. Le détail est obtenu par man bc.
% bc -l
4+5
9
y=3
x=y/2
y
1.5
quit
%
cal mois [année]
Affiche le calendrier correspondant aux arguments.
sleep n
Met le processus numéro n en état de sommeil (il ne consomme pas de temps CPU).
factor/prime
factor n décompose le nombre n en facteurs premiers, et
prime n m fournit les nombres premiers compris entre n et m.
man [section] titre
L'arme absolue du programmeur UNIX. Fournit l'aide en ligne sur la commande, la fonction C ou le sujet titre. La section est le numéro du chapitre correspondant du manuel de référence UNIX. Elle est utile dans cas où un même titre figure dans plusieurs chapitres comme kill qui est au chapitre 1 pour la commande shell, et au chapitre 2 pour l'appel système. Ne pas hésiter à l'utiliser très souvent. Il vaut mieux comprendre l'anglais.
% man man
% man 2 fork
Ce sont les commandes incorporées (builtin) que le cshell interprète directement. Beaucoup ont déjà été décrites ci-dessus, et nous allons juste énumérer lesquelles:
alias, cd, pwd, source, time, jobs ...eval history kill
pushd popd set setenv source.
D'autres font partie du langage de commande:
foreach, repeat, while, if, switch, goto, onintr
Voir section 6.
PRECEDENT | SOMMAIRE | SUIVANT |