Shell : Environnement d'utilisation en ligne de commandes. Exemples :
- sh (Bourne shell)
- bash (Bourne again shell)
- csh (C shell)
- ksh (Korn shell)
- ...
Beaucoup de caractéristiques communes.
bash: Shell usuellement configuré par défaut avec Linux.
Existence d'un fichier de configuration pour chaque shell, commun à tous les utilisateurs, généralement sous /etc,
modifiable par l'administrateur système et utilisé chaque fois qu'un shell est lancé.
Existence possible d'un fichier de configuration, pour chaque shell, pour chaque utilisateur, stocké sous la racine du
répertoire de base de l'utilisateur, modifiable par lui et utilisé après le fichier de configuration commun.
Différents noms pour ces fichiers pour les différents shells et les différentes distributions.
Variable d'environnement
Variable gérée au sein d'un shell. Caractérisée par un nom et une valeur.
- set : Commande d'affichage de la liste des variables d'environnement et de leurs valeurs.
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_COMPLETION=/etc/bash_completion
BASH_COMPLETION_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release"
[5]="i486-pc-linux-gnu")
BASH_VERSION='3.1.17(1)-release'
COLORTERM=
COLUMNS=112
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Sg21DwlViV
,guid=2e97ed4427821775e98ecac831163200
DESKTOP_SESSION=default
DIRSTACK=()
DISPLAY=:0.0
DM_CONTROL=/var/run/xdmctl
EUID=1000
GROUPS=()
GS_LIB=/home/nico/.fonts
GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/nico/.gtkrc-2.0:
/home/nico/.kde/share/config/gtkrc-2.0
GTK_RC_FILES=/etc/gtk/gtkrc:/home/nico/.gtkrc:
/home/nico/.kde/share/config/gtkrc
HISTCONTROL=ignoredups
HISTFILE=/home/nico/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/home/nico
HOSTNAME=agamemnon
HOSTTYPE=i486
IFS=$' \t\n'
KDE_FULL_SESSION=true
KDE_MULTIHEAD=false
KONSOLE_DCOP='DCOPRef(konsole-7429,konsole)'
KONSOLE_DCOP_SESSION='DCOPRef(konsole-7429,session-1)'
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR:fr:en_GB:en
LESSCLOSE='/usr/bin/lesspipe %s %s'
LESSOPEN='| /usr/bin/lesspipe %s'
LINES=33
LOGNAME=nico
LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;
35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;
42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;
31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;
31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;
31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;
35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;
35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;
35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;
35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;
35:*.ogg=01;35:*.wav=01;35:'
MACHTYPE=i486-pc-linux-gnu
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/bin/X11:/usr/games
PIPESTATUS=([0]="0")
PPID=7429
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS2='> '
PS4='+ '
PWD=/home/nico
SESSION_MANAGER=local/agamemnon:/tmp/.ICE-unix/7371
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:interactive-comments:monitor
SHLVL=2
SSH_AGENT_PID=7314
SSH_AUTH_SOCK=/tmp/ssh-vZUzct7278/agent.7278
TERM=xterm
UID=1000
USER=nico
WINDOWID=41943047
XCURSOR_THEME=kubuntu
XDM_MANAGED=/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched,rsvd,method=classic
_=set
i=/etc/profile.d/which-2.sh
langfile=/root/.i18n |
Exemple de résultat d'exécution de la commande set |
Désignation de la valeur d'une variable par utilisation de son nom précédé d'un $.
echo HOSTNAME -> HOSTNAME, le nom de la variable
echo $HOSTNAME -> agamemnon, la valeur de la variable
Configuration d'une variable en tapant son nom suivi d'un égal suivi de la valeur (sans espace).
Quelques variables caractéristiques
- HOME : Répertoire de base d'un utilisateur (dynamique)
- LOGNAME : Login de l'utilisateur en session (dynamique)
- PATH : Ensemble des chemins de recherche des applications lancées (séparés par des :)
- PS1 : Prompt
- PWD : Répertoire courant (dynamique)
- SHELL : Nom du shell courant (dynamique)
~ : Répertoire de base d'un utilisateur (dynamique)
Caractères joker
Utilisation possible de caractères "joker" dans les lignes de commandes pour désigner plusieurs fichiers en une
seule commande.
- * : Toute suite de caractères
- ? : Un seul caractère quel qu'il soit
Pipes
Le caractère | entre deux commandes permet d'exécuter la première commande en envoyant son résultat d'exécution en tant
que paramètres d'entrée de la seconde.
ls | sort
Liste des fichiers du répertoire courant envoyée
à la commande sort pour tri par ordre alphabétique puis affichage
Redirection des sorties et des entrées
Renvoi des résultats en sortie vers un fichier avec écrasement de celui-ci au moyen du caractère > placé entre la commande
et le nom de fichier.
Renvoi des résultats en sortie en ajout à la fin d'un fichier au moyen des caractères >> placés entre la commande
et le nom de fichier.
Obtention des données demandées au clavier par la commande depuis le contenu d'un fichier au moyen du caractère < placé
entre la commande et le nom de fichier.
Sauvegarde des résultats de la commande date dans le fichier Sortie.txt
Ajout à la fin du fichier Sortie.txt des résultats de la commande who
Visualisation du contenu du fichier Sortie.txt
Exécution des commandes en arrière plan
Exécution d'une application en arrière plan en ajoutant un & à la fin de la ligne de commande de lancement.
Lancement en arrière plan de l'éditeur de textes "kwrite"
Ligne de commande encore utilisable
kwrite
Lancement classique
Ligne de commande bloquée sur l'application jusqu'à sa terminaison
- nohup : Commande permettant de lancer une application en arrière plan de manière à la rendre insensible aux déconnexions
de session.
Interruption d'un shell
exit : Interruption du shell en exécution.
Scripts shell
Script shell : Fichier de commandes en langage shell (fichier texte rendu exécutable par exécution de la command
chmod +x script_shell).
Syntaxe
- # pour placer une ligne en commentaire.
- Affectation d'une variable : var=valeur ou var="valeur" si la valeur comporte des espaces.
- read pour lire une variable au clavier.
- echo pour afficher une variable.
- Récupération des items de la ligne de commande via les codes $0, $1, $2, $3, ... dans l'ordre de frappe et incluant le
nom du shell.
Récupération de la liste complète des items avec $*.
Récupération du nombre d'items avec $#.
Récupération du PID du shell avec $$.
Exemple de script de commande : ScriptParametres
Résultat à l'exécution
- Récupération du résultat d'exécution de la dernière commande via le code $?.
0 indique "Pas d'erreur d'exécution, sortie normale".
Pas d'erreur d'exécution
Erreur d'exécution
- Existence des classiques instructions de structuration if, case, for et while.
if commande
then
...
else
..
fi |
Exemple |
case variable in
v1|v2|...|vn)
...;;
w1|w2|...|wn)
...;;
esac |
Exemple |
for variable in liste
do
...
done |
Exemple |
- test : Evaluation d'une expression.
- Opérateurs sur les fichiers :
- -d E : E répertoire
- -e E : E existe
- -r E : E lisible
- -s E : E de taille non nulle
- -w E : E peut être écrit
- -x E : E exécutable
- ...
- Opérateurs de comparaison entre deux expressions de type chaine de caractères :
- E : E non chaine vide
- E1 == E2 : E1 égal à E2
- E1 != E2 : E1 différent de E2
- Opérateurs de comparaison sur expressions numériques :
- E1 -eq E2 : E1 égal à E2
- E1 -ne E2 : E1 différent de E2
- E1 -ge E2 : E1 plus grand ou égal à E2
- E1 -gt E2 : E1 strictement plus grand que E2
- E1 -le E2 : E1 plus petit ou égal à E2
- E1 -lt E2 : E1 strictement plus petit que E2
- Opérateurs booléens :
- (E) : E est vrai
- !E : E est faux
- E1 -a E2 : E1 et E2
- E1 -o E2 : E1 ou E2
Test d'égalité et test de différence
entre variable et constante numérique
Tests d'existence de fichiers
Tests de lisibilité de fichiers
Tests d'accès en écriture de fichiers
RETOUR
|