« Shell Unix » : différence entre les versions

Contenu supprimé Contenu ajouté
Mi Ga (discuter | contributions)
Ajout d'un lien
m Articles connexes : commandes unix
 
(10 versions intermédiaires par 8 utilisateurs non affichées)
Ligne 1 :
[[Fichier:Linux command-line. Bash. GNOME Terminal. screenshot.png|thumbvignette|Shell Bash sur Linux]]
Un '''shell Unix''' est un [[interpréteur de commandes]] destiné aux [[systèmes d'exploitation]] [[Unix]] et de [[type Unix]] qui permet d'accéder aux fonctionnalités internes du système d'exploitation. Il se présente sous la forme d'une [[interface en ligne de commande]] accessible depuis la [[Console système|console]] ou un [[terminal informatique|terminal]]. L'utilisateur lance des commandes sous forme d'une entrée texte exécutée ensuite par le shell. Dans les différents systèmes d'exploitation [[Microsoft Windows]], le programme analogue est [[command.com]], ou [[cmd.exe]].
 
Les systèmes d'exploitation de type [[Unix]] disposent le plus souvent d'un shell. À l'origine, l'[[interpréteur de commandes]] [[Valeur par défaut|par défaut]] était [[Bourne shell|sh]], qui donna naissance à de nombreuses variantes, dont [[csh]], étendu en [[tcsh]], ou [[Korn shell|ksh]], ou encore [[rc (shell)|rc]]... Mais aujourd'hui [[Bourne-Again shell|bash]], s'inspirant de [[Bourne shell|sh]], [[Korn shell|ksh]], et [[csh]], est le shell le plus répandu, bien qu'il existe d'autres interpréteurs de commandes, comme [[zsh]], ou [[Almquist shell|ash]].
 
== Historique des shells Unix ==
Le premier shell est le {{lien|fr=Thompson shell|lang=en}} apparu en 1971 avec la première version d’[[Unix]] et écrit par [[Ken Thompson]], l'un des créateurs d'[[Unix]]. Il est remplacé par le [[Bourne shell]], écrit par [[Stephen Bourne]], en 1977 pour la version 7 d'[[Unix]].
 
En 1978, [[Bill Joy]], alors étudiant à l'[[Université de Californie à Berkeley]], crée [[csh]] (C shell), une évolution du shell dont la syntaxe s'inspire de celle du langage C. Il permet notamment la réutilisation de l'historique des commandes. Une version plus moderne du c[[Csh|shcsh]] est ensuite publiée sous le nom [[tcsh]].
 
Le [[Korn shell]] (ksh) est publié en 1983 par [[David Korn]]. Il est compatible avec le [[Bourne shell]], reprend certaines fonctionnalités de [[csh]] et ajoute des fonctions de scripts avancées disponibles dans des langages plus évolués tels que le [[Perl (langage)|Perl]].
 
Le [[Bourne-Again shell]] (bash) apparait quant à lui en 1988. Il est écrit par [[Brian Fox]] pour la [[Free Software Foundation]] dans le cadre du projet [[GNU]]. C'est le shell de nombreuses implémentations libres d'[[Unix]], telles que les systèmes [[Linux|GNU/Linux]]. Il est compatible avec le [[Bourne shell]] dont il se veut une implémentation libre.
 
[[Paul Falstad]] crée [[Zshzsh]] en 1990 alors qu'il est étudiant à l'[[université de Princeton]]. Ce shell reprend les fonctions les plus pratiques de [[Bourne-Again shell|bash]], [[Cshcsh]], [[tcsh]].
 
== Shells ==
Ligne 22 :
** [[tcsh]] (Tenex C shell, version moderne du csh)
* Shell de [[David Korn]] : [[Korn shell]] (ksh)
* Shell de {{lien|fr=[[Kenneth Almquis|lang=en}}Almquist]], utilisé lorsqu'il est nécessaire d'avoir un shell prenant peu de place sur le disque, clone de la variante SVR4 du Bourne shell;
** [[Ash shell|Ash]] (Almquist SHell)
** [[Debian Almquist shell|Dash shell]] ([[Debian]] Almquist Shell)
* [[Zsh|Z Shell|Zsh]] (zsh), reprenant les fonctions les plus pratiques de bash, ksh et tcsh.
* [[Friendly Interactive Shell|fish]]
 
Ligne 31 :
{{...}}
 
== Gestion des entrées/sorties et redirection ==
Les shells permettent de réaliser des redirections. Une redirection consiste à rediriger l'entrée ou la sortie d'une commande vers une autre commande ou un fichier.
 
=== Redirection droite simple ===
Syntaxe :
<sourcesyntaxhighlight lang="bash"> commande > fichier </sourcesyntaxhighlight>
Le résultat de l'invocation de la commande <code>commande</code> sera écrit dans le fichier <code>fichier</code>, en écrasant le précédent contenu.
 
Exemple :
<sourcesyntaxhighlight lang="bash">
$: cat file
Welcome
Ligne 46 :
$: cat file
Hello world
</syntaxhighlight>
</source>
 
=== Redirection droite double ===
Syntaxe :
<sourcesyntaxhighlight lang="bash"> commande >> fichier </sourcesyntaxhighlight>
Le résultat de l'invocation de la commande <code>commande</code> sera écrit dans le fichier <code>fichier</code>, à la suite des données déjà présentes.
 
Exemple :
<sourcesyntaxhighlight lang="bash">
$: cat file
Welcome
Ligne 61 :
Welcome
Hello world
</syntaxhighlight>
</source>
 
=== Redirection gauche simple ===
Syntaxe :
<sourcesyntaxhighlight lang="bash"> commande < fichier </sourcesyntaxhighlight>
La commande <code>commande</code> va lire le contenu du fichier <code>fichier</code> au lieu de lire sur l'entrée standard (clavier).
 
Exemple :
<sourcesyntaxhighlight lang="bash">
$: cat < file
Welcome
</syntaxhighlight>
</source>
 
=== Redirection gauche double ===
Syntaxe :
<sourcesyntaxhighlight lang="bash"> commande << END </sourcesyntaxhighlight>
La commande <code>commande</code> va lire sur l'entrée standard jusqu'à ce que le mot suivant la double redirection soit rencontré.
 
Exemple :
<sourcesyntaxhighlight lang="bash">
$: cat << TOTO
? foo
Ligne 89 :
bar
moomoo
</syntaxhighlight>
</source>
 
=== Pipe ===
Syntaxe :
<sourcesyntaxhighlight lang="bash"> commande_1 | commande_2 </sourcesyntaxhighlight>
Le résultat de la commande <code>commande_1</code> va être redirigé dans l'entrée de la seconde commande <code>commande_2</code>.
 
Exemple :
<sourcesyntaxhighlight lang="bash">
$: echo "Hello world" | grep -o "Hello"
Hello
</syntaxhighlight>
</source>
 
== Fichier de configuration ==
Ligne 316 :
== Notes et références ==
=== Notes ===
<references {{Références|group="note"/>}}
 
=== Références ===
{{Références}}
{{références|colonnes=2}}
* {{Lien web |url=http://www.softlab.ntua.gr/facilities/documentation/unix/shelldiff.html
|titre=UNIX shell differences
|auteur=Brian Blackmore
Ligne 328 :
=== Articles connexes ===
* [[Interpréteur de commandes]]
* [[Commandes Unix]]
* [[Shell (informatique)]]
* [[Reverse shell]]