« Shell Unix » : différence entre les versions

Contenu supprimé Contenu ajouté
m Révocation des modifications de 83.115.86.98 (retour à la dernière version de JackBot)
m Articles connexes : commandes unix
 
(23 versions intermédiaires par 15 utilisateurs non affichées)
Ligne 1 :
[[Fichier:Linux command-line. Bash. GNOME Terminal. screenshot.png|vignette|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 évoluadonna ennaissance à de nombreuses versionsvariantes, 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 pouravec la première version d’[[Unix]]. Cette version du shell a étéet écriteécrit par [[Ken Thompson]], l'un des créateurs d'[[Unix]]. Il a été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 permettaitpermet notamment la réutilisation de l'historique des commandes. Une version plus moderne du [[Cshcsh]] aest étéensuite publiée sous le nom [[tcsh]].
 
Le [[Korn shell]] (ksh) a été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 teltels que le [[Perl (langage)|Perl]].
 
Le [[Bourne-Again shell]] (bash) est apparuapparait quant à lui en 1988. Il a été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]], teltelles que les systèmes [[Linux|GNU/Linux]]. Il est compatible avec le [[Bourne shell]] dont il se veut une implémentation libre.
 
[[Paul Falstad]] a créécrée [[Zshzsh]] en 1990 alors qu'il étaitest étudiant à l'[[université de Princeton]]. Ce shell reprend les fonctions les plus pratiques de [[Bourne-Again shell|bash]], [[Cshcsh]], [[tcsh]].
 
== Shells ==
Ligne 21 ⟶ 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 SHellShell)
* [[Zsh|Z Shell|Zsh]] (zsh), reprenant les fonctions les plus pratiques de bash, ksh et tcsh.
* [[Friendly Interactive Shell|fish]]
 
Ligne 30 ⟶ 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 45 ⟶ 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 60 ⟶ 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 88 ⟶ 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 173 ⟶ 174 :
|
|
|int.{{Efn|Same behavior as <tt>sh</tt>, but only if invoked as <tt>sh</tt> (bash 2+) or, since bash 4.2, also if invoked ''explicitly'' in POSIX compatibility mode (with options <tt>--posix</tt> or <tt>-o posix</tt>).<ref>{{lien web|langue=en|url=http://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html|titre=Bash Reference Manual: Bash Startup Files|série=gnu.org|consulté le=15 juin 2015}}</ref>.}}
|
|-
Ligne 315 ⟶ 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 327 ⟶ 328 :
=== Articles connexes ===
* [[Interpréteur de commandes]]
* [[Commandes Unix]]
* [[Shell (informatique)]]
* [[Reverse shell]]
 
{{Palette|Shell|Langages de programmation}}
 
{{portail|informatique|programmation informatique}}