diff --git a/fr-fr/bash-fr.html.markdown b/fr-fr/bash-fr.html.markdown
new file mode 100644
index 00000000..4678237d
--- /dev/null
+++ b/fr-fr/bash-fr.html.markdown
@@ -0,0 +1,229 @@
+---
+category: tool
+tool: bash
+contributors:
+ - ["Max Yankov", "https://github.com/golergka"]
+ - ["Darren Lin", "https://github.com/CogBear"]
+ - ["Alexandre Medeiros", "http://alemedeiros.sdf.org"]
+ - ["Denis Arh", "https://github.com/darh"]
+ - ["akirahirose", "https://twitter.com/akirahirose"]
+ - ["Anton Strömkvist", "http://lutic.org/"]
+ - ["Rahil Momin", "https://github.com/iamrahil"]
+ - ["Gregrory Kielian", "https://github.com/gskielian"]
+translators:
+ - ["Baptiste Fontaine", "http://bfontaine.net"]
+filename: LearnBash-fr.sh
+lang: fr-fr
+---
+
+Bash est le nom du shell UNIX, qui était aussi distribué avec le système
+d’exploitation GNU et est le shell par défaut sur Linux et Mac OS X.
+
+Presque tous les exemples ci-dessous peuvent être écrits dans un script shell
+ou exécutés directement dans le terminal.
+
+[Plus d’informations ici.](http://www.gnu.org/software/bash/manual/bashref.html)
+
+```bash
+#!/bin/bash
+# La première ligne du script s’appelle le « shebang, » qui indique au système
+# comment exécuter le script : http://fr.wikipedia.org/wiki/Shebang
+# Comme vous pouvez le remarquer, les commentaires commencent par #. Le shebang
+# est aussi un commentaire
+
+# Un exemple simple qui affiche « Hello world! » :
+echo Hello world!
+
+# Chaque commande commence sur une nouvelle ligne ou après un point-virgule :
+echo 'Ceci est la première ligne'; echo 'Ceci est la seconde ligne'
+
+# La déclaration d’une variable ressemble à ça :
+VARIABLE="Du texte"
+
+# Mais pas comme ça :
+VARIABLE = "Du texte"
+# Bash va penser que VARIABLE est une commande qu’il doit exécuter et va
+# afficher une erreur parce qu’elle est introuvable.
+
+# Utiliser la variable :
+echo $VARIABLE
+echo "$VARIABLE"
+echo '$VARIABLE'
+# Quand vous utilisez la variable en elle-même – en lui assignant une valeur,
+# en l’exportant ou autre – vous écrivez son nom sans $. Si vous voulez
+# utiliser sa valeur, vous devez utiliser $.
+# Notez que ' (guillemet droit simple) empêche l’expansion des variables !
+
+# Substitution de chaîne de caractères dans les variables
+echo ${VARIABLE/Some/A}
+# Ceci va remplacer la première occurrence de « Some » par « A »
+
+# Sous-chaîne d’une variable
+echo ${VARIABLE:0:7}
+# Ceci va retourner seulement les 7 premiers caractères de la valeur
+
+# Valeur par défaut d’une variable
+echo ${FOO:-"ValeurParDefautSiFOOestVideOuInexistant"}
+# Ceci marche pour null (FOO=), la chaîne de caractères vide (FOO=""). Zéro
+# (FOO=0) retourne 0
+
+# Variables pré-remplies :
+# Il y a quelques variables pré-remplies utiles, comme :
+echo "La valeur de retour du dernier programme : $?"
+echo "Le PID du script : $$"
+echo "Nombre d’arguments : $#"
+echo "Arguments du script : $@"
+echo "Arguments du script séparés en plusieurs variables : $1 $2..."
+
+# Lire une valeur depuis l’entrée standard :
+echo "Quel est votre nom ?"
+read NAME # Notez que l’on a pas eu à déclarer une nouvelle variable
+echo Bonjour, $NAME!
+
+# Nous avons l’habituelle structure « if » :
+# Utilisez 'man test' pour plus d’informations à propos des conditions
+if [ $NAME -ne $USER ]
+then
+ echo "Votre nom n’est pas votre pseudo"
+else
+ echo "Votre nom est votre pseudo"
+fi
+
+# Il y a aussi l’exécution conditionnelle
+echo "Toujours exécuté" || echo "Exécuté si la première commande ne réussit pas"
+echo "Toujours exécuté" && echo "Exécuté si la première commande réussit"
+
+# Pour utiliser && et || avec des commandes « if, » vous devez utiliser
+# plusieurs paires de crochets :
+if [ $NAME == "Steve" ] && [ $AGE -eq 15 ]
+then
+ echo "Ceci sera exécuté si $NAME est Steve ET $AGE est 15."
+fi
+
+if [ $NAME == "Daniya" ] || [ $NAME == "Zach" ]
+then
+ echo "Ceci sera exécuté si $NAME est Daniya OU Zach."
+fi
+
+# Les expressions sont écrites dans le format suivant :
+echo $(( 10 + 5 ))
+
+# Contrairement aux autres langages de programmation, Bash est un shell — il
+# est donc exécuté dans le contexte du répertoire courant. Vous pouvez lister
+# les fichiers et dossiers dans le répertoire courant avec la commande `ls` :
+ls
+
+# Ces commandes ont des options qui contrôlent leur exécution :
+ls -l # Liste tous les fichiers et répertoires sur des lignes séparées
+
+# Les résultat de la commande précédente peuvent être passés à la commande
+# suivante en entrée.
+# La commande grep filtre l’entrée avec les motifs donnés. On peut ainsi lister
+# les fichiers .txt dans le répertoire courant :
+ls -l | grep "\.txt"
+
+# Vous pouvez aussi rediriger l’entrée et les sorties standards et d’erreur
+# d’une commande :
+python2 hello.py < "entrée.in"
+python2 hello.py > "sortie.out"
+python2 hello.py 2> "erreur.err"
+# Ceci va écraser le fichier s'il existe; si vous préférez écrire à la fin de
+celui-ci, utilisez >> à la place.
+
+# Les commandes peuvent se substituer à l’intérieur d’autres commandes en
+# utilisant $( ) :
+# La commande ci-dessous affiche le nombre de fichiers et répertoires dans le
+# répertoire courant :
+echo "Il y a $(ls | wc -l) choses ici."
+
+# On peut faire la même chose avec les accents graves `` mais on ne peut pas
+# les imbriquer — la façon la plus courante est d’utiliser $( ).
+echo "There are `ls | wc -l` items here."
+
+# Bash a une commande case qui marche de façon similaire au switch de Java et
+# C++ :
+case "$VARIABLE" in
+ #List patterns for the conditions you want to meet
+ 0) echo "There is a zero.";;
+ 1) echo "There is a one.";;
+ *) echo "It is not null.";;
+esac
+
+# La boucle for itère autant de fois qu’elle a d’arguments :
+# Le contenu de $VARIABLE est affiché trois fois.
+for VARIABLE in {1..3}
+do
+ echo "$VARIABLE"
+done
+
+# Ou écrivez-la de façon « traditionnelle » :
+for ((a=1; a <= 3; a++))
+do
+ echo $a
+done
+
+# Elles peuvent aussi être utilisées pour agir sur des fichiers :
+# Cette boucle va exécuter la commande 'cat' sur fichier1 et fichier2
+for VARIABLE in fichier1 fichier2
+do
+ cat "$VARIABLE"
+done
+
+# …ou la sortie d’une commande :
+# Ceci va afficher la sortie de ls.
+for OUTPUT in $(ls)
+do
+ cat "$OUTPUT"
+done
+
+# Boucle while :
+while [ true ]
+do
+ echo "corps de la boucle ..."
+ break
+done
+
+# Vous pouvez aussi définir des fonctions
+# Définition :
+function foo ()
+{
+ echo "Les arguments fonctionnent comme les arguments de script : $@"
+ echo "Et : $1 $2..."
+ echo "Ceci est une fonction"
+ return 0
+}
+
+# Ou plus simplement :
+bar ()
+{
+ echo "Une autre façon de définir des fonctions !"
+ return 0
+}
+
+# Appeler votre fonction
+foo "Mon nom est" $NAME
+
+# Il y a plein de commandes utiles que vous devriez apprendre :
+# affiche les 10 dernières lignes de fichier.txt
+tail -n 10 fichier.txt
+# affiche les 10 premières lignes de fichier.txt
+head -n 10 fichier.txt
+# trie les lignes de fichier.txt
+sort fichier.txt
+# montre ou omet les lignes répétées, avec -d pour les montrer
+uniq -d fichier.txt
+# affiche uniquement la première colonne avant le caractère « , »
+cut -d ',' -f 1 fichier.txt
+# remplace chaque occurrence de 'okay' par 'super' dans fichier.txt
+# (compatible avec les expression rationnelles)
+sed -i 's/okay/super/g' fichier.txt
+# affiche toutes les lignes de fichier.txt qui correspondent à une expression
+# rationnelle, dans cet exemple les lignes qui commencent par « foo » et
+# finissent par « bar »
+grep "^foo.*bar$" fichier.txt
+# ajoutez l’option « -c » pour afficher le nombre de lignes concernées
+grep -c "^foo.*bar$" fichier.txt
+# Si vous voulez vraiment chercher une chaîne de caractères, et non
+# l’expression rationnelle, utilisez fgrep (ou grep -F)
+fgrep "^foo.*bar$" fichier.txt
+```