SOMMAIRE
PRESENTATION HISTORIQUE:
QU'EST CE QU'UNIX ?
COMMENT SE CONNECTER ?
COMMENT EST ORGANISE LE DISQUE ? EXEMPLE D'ORGANISATION DU DISQUE: L'AIDE ET LA DOCUMENTATION
ACTIVATION DES COMMANDES SHELL
COMMANDES SUR REPERTOIRES ET FICHIERS
ETATS DE LA MACHINE
COMMANDES DIVERSES
COMMANDES SUR PERIPHERIQUES DEMANDES D'IMPRESSIONS
ACCES AUX DISQUETTES
DISQUETTESAUFORMAT UNIX : DISQUETTESAUFORMAT DOS
REDIRECTION DES ENTREES SORTIES UTILISATION DU RESULTAT D'EXECUTION D'UNE COMMANDE :
CONNEXIONS ENTRE COMMANDES : REDIRECTION SUR PERIPHERIQUE
ALIAS OU SYNONYMES DE COMMANDES UTILISATION D'ARGUMENTS PASSES A UN ALIAS :
REGROUPEMENT DE COMMANDES DANS UN ALIAS :
PRÉSENTATION
HISTORIQUE:
laboratoires BELL en 1970
réécrit en C en 1973 (=> portabilité)
évolutions: AT&T -> UNIX System V.4 (dont SCO) université Berkeley -> UNIX BSD 4.3 avenir: normes: POSIX (Portable Operating System)
IEEE , ANSI (de l'Afnor), ISO (de l'OSI) industriels: AT&T, Sun, DEC, IBM, Apollo
Unix International
OSF (Open Software Fundation) ces deux alliés au Groupe X-OPEN QU'EST CE QU'UNIX ?
Système multiutilisateurs, multitache (notion de processus) Possibilité de réseau (TCP/IP)
Portabilité des applications (langage C) Protection des utilisateurs
Unix est constitué d'un · NOYAU
· INTERPRETEUR DE COMMANDES ( le shell ) · MESSAGERIES
· PROGRAMMES UTILITAIRES ( éditeurs, compilateur C, assembleur, débogueur)
COMMENT SE CONNECTER ?
entrer un nom d'utilisateur et un mot de passe: accès à un compte créé par l'administrateur de la machine. Caractéristiques de ce compte:
nom, mot de passe, répertoire de login, shell de login, groupes de travail, autorisations ...
Au démarrage, deux fichiers de commandes sont exécutés afin de configurer la session de travail: .cshrc et .login (sous Cshell) ou .profile (sous Bourne Shell).
COMMENT EST ORGANISÉ LE DISQUE ?
en répertoires dans lesquels sont rangés des fichiers et des pseudos fichiers (sous répertoires, drivers de périphériques ...).
La racine (root) est notée / et le chemin complet (path) d’un fichier est donné par
/rep1/rep2/file
Noter que les sous répertoires et que la majorité des fichiers n'ont pas d'extension les caractérisant! Cependant les fichiers dont le nom commence par un . sont cachés.
Les répertoires et fichiers ne sont pas connus de la machine par leur nom mais par un numéro donnant l'index à une table de blocs d'informations (taille, adresse, type, propriétaire, droits, compteur de liens ...). Ce numéro s'appelle inode
(index node). Un répertoire est une suite de couples inode-nom (2 octets-14 caractères); ainsi un même fichier
(un seul bloc d'infos!) peut être vu sous plusieurs noms depuis plusieurs répertoires.
EXEMPLE D'ORGANISATION DU DISQUE:
/ la racine (qui contient le noyau) /bin binaires du noyau (ls, date, cc, asm ...) /usr/bin autres binaires (vi, awk ...)
/lib bibliothèques /usr/lib "
/usr/include fichiers inclus du C
/dev fichiers périphériques (lp0, tty01, tty1a ..) /etc fichiers exécutables et data divers pour
l’admi-nistrateur (mots de passe, gestion des terminaux ...) et à Champs sur Marne !:
/users répertoire pour la formation /users/stage
/users/prof /users/invite
L'AIDE ET LA DOCUMENTATION
la documentation est regroupée en manuels
- administrator's reference et guide: pour le responsable de la gestion du système (compte super utilisateur root)
reference ADM (administrator) HW (hardware dependant)
- user's reference et guide: pour tout utilisateur du shell references C (commandes)
M (miscellaneous) F (file format)
- programmer's reference et guide: pour tout utilisateur programmant en C sous système multitache
references CP (programming commands) S (services, subroutines & libraries)
Ainsi que d'autres manuels référençant le DOS, l'assembleur, l'écriture de drivers ...) Toute la documentation, sous forme de manuels, existe
en double sur disque et est accessible par la commande
man <topic>
man <reference> <topic>
exemples :
man man
man C kill ou man 1 kill
man S kill ou man 2 kill (numéro du manuel de 1 à 8)
Le manuel 1 concerne les commandes du shell, le 2 les appels système et le 3 les fonctions de la bibliothèque.
Les pages du manuel sont enchainées par des <RC> avec des déplacements par <+/- n> et sortie par <q>. Sous Unix SCO installé en APII, toutes les gestions de l'administrateur ainsi que certaines commandes pour les utilisateurs banalisés peuvent être facilitées par l'utilitaire multifenêtrage sysadmsh.
ACTIVATION DES COMMANDES SHELL
cde -options
commande avec option(s)cde1 ; cde2
enchainement séquentiel( cde1 ; cde2 )
regroupement de commandes\
continue la commande sur ligne suivante! cde
exécute la commande depuis une autre commande (par exemple depuis l'éditeur vi)time cde
avec mesure du tempshistory
visualise les commandes passées au clavier sous Cshell uniquement et sous condition que la commande "set history = 20" soit activée dans ce cas le rappel de commandes peut se faire ainsi :!!
!n
(le numéro)!pw
(premières lettres)!?chaine?
(une chaine contenue dans la commande)cde !$
(!$ represente alors le dernier argument de la commande précédente)sleep n
mise en sommeil de la session pendant n sec.cde &
en arrière planalors
wait
attend la fin des demandes lancées par &batch
cde >/dev/tty01
redirige les affichages sur terminal, sinon dans le mail. . .
(
suite de commandes entrées au clavier)<CTRL> <D>
termine la saisie des cdesnohup cde &
permet de se deloguer et d'éteindre le terminal, les sorties se font dans nohup.outat 15:23
permet de choisir l'heure d'exécutioncde >/dev/tty01
. . .
<CTRL> <D>
Dans tous les cas, un numéro de job est attribué et :
at -r <numéro du job>
permet de retirer la demandeat - l
permet de voir les demandesCOMMANDES SUR REPERTOIRES ET FICHIERS
pwd
donne le répertoire courantnota :
.
désigne le répertoire courant et..
répertoire père
.
ls -lAF
(options l : complet , A : caché , F : info fin / ou *)
affiche le contenu répertoire sous la forme :
trwxrwxrwx NL U G T date name
avec t
: type (- d l b c p s m) du fichierrwx
: permissions pour u g o (user group other)cf pages suivantes (existe aussi endossement, sticky et lock S)
NL
: nombre de liensU
: propriétaire du fichierG
:
groupeT
: taille en octetsdate
: de dernière modificationname :
nom dont name* pour les exécutables name/ pour les répertoireslf
affiche en colonneslr | more
affiche récursivementcd path
change de répertoiresous Cshell, on peut faire
pushd rep
puispopd
qui utilisent une pile des repertoiresmkdir rep
crée le répertoirermdir rep
destruit le répertoirecopy -r rep1 rep2
recopie (récursivement) le répertoirecp f1 f2
recopie du fichier f1 sur f2cp f1 rep
recopie dans autre répertoirecp f1 f2 ... rep
mv f1 f2
change le nom du fichiermv rep1 rep2
mv f1 rep
déplace dans un autre répertoiremv f1 f2 ... rep
ln f1 f2
crée le nom f2 sur le même inode que f1rm -i f1
destruit avec confirmationcat f1
affichecat f1 f2
affiche les 2 fichiersmore f1
affiche par pagesmore f1 f2
od -c f1
extrait (dump) en caractères octalod -x f1
ou en hexafind . -name f1 -print
recherche le fichier f1test -f f1.fic
teste l'existence du fichiertest -d rep
teste l'existence du fichierpuis
echo $status
donne alors 0 s’il existe, 1 si nonfind rep -print -exec chown user {} \;
avec 1 espace après le ; change les propriétaires de toute l'arborescencefile f1
donne le type du fichierNotes sur les
wildcards
*
chaine quelconque de caractères
?
un caractère quelconque
[abx] un des caractères a, b ou x
[1-9] un des caractères entre 1 et 9
Notes sur les permission r w x (ou 4 2 1 en octal) pour un fichier r droit de lecture
w droit d’écriture x droit d’exécution
pour un répertoire r droit d’en lister le contenu
w droit de créer, effacer et renommer un de ses fichiers
x droit de le traverser (par les path) ou d’utiliser un des ses fichiers
Masque des permissions par défaut :
Le mode de création par défaut des fichiers est généralement 666 et 777 pour les répertoires. Cependant un masque invalide certaines de ces permissions; par exemple si le masque vaut 022, les fichiers seront créés en 644 (soit rw-r--r--) et les répertoires en 755 (soit rwxr-xr-x).
umask
récupère le masque des permissions par défautumask perm
modifie ce masque (perm en octal)chmod perm f1 [f2 ...]
change permissions (en octal)chmod [ugoa] [+-] [rwx] f1 [f2 ...]
idemchown username f1 [f2 ...]
change le propriétaireÉTATS DE LA MACHINE
COMMANDES = PROCESSUS
Chaque processus est référencé par un numéro entier : son pidps -f
visualise les processus du terminal courantps -l
idem plus complet; état des processus (O run,S sleep,R ready, Z zombie...)
ps -ef
tous les processusps -p pid
visualise ce processusps -u user
les processus de cet utilisateurkill -9 pid
tue ce processuskill -9 0
tue tous les processus de l’utilisateurwho
infos sur utilisateurs (nom term date-heure de login)finger
idem en plus completwhodo
« qui fait quoi? »who am i
« qui suis je ? »COMMANDES DIVERSES
sh
oucsh
active un nouveau shell : nouveau processusexec sh
ouexec csh
remplace le shell : même processusdate
donne la date et l’heurecal [n°mois] [n°année]
donne un calendrierclear
efface l'écranecho "salut"
ouecho salut
affiche à l’écranbanner "salut"
affiche en gros caractèrespasswd
modifie le mot de passe du comptemail dupont . . . <CTRL> <D>
envoie courrier à Dupontwrite dupont . . . <CTRL> <D>
envoie message sur terminal de Dupontwall . . ..<CTRL> <D>
envoie message à tous les terminauxCOMMANDES SUR PÉRIPHÉRIQUES
/dev/tty01 et /dev/tty03, /dev/tty04 ...
console/dev/tty1a et /dev/tty2a
lignes séries/dev/ttyp0, /dev/ttyp1 ...
lignes "réseau"/dev/tty
Nom générique du terminal pour chaque utilisateurls -l /dev/tty1a
visualise l'état du driver de périphériquestty [-a]
oustty [-a] </dev/tty1a
visualise optionsstty 19200
ou(stty 19200) </dev/tty1a
modifie ex :stty erase "^H "
valide l’effacement arrièrestty intr "^C"
valide le CTRL C (entrés par CTRL V <- et CTRL V CTRL C sous éditeur vi) (entrés par <- et CTRL C sous shell ; ne se visualise pas d’ailleurs)DEMANDES D'IMPRESSIONS
lp [-nnumber] [-ttitre] f1
impressionpr -n f1 | lp
avec mise en page préalable par prlpstat -l -o
visualise les requêtesACCÈS AUX DISQUETTES
Disquettes au format UNIX :
/dev/rfd048ds9
nom d'une disquette du type possibilité numéros abrégés (voir fichier /etc/default/tar)lister contenu disquette
tar t0 (a: en 5") tar t6 (a: en 3")
tar t1 (b: en 5") tar t7 (b: en 3")
tar x[v]6
relire une disquettetar xw 6
id avec confirmationtar x[v]6 f1
relire st un fichiertar c6 *
nouvelle création et écrit toute arborescensetar c6 f1
nouvelle création et écrit st un fichiertar u6 *
ajout de toute l'arborescencetar u6 f1
ajout d'un fichierformat [6]
formatage disquette (voir fichier /etc/default/format)Disquettes au format DOS
dosls a:
lister contenudoscp -m a:toto.txt toto
relire un fichier (-m évite l’ajout de RC)doscp toto a:
écrire sur disquettedosmkdir a:/sauve
création répertoiredoscat a:toto.txt
visualiser un fichierREDIRECTION DES ENTRÉES SORTIES
UTILISATION DU RÉSULTAT D'EXÉCUTION D'UNE COMMANDE :
les accents graves ` ` permettent de récupérer un résultat de commande :
echo `ls -lFA`
set prompt = "APII-""`pwd` >"
dans un groupe entre " " les accents graves ` ` sont regroupés puis sont évalués dans un groupe entre ' ' les accents graves ` ` sont protégés
(pas traduits)
CONNEXIONS ENTRE COMMANDES :
la sortie d'une commande peut être connectée vers l'entrée d'une autre commande par un tube (ou pipe) :
cde1 | cde2
(cde1; cde2) | cde3
les commandes s'exécutent en parallele (plusieurs processus) et l'ensemble de ces connexions forme un pipeline.
il est possible de capter les données qui transitent dans un tube :
cde1 | tee [-a] f1 | cde2 (-a : ajout)
cde1 | tee f1
REDIRECTION SUR PÉRIPHÉRIQUE
mail dupont durand < f1
redirige l'entrée(date; echo "hello") > f1
redirige la sortiels > /dev/lp0
echo "hello" > /dev/tty1a
vers imprimante vers terminal quelconque déprotégé
cat f1 >> f2
concatène f1 à la suite de f2ls > f1
et ajout à la suite de f1 sils >> f1
Et si booléen de sécurité noclobber vrai (en Cshell) faire :ls >! f1
et ajout à la suite de f1 sils >>! f1
descripteurs réservés : 0 entrée (clavier)1 sortie (écran)
2 sortie d'erreurs (écran) sortie des erreurs avec redirections sur fichiers :
en shell
cde 2> error.out
cde 2>> error.out
en cshell
cde > f ichier
sorties seulementcde >& fichier
sorties + erreurs => astuce :(cde > f1) >& error.out
ALIAS OU SYNONYMES DE COMMANDES
alias d date
définit d comme alias de dated
utilisation de l’aliasalias d
visualise cet aliasunalias d
détruit cet aliasalias
visualise tous les alias UTILISATION D'ARGUMENTS PASSÉS À UN ALIAS :appel : bidule f1 f2 f3 f4
la définition de l’alias bidule peut utiliser les arguments de cette façon :
\ ! ^
le premier,\ ! $
le dernier,\ ! *
tous\!:3
le troisième,\!:2-4
du deuxième au quatrième REGROUPEMENT DE COMMANDES DANS UN ALIAS :alias d 'date;who'
enchaînement séquentielalias print 'pr -n \!* | lp'
parallélisme avec tubeNoter qu’un alias sera prioritaire sur toute autre commande de même nom (possibilité de masquer des commandes de base).
SCRIPTS OU FICHIERS DE COMMANDES
Ce sont des fichiers développés sous éditeurs et contenant des commandes décrites en shell ou en Cshell.
EXÉCUTION DU SCRIPT DANS UN SOUS PROCESSUS AUTRE :
fscript
si protectionx
; par défaut le script s’exécute sous shsh fscript
exécution dans un processus shellcsh fscript
exécution dans un processus Cshellcsh -f fscript
idem sans exécution préalable du .cshrcEXÉCUTION DU SCRIPT DANS LE MÊME PROCESSUS QUE L’APPELANT :
. fscript
si appelant shell : (noter l’espace)source fscript
si appelant Cshell :On peut forcer le shell d'exécution d'un script par une première ligne d'en tête dans le fichier script :
#!/bin/csh [-f] -f pour ne pas avoir le .cshrc
UTILISATION DE PARAMÈTRES PASSÉS À L'APPEL DU SCRIPT en Cshell :
$0 le nom du script lui même
$argv[1] $argv[$var] le 1er et le ième paramètre
STRUCTURES DE PROGRAMMATIONS
EN CSHELL
:shell = langage de programmation
les commentaires sont précédés de
#
Sortie du script par exit [n] avec n=0 ok, n=1 erreur; par défaut, n est le retour de la dernière commande du script; la valeur de sortie n se testera par la variable prédéfinie status ex : echo $status
Toutes les structures classiques sont fournies avec des syntaxes différentes selon le shell d'exécution du script.
Sous Cshell :
if (...) then ... else ... endif switch (...) case .... endsw foreach <var> ... end while (...) .... end goto, break
manipulation de variables sous cshell :
la référence au contenu d’une variable se fait par $: $var existence d'opérateurs : + - .. = > ... ? # @
affectation (notez les espaces) : set V = <chaine>
set V pour booléenne
pour un ensemble de valeurs (utile pour boucles foreach)
set V = (aze rte uuy poiuy)
dans ce cas
$V[i]
rend la ième valeuret
$#V
donne le nombre de valeursunset V
destruction+ - *
opérations.... (notez les espaces)set V = `expr $V + 1`
@ V = $V+1
si numériquetest $V ou $?V
test d'existence rend 1 si existe, 0 sinon afficher le résultat du test par echo $statusset V = `line`
lecture clavier@ V = `line`
pour lecture en numériqueecho $V
affichage écran : utilisation des variables par les commandes :on peut vouloir traduire ces variables :
"$V" ou $V
ou ne pas les traduire :'$V' ou \$V
regrouper des chaines :
set V = "<ch1> <ch2>"
regrouper des variables :set V = "$V1""$V2"
exemple :set V = "coucou le stagiaire"
echo '$V' = "$V"
affichera : $V = coucou le stagiaire Certaines variables dites d'environnement sont héritées par les sous processus : création :setenv V <chaine>
VARIABLES PRÉDÉFINIES DU CSHELL
$HOME
ou$home
ou~
répertoire de connexion :$prompt
signe d’invitation ou prompt :$PATH
Cheminset PATH = (p1 p2 p3)
Chemins$SHELL
shell de connexion :$LOGNAME
nom de connexion :$LOGTTY
terminal de connexion :$TERM
type du terminal :$status
retour d’exécution de commandevariables booléennes :
ignoreof
interdiction du logout par CTRL Dnoclobber
protection contre les redirectionsLES TRAITEMENTS SUR LES FICHIERS DE TEXTE
more f1 f2 ...
affichage par pages écrancat f1 f2 ...
affichage écrancat > f1
saisie au clavier du fichier (arrêt par CTRL D)cat f1 f2 > ftot
concaténationcat f1 f2 >> ftot
concaténation + ajout en fin de ftotlp f1 f2 ...
impression sur imprimantepr f1 f2 ...
impression sur écran avec options de mise en formespell f1
correcteur d’orthographe (américain!)wc [-l-w-c] f1
comptage de lignes, mots (words), caractères (char).sort
tri par ordre alphabétique et fusionnegrep
recherche les occurencesuniq
extrait des lignes identiques entre fichierscomm
comparaison de deux fichiers déjà triésdiff
indication des différences entre fichierstr
transcription / suppression des caractèressed
Stream Editor (éditeur de flots)awk
langage de recherches et de traitements des lignes de textehead
garde des premières lignes (10 par défaut)tail
garde des dernières lignes (10 par défaut)L'ÉDITEUR DE TEXTE VI
fichier de configuration au démarrage : .exrc Cet éditeur présente deux modes :
- le mode texte qui permet d'entrer du texte; accessible par une commande d'insertion :
après curseur :
a
avant curseur :i
après fin ligne :A
avant début ligne :I
- le mode commande qui permet d'entrer des commandes permettant de modifier le texte; c'est le mode d'arrivée lorsque l'on appelle vi.
Accessible depuis le mode texte par la demande d'échappement
<ESC> :
- les sauvegarde/sortie de l'éditeur se font en mode commande sur le bandeau de la dernière ligne.
sauvegarde :
:w [autrefile]
sortie :
:q!
ou:x
avec sauvegarde nom du fichier en cours? ::f
- il est possible d'insérer un fichier à l'emplacement du curseur
:r file
- et d'éditer/créer/ouvrir une autre fenêtre de fichier :
:e file
EN MODE COMMANDE
déplacements curseur :
début ligne
0
fin ligne$
début fichier
< home >
fin fichierG
n ième ligne
nG
milieu écranM
effacements : (tous les effacements vont en buffer)
caractère
x
motdw
ligne[n]dd
avant curseur
d0
après curseurd$
copies en buffer :
de n ligne(s)
[n]yy
du début de la ligne
y0
de la fin de la ligney$
restitution du buffer :
n fois
[n]p
remplacement caractère
r <touche>
recherche :
/ <chaine>
puis suivantes par nscinder une ligne et joindre deux lignes :
recopie entre fenêtres :
se positionner sur les fenêtres par :e file
puis recopier les n lignes dans des buffers nommés par
"a[n]yy
( a nom du buffer) et les restituer par"ap
QUELQUES COMMANDES DU FICHIER DE DÉMARRAGE .EXRCset number
numérote les lignesset tabstop = n
positionne la tabulationréaffectation des touches :
- en mode commande :
map ^w :w^M
permet auCTRL W
de provoquer une sauvegarde du fichier- en mode insertion de texte :
map! ^^ {
map! ^_ }
permet d'avoir sur vt220 les caractères { et }
nota :
CTRL [
se visualise sous vi par^^
etCTRL
] par^_
sous VT220 le caractères{
est obtenu par la séquence CAR.COMPOSE
- (
Le caractère CTRL est entré sous vi par
CTRL V
et se visualise par^
Ainsi le caractère ESCAPE s'obtient sous vi par l'entrée de CTRL V puis CTRL 3 et se visualise