Séance 1 : Prise en main¶
Pourquoi Linux ?¶
Open-source, et donc
moins cher,
plus sécurisé,
plus portable (que des alternatives commerciales).
Largement utilisé :
serveurs, équipements réseau
appareils Android
autres « petits » appareils
(liseuses, raspberry pi...)
Pourquoi la ligne de commande ?¶
travail à distance
appareils peu puissants
productif
automatisable
Le shell¶
shell est le nom donné au programme qui gère la ligne de commande
il en existe plusieurs versions, mais
bash
est la plus utilisée
interaction typique avec le shell :
affiche une invite de commande (traditionnellement terminée par
$
ou#
)analyse le texte tapé
exécute le(s) programme(s) demandé(s) (en lui/leur passant des arguments)
attend la fin de l'exécution, puis recommence
Analyse de la ligne de commande¶
Le shell découpe la ligne de commande au niveaux des espaces.
Ce découpage donne une liste de chaînes de caractères :
la première est interprétée comme le nom du programme à exécuter,
les suivantes sont les arguments passés au programme.
Pour inclure une (ou plusieurs) espace(s) dans un argument, il faut encadrer cet argument par des guillemets (
"
ou'
).
# exemple
git commit --all -m "fixed bug #42"
Une alternative pour inclure une espace dans un argument consiste à la faire précéder par un anti-slash (
\
).
# exemple
git commit --all -m fixed\ bug\ \#42
Note
Dans l'exemple ci-dessus, le caractère dièse (#
)
nécessite également un anti-slash,
car lui aussi serait interprété par le shell (commentaire).
Dans la suite, nous verrons d'autres caractères spéciaux utilisés par le shell pour analyser les lignes de commandes.
Cet outil développé par Thierry Excoffier permet de bien comprendre les mécanismes en œuvre dans cette analyse.
Arguments d'un programme¶
Les arguments d'un programme sont une liste de chaîne de caractères, passée à ce programme à son lancement.
int main(int argc, char* argv[]) {
/* ... */
}
Le programme est libre d'interpréter ces arguments comme il le souhaite, mais il existe un certain nombre de conventions.
Conventions courantes sur les arguments¶
Un paramètre démarrant par un tiret (-) est une option, qui altère le comportement du programme.
Une option commençant par un seul tiret est composée d'une seule lettre (exemple
-h
,-V
). Les options plus longues commencent par deux tirets (exemple--help
,--version
).Plusieurs options courtes peuvent être combinées après un seul tiret (exemple
-la
au lieu de-l -a
).L'option
--help
sert à afficher une courte documentation de la commande.
Quelques commandes de base¶
man [section] <commande> / man [options]¶
Affiche une page du "manuel" (documentation).
-
<commande>
La commande dont on souhaite afficher le manuel.
-
[section]
Éventuellement, le numéro de section du manuel.
-
-k
,
--apropos
<texte>
¶ Liste toutes les pages du manuel contenant
texte
.
echo [options] <arguments>¶
Affiche les arguments, séparés par des espaces.
-
-n
¶
N'affiche pas de retour à la ligne après les arguments.
more [ficher]¶
Affiche un fichier de manière paginée.
entrée ou espace avance d'une page
CTRL+C quitte le programme
Indication
CTRL+C n'est pas une instruction spécifique à more
;
cela interomp la plupart des programmes lancés en ligne de commande.
id [options] [utilisateur]¶
Affiche des informations sur un utilisateur.
-
utilisateur
Nom ou numéro d'utilisateur (défaut : utilisateur courant).
-
-u
,
--user
¶
Affiche uniquement l'identifiant de l'utilisateur.
-
-G
,
--groups
¶
Affiche uniquement les groupes auxquels appartient l'utilisateur.
-
-n
,
--name
¶
Affiche l'identifiant textuel au lieu de l'identifiant numérique (avec
-u
ou-g
).
date [options] [+format]¶
Affiche une date au format demandé.
-
-d
,
--date
=STRING
¶ La date à afficher (défaut : date courrante)
-
+format
Format à utiliser pour l'affichage, cf. man date.
Exemples :
"+%d/%m/%y"
affiche jour/mois/année (sur 2 chiffres)+%A
affiche uniquement le jour de la semaine+%W
affiche le numéro de la semaine
Note
La valeur passée à --date
accepte de nombreux formats différents,
y compris des expressions comme « tomorrow » ou « 2 years ago ».
Attention cependant au format xx/yy/zzzz
,
il est généralement interprété à l'américaine : mois/jour/année.
Il vaut mieux lui préférer le format aaaa-mm-jj
.
Travaux dirigés¶
Lancement d'une machine virtuelle Linux¶
Ouvrir le fichier
D:\VMWARE_images\PA.Champin\Ubuntu 19.10.ova
avec Vmware workstation.Choisissez comme répertoire destination un sous-répertoire de
D:\
(n'utilisez pas un répertoire réseau, cela serait beaucoup trop lent).En cas d'erreur, cliquez sur Retry.
Le mot de passe est
etudiant
.Une fois la machine virtuelle démarrée, ouvrez un terminal en cliquant sur l'icône correspondante.
![_images/terminal.png](_images/terminal.png)
Icône "Terminal"¶
Utilisation de commandes¶
affichez avec
more
tout le contenu du fichier/etc/passwd
affichez avec
more
les premières pages du fichier/var/log/syslog
, puis quittez le programmeen utilisant
echo
, affichezbonjour le monde
affichez maintenant
bonjour le MONDE !
(avec deux espaces avant et après « monde »)en utilisant
date
, affichez le jour de la semaine de votre jour de naissance
Historique¶
Indication
Avec les touches haut et bas, il est possible de naviguer dans l'historique des commandes tapées. Il est ensuite possible de modifier la ligne de commande de manière classique (flêche gauche et droite, retour arrière...).
affichez à nouveau
bonjour le monde
en utilisant
date
, affichez le jour de la semaine de votre jour de naissanceaffichez maintenant le jour de la semaine de vos trois premiers anniversaires (utilisez le retour arrière dans l'historique pour éviter de retaper la commande à chaque fois)
Indication
On peut effectuer une recherche dans l'historique des commandes, en tapant CTRL+``R``, suivi du texte à rechercher. En tapant à nouveau CTRL+``R``, on remonte dans l'historique au résultat suivant de la recherche.
affichez à nouveau le jour de la semaine de votre jour de naissance (utilisez CTRL+R pour rechercher votre année de naissance dans l'historique)
affichez à nouveau
bonjour le MONDE !
Édition avancée de la ligne de commande¶
Indication
Avec CTRL+*gauche* et CTRL+*droite*, on peut déplace le curseur mot par mot.
Avec CTRL+``K``, on peut supprimer tout ce qui est à droite du curseur.
Avec CTRL+``U``, on peut effacer la totalité de la ligne de commande.
affichez
au revoir le monde
affichez
Bonjour le MONDE !
affichez le jour de la semaine de votre quatrième anniversaires
Répétition du dernier argument¶
affichez à nouveau
bonjour le monde
tapez
echo au revoir le ``, puis la touche *echap*, puis ``.
(NB: sur un clavier français, le . est obtenu avec SHIFT+``;``). Quel message s'affiche ?
Indication
ESC+`.` ajoute le dernier argument de la précédente ligne de commande.
Tab-complétion¶
tapez
ec
suivi de la touche tabulation (→|
) ; que constatez vous ? videz ensuite la ligne de commande avec CTRL+C.tapez
e
suivi de la touche tabulation ; que constatez vous ? tapez la touche tabulation à nouveau ; que constatez vous ? videz la ligne de commande avec CTRL+C.tapez
man
suivi d'une espace, puis tapez tabulation deux fois ; que constatez-vous ?
Indication
La touche tabulation déclenche ce qu'on appelle la tab-completion: le shell complète automatiquement le mot à gauche du curseur (qui peut être vide).
Si plusieurs complétions sont possibles, le shell fait plusieurs propositions.
Les proposition du shell dépendent du contexte;
elle peuvent être
* un nom de fichier (par défaut),
* une option de la commande,
* un nom d'utilisateur (e.g. pour la commande id
),
* une sous-commande (e.g. pour la commande git
)...
tapez les caractères suivants:
m
,o
,r
, tabulation,/
,e
, tabulation,p
,a
,s
, tabulation, entréecombien y a-t-il d'entrées dans la section 3 du manuel ?
combien y a-t-il d'entrées commençant par
pa
dans la section 3 du manuel ?