La ligne de commande
1. La ligne de commande
- La ligne de commande est un moyen simple d’interagir avec un ordinateur.
- Le shell interprète les commandes tapées au clavier.
- Le prompt, ou l’invite de commande, qui se termine par un
$
pour un utilisateur standard ou un#
pour l’administrateur du système (désigné root), indique que le shell attend les commandes de l’utilisateur. - Le shell est également un langage de programmation que l’on peut utiliser pour lancer des tâches automatiquement.
- Les programmes shell sont appelés par des scripts.
1.1. Définitions
- Le terminal = l’environnement d’entrée/sortie
- La console = terminal physique
Shell =
- « Interpréteur » de commande : lancer des commandes,
- Environnement : confort de l’utilisateur, sécurité
- Langage de programmation : fonctionnalités
- Traitement du texte
- Interface avec le noyau
- …
1.2. Types de shells
On obtient la liste des shells présents sur le système en affichant le fichier /etc/shells
:
$ cat /etc/shells
- sh : historique, standard, « portable »
- csh/tcsh : C Shell
- ksh : Korn Shell
- bash : Bourn Again Shell Linux, le plus utilisé
1.3. Normes
1.4. Bourne Again SHell
- Le projet GNU offre des outils pour l’administration de système de type UNIX qui sont libres et qui respectent les standards UNIX.
- Bash est un Shell compatible avec sh qui incorpore des spécificités utiles du Korn Shell (ksh) et du C Shell (csh). Il est censé se conformer à la norme IEEE POSIX P1003.2/ISO 9945.2 Standards des Shell et Outils. Il offre des améliorations fonctionnelles par rapport à sh pour la programmation et l’utilisation interactive.
1.5. Le shell interactif
Quand on obtient un terminal avec une ligne de commande, on si situe dans un environnement encadré par un programme « shell » qui a créé un processus sur le système. Il permet notamment d’exécuter des commandes.
1.6. Commande echo
ECHO(1) Manuel de l'utilisateur Linux ECHO(1) NOM echo - Afficher une ligne de texte SYNOPSIS echo [-neE] [message ...] echo {--help,--version} DESCRIPTION Cette page de manuel documente la version GNU de echo. La plupart des shells ont une commande intégrée ayant le même nom et les mêmes fonctionnalités. echo écrit chaque message sur la sortie standard, avec une espace entre chacun d'eux, et un saut de ligne après le dernier.
La commande echo
permet d’afficher du texte à l’écran :
[francois@c7li ~]$ echo "affiche ce texte" affiche ce texte
[francois@c7li ~]
$
On remarque le prompt composé de :
francois
l’utilisateur connecté@
séparateurc7li
nom de l’ordinateur~
« titld » qui indique le dossier utilisateur comme dossier courant$
qui indique le type de connexion
Cette configuration de l’environnement est chargée sous forme de script au moment de la connexion de l’utilisateur.
1.7. Commande ls
LS(1) Manuel de l'utilisateur Linux LS(1) NOM ls, dir, vdir - Afficher le contenu d'un répertoire SYNOPSIS ls [options] [fichier...] dir [fichier...] vdir [fichier...] Options POSIX : [-CFRacdilqrtu1] [--] Options GNU (forme courte) : [-1abcdfgiklmnopqrstuvwxABCDFGHLNQRSUX] [-w cols] [-T cols] [-I motif] [--full-time] [--show-control-chars] [--block-size=taille] [--format={long,verbose,commas,across,verti‐ cal,single-column}] [--sort={none,time,size,extension}] [--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]] [--help] [--version] [--] DESCRIPTION La commande ls affiche tout d'abord l'ensemble de ses arguments fichiers autres que des répertoires. Puis ls affiche l'ensemble des fichiers contenus dans chaque répertoire indiqué. Si aucun argument autre qu'une option n'est fourni, l'argument « . » (répertoire en cours) est pris par défaut.
2. Entrer des commandes dans l’invite
Pour entrer des commandes dans le shell, il faut :
- une commande valide (dans le PATH ou précisée par un chemin)
- suivie éventuellement d’une ou plusieurs options notées
- par un “dash”, le tiret, “
-
” en notation abrégée - ou un double “dash”, double tiret, “
--
” en notation extensive, - des arguments,
- et un retour chariot qui accepte la ligne entrée.
2.1. Syntaxe des commandes
Chaque commande dispose de sa propre syntaxe :
- sans options :
$ ls
- avec une option :
$ ls -l
- avec plusieurs options :
$ ls -l -a -h -t $ ls -laht
2.2. Options et arguments
- Options double dash :
$ ls --all $ ls --help
- Donner un argument :
$ ls -l /home
- Donner plusieurs arguments :
$ ls -l /home /var
2.3. Commandes hors du PATH
A titre d’exemple la commande “ls
” s’exécute car elle est située dans un des chemins indiqués dans la variable d’environnment PATH. On peut afficher ces chemins par défaut pour les fichiers exécutables via cette commande :
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
On peut exécuter le logiciel directement à partir de l’emplacement absolu :
$ /bin/ls
On peut exécuter le logiciel directement à partir de l’emplacement relatif :
$ cd /bin
$ ./ls -l ls
2.4. Entrer des commandes
- On peut entrer des commandes sur plusieurs lignes :
$ ls /var
$ ls /home
$ ls /usr
- Ou sur une seule ligne on peut séparer les commandes par un “semicolon”, point-virgule, “;” :
$ ls /var; ls /home; ls /usr
2.5. Séquences de commandes
- Si les arguments diffèrent pour une même commande, on peut créer une boucle et profiter de variables :
$ for arg in /home /var /usr > do > echo "visualisation : " $arg > ls -a $arg > done
- ou encore en une seule ligne
$ for arg in /home /usr /var; do ls -la $arg; done
2.6. Exécutions conditionnelles
&&
et ||
sont des séparateurs de commandes conditionnels.
Opérateur &&
$ commande1 && commande2
exécute commande2 si commande1 est exécuté sans erreur. Par exemple sous Debian/Ubuntu :
# apt-get update && apt-get -y upgrade
Par exemple sous Centos :
# yum -y install epel-release && yum update
Opérateur ||
$ commande1 || commande2
exécute commande2 si commande1 est exécuté avec erreur.
Par exemple :
# apt-get update || yum -y update
2.7. Historique des commandes
Pour voir la liste des commandes que vous avez validées, vous pouvez utiliser la commande interne de bash history
:
$ history
- La commande
history
liste les commandes en cache ainsi que celles sauvées dans~/.bash_history
. Lorsque l’utilisateur quitte le shell, les commandes en cache sont inscrites dans ce fichier. - Vous pouvez récupérer les commandes tapées en utilisant les flèches directionnelles (haut et bas) de votre clavier.
history -c
efface l’historique de la session courante.
Historique : raccourcis emacs
- Vous pouvez également utiliser des raccourcis emacs qui vous permettent d’exécuter et même de modifier ces lignes. Par exemple
Ctrl-p
/Ctrl-n
pour ligne précédente/ligne suivante ouCtrl-a
/Ctrl-e
pour début/fin de ligne. Pour en savoir plus sur Emacs : http://www.tuteurs.ens.fr/unix/editeurs/emacs.html
Historique : raccourcis bang
Par exemple :
$ ls -a $ ^ls^ps ps -a $ !! $ history $ !2
2.8. Tabulation
- Selon la distribution la touche de tabulation offre des possibilités d’auto-complétion.
2.9. Substitution de commandes
- La commande
uname
permet de connaître la version du noyau courant. Comment la substituer ?
$ uname -a Linux c7li 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ system=$(uname -a) $ echo $system Linux c7li 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
2.10. Alias
- Un alias est une autre manière de substituer des commandes.
- Liste des alias :
$ alias ... alias l='ls -CF' alias la='ls -A' alias ll='ls -alF' alias ls='ls --color=auto'
* Créer un alias :
$ alias zozo='ls -a' $ alias $ zozo