[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Ceci est une ancienne révision du document !


BASH ou le Bourne Again Shell

Qu'est ce Qu'un Shell?

Ouais, c'est quoi donc le Shell? Et bien, le Shell est fondamentalement un environnement utilisateur de lignes de commande. En substance, il s'agit d'une application qui s'exécute lorsque l'utilisateur se connecte et lui permet d'exécuter des applications supplémentaires. À certains égards, le Shell est très similaire à une interface utilisateur graphique, en ce sens qu'il fournit un cadre pour l'exécution des commandes et lancer des programmes. Il existe une panoplie de Shell incluse avec une installation complète de Slackware. Toutefois dans ce livre, nous allons seulement discuter de bash (1), le Bourne Again Shell. Les utilisateurs avancés peuvent envisager d'utiliser le puissant zsh (1), et les utilisateurs familiers avec les systèmes UNIX plus anciens peuvent apprécier ksh. Le masochiste pourrait vraiment choisir le csh, mais les nouveaux utilisateurs devraient s'en tenir à bash.

Variables d'Environnement

Tous les Shells faciltent l'execution de certaines tâches pour l'utilisateur en pemettant de garder une trace a travers les variables d'environnement. Une variable d'environnement est tout simplement un nom court pour certains bits d'information que l'utilisateur souhaite stocker et utiliser plus tard. Par exemple, la variable d'environnement PS1 specifie a bash comment formater son invite de commande.D'autres variables peuvent servir a definir le fonconnement de certaines applications. Par exemple, la variable LESSOPEN indique a less d'executer le tres utile pre-processeur lesspipe.sh dont nous avons discute, et LS_OPTIONS active les options de couleur d'affichage pour ls.

Il est tres aise de definir notre propre variable d'environnement. bash contient deux fonctions natives permettant de gerer cela: set et export. En outre, une variable d'environnement peut etre supprimer en utilisant unset. (Pas de panique si vous supprimer une variable d'environnement par megarde. La deconnexion du terminal suivie d'une reconnexion restaurera les variables d'environnement par defaut.) Une variable d'environnement peut etre reference en placant tout simplement le symbole ($) devant la variable.

darkstar:~$ set FOO=bar
darkstar:~$ echo $FOO
bar

La difference principale entre set et export est que export exportera (naturellement) la variable dans tous les sous-shells subsequents. (Un sous-shell est tout simplement un shell s'executant a l'interieur d'un autre shell, shell parent.) Cette difference est notable lorsque vous utilisez la variable PS1 qui controle l'invite de commade bash.

darkstar:~$ set PS1='FOO '
darkstar:~$ export PS1='FOO '
FOO 

Une des variables d'environnement tres importantes dans bash et d'autres shells est PATH. PATH est tout simplement la liste des repertoires consultes lorsqu'une application a besoin de s'executer. Par exemple, top(1) se touve dans /usr/bin/top. Vous pouvez l'exécuter simplement en spécifiant son chemin d'accès complet à elle, mais si /usr/bin est dans votre variable PATH, bash verifiera ce repertoire si vous ne spécifiez pas de chemin d'accès complet. VCe comportement est bien visible lorsque vous essayez d'executer un programme qui n'est pas dans votre PATH d'utilisateur normal, par exemple, ifconfig(8).

darkstar:~$ ifconfig
bash: ifconfig: command not found
darkstar:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/opt/www/htdig/bin:.

Above, you see a typical PATH for a mortal user. You can change it on your own the same as any other environment variable. If you login as root however, you'll see that root has a different PATH. Ci-dessus, vous voyez un PATH typique pour un utilisateur normal. Vous pouvez le modifier comme n'importe quelle autre variable d'environnement. Cependant, si vous vous connectez en tant que root, vous verrez que le PATH de root est différent.

darkstar:~$ su -
Password: 
darkstar:~# echo $PATH
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/opt/www/htdig/bin

Les Caractères Génériques

Les caractères génériques sont des caractères spéciaux qui indiquent au shell de genere des correspondances par rapport à certains critères. Si vous avez une expérience avec MS-DOS, vous reconnaîtrez * comme un caractère générique qui correspond à quoi que ce soit. bash utilise ce caractère générique et plusieurs autres pour vous permettre de facilement définir exactement ce que vous voulez faire.

This first and most common of these is, of course, *. The asterisk matches any character or combination of characters, including none. Thus b* would match any files named b, ba, bab, babc, bcdb, and so forth. Slightly less common is the ?. This wildcard matches one instance of any character, so b? would match ba and bb, but not b or bab. Le permier et le plus commun de cette liste de caractères génériques est, bien sûr, *. L'astérisque correspond à n'importe quel caractère ou combinaison de caractères, y compris aucun. Ainsi b* correspond à tout fichier nomms b, ba, bab, babc, bcdb, et ainsi de suite. Un peu moins commun est le caractère ?. Ce caractère correspond à une instance de tout caractère, de sorte que b? correspondrait a bas et bb, mais pas a b ou bab.

darkstar:~$ touch b ba bab
darkstar:~$ ls *
b ba bab
darkstar:~$ ls b?
ba

No, the fun doesn't stop there! In addition to these two we also have the bracket pair “[ ]” which allows us to fine tune exactly what we want to match. Whenever bash see the bracket pair, it substitutes the contents of the bracket. Any combination of letters or numbers may be specified in the bracket as long as they are comma seperated. Additionally, ranges of numbers and letters may be specified as well. This is probably best shown by example. Non, le fun ne s'arrête pas là! En plus de ces deux, nous avons aussi la paire de crochets “[ ]” qui nous permet d'affiner le critere de correspondance. Chaque fois que bash rencontre la Combinaison support, il remplace le contenu de la parenthèse. tout combinaison de lettres ou de chiffres peut être spécifié dans le support comme tant qu'ils sont séparées par des virgules. En outre, varie de chiffres et de lettres peuvent être spécifiés ainsi. Ceci est probablement mieux représenté par exemple.

darkstar:~$ ls a[1-4,9]
a1 a2 a3 a4 a9

Since Linux is case-sensitive, capital and lower-case letters are treated differently. All capital letters come before all lower-case letters in “alphabetical” order, so when using ranges of capital and lower-case letters, make sure to get them right.

darkstar:~$ ls 1[W-b]
1W 1X 1Y 1Z 1a 1b
darkstar:~$ ls 1[w-B]
/bin/ls: cannot access 1[b-W]: No such file or directory

In the second example, 1[b-W] isn't a valid range, so the shell treats it as a filename, and since that file doesn't exist, ls tells you so.

La Touche de Tabulation

Redirection d'Entrée et de Sortie

Gestion de Taches

Les Terminaux

Personalisation

Navigation

Chapitre précédent : L'invite de commandes (shell)

Chapitre suivant : Contrôle des processus

Sources

  • Publié iniialement par Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson
  • Traduction Initiale de escaflown

 fr:slackbook:bash ()