« Shell bash » : différence entre les versions
→Arguments : Ajout du paramètre "$_". |
Légères correction de mise en page et de Français + modification de l'EOF + ajout d'une astuce concernant l’interprétation de celui-ci. |
||
| Ligne 1 : | Ligne 1 : | ||
[[Category:shell]] | [[Category:shell]] | ||
Le shell | Le ''shell Bash'' est l'interpréteur de commandes par défaut de la plupart des distributions Linux. Il peut être personnalisé en modifiant son apparence ou en lui activant des paramètres. | ||
=Configuration= | =Configuration= | ||
| Ligne 8 : | Ligne 8 : | ||
* Un local pour chaque utilisateurs en particulier : <source lang="bash" inline>~/.bashrc</source> | * Un local pour chaque utilisateurs en particulier : <source lang="bash" inline>~/.bashrc</source> | ||
Pour que les modifications prennent effet, il faut recharger le fichier après modification soit en relançant le shell, soit en exécutant le fichier comme s'il s’agissait d'une commande <source lang="bash" inline>. .bashrc</source> ou bien en utilisant la commande <source lang="bash" inline>source ~/.bashrc</source>. | Pour que les modifications prennent effet, il faut recharger le fichier après modification soit en relançant le shell, soit en exécutant le fichier comme s'il s’agissait d'une commande <source lang="bash" inline>. .bashrc</source> ou bien en utilisant la commande <source lang="bash" inline>source ~/.bashrc</source>. | ||
===Auto complétion=== | ===Auto complétion=== | ||
Le paquet <source lang="bash" inline>bash-completion</source> offre la possibilité de compléter les commandes bash à l'aide de la tabulation. Il faut entrer les quelques lignes suivantes dans l'un des fichiers de configuration de bash pour que cela prenne effet. | Le paquet <source lang="bash" inline>bash-completion</source> offre la possibilité de compléter les commandes bash à l'aide de la tabulation. Il faut entrer les quelques lignes suivantes dans l'un des fichiers de configuration de bash pour que cela prenne effet. | ||
| Ligne 23 : | Ligne 24 : | ||
==inputrc== | ==inputrc== | ||
===Insensibilité à la casse=== | ===Insensibilité à la casse=== | ||
Rendre insensible l'auto complétion du shell | Rendre insensible l'auto complétion du ''shell Bash'' à la casse (très utile quand on tape vite au clavier et que le système écrit ''/Etc'' au lieu de ''/etc'' et dit "Aucun fichier ou dossier de ce type"). | ||
vim ~/.inputrc | vim ~/.inputrc | ||
Ajouter cette ligne : | Ajouter cette ligne : | ||
<source lang="bash"> | <source lang="bash"> | ||
set completion-ignore-case On | set completion-ignore-case On | ||
</source> | </source> | ||
===Source de la section=== | ===Source de la section=== | ||
http://askubuntu.com/questions/87061/can-i-make-tab-auto-completion-case-insensitive-in-the-terminal | http://askubuntu.com/questions/87061/can-i-make-tab-auto-completion-case-insensitive-in-the-terminal | ||
=Redirections= | =Redirections= | ||
==Rediriger plusieurs lignes== | ==Rediriger plusieurs lignes== | ||
Pour ce faire nous utiliserons un EOF (End Of File). Il faut précéder et succéder une chaîne de caractère quelconque par des traits de soulignement afin de marquer le début et la fin de notre bloque de texte (à la manière du ''motd'' Cisco). | Pour ce faire nous utiliserons un EOF (End Of File). Il faut précéder et succéder une chaîne de caractère quelconque par des traits de soulignement afin de marquer le début et la fin de notre bloque de texte (à la manière du ''motd'' Cisco). | ||
===Dans un fichier=== | ===Dans un fichier=== | ||
<source lang="bash"> | <source lang="bash"> | ||
ycharbi@XPS13:/tmp$ cat | ycharbi@XPS13:/tmp$ cat << '_EOF_' > foo.txt | ||
> Écrire et | > Écrire et | ||
> terminer par le | > terminer par le | ||
> même symbole | > même symbole | ||
> | > _EOF_ | ||
ycharbi@XPS13:/tmp$ cat foo.txt | ycharbi@XPS13:/tmp$ cat foo.txt | ||
Écrire et | Écrire et | ||
| Ligne 46 : | Ligne 52 : | ||
même symbole | même symbole | ||
</source> | </source> | ||
===Dans le shell=== | ===Dans le shell=== | ||
<source lang="bash"> | <source lang="bash"> | ||
ycharbi@XPS13:/tmp$ cat << | ycharbi@XPS13:/tmp$ cat << _EOF_ | ||
> Écrire et | > Écrire et | ||
> terminer par le | > terminer par le | ||
> même symbole | > même symbole | ||
> | > _EOF_ | ||
Écrire et | Écrire et | ||
terminer par le | terminer par le | ||
même symbole | même symbole | ||
</source> | </source> | ||
{{Astuce|Le fait de mettre des quottes au mot clé de fin de fichier (''_EOF_'' dans l'exemple, mais pourrai être ''toto'') permet de désactiver interprétation ''Bash''. Si vous ne les mettez pas, le ''shell'' interprétera le code que vous entrerez (les variables notamment). À vous de voir ce que vous voulez faire. Ceci est expliqué dans ce [http://tldp.org/LDP/abs/html/here-docs.html chapitre] du guide de programmation ''Bash'' avancé repris par ce [https://stackoverflow.com/questions/2953081/how-can-i-write-a-heredoc-to-a-file-in-bash-script commentaire].}} | |||
===Source de la section=== | ===Source de la section=== | ||
* https://www.bggofurther.com/fr/2017/10/write-multiple-lines-to-file-in-bash-script/ | * https://www.bggofurther.com/fr/2017/10/write-multiple-lines-to-file-in-bash-script/ | ||
=Arguments= | =Arguments= | ||
Voici une liste d'astuces pour récupérer des arguments tapés en ''bash'': | Voici une liste d'astuces pour récupérer des arguments tapés en ''bash'': | ||
Version du 5 juillet 2020 à 20:53
Le shell Bash est l'interpréteur de commandes par défaut de la plupart des distributions Linux. Il peut être personnalisé en modifiant son apparence ou en lui activant des paramètres.
Configuration
bashrc
Le <source lang="bash" inline>.bashrc</source> est un fichier qui contient des commandes à exécuter au moment de la connexion d'un utilisateur. Il en existe 2 types :
- Un générique pour tout les utilisateurs : <source lang="bash" inline>/etc/bash.bashrc</source>
- Un local pour chaque utilisateurs en particulier : <source lang="bash" inline>~/.bashrc</source>
Pour que les modifications prennent effet, il faut recharger le fichier après modification soit en relançant le shell, soit en exécutant le fichier comme s'il s’agissait d'une commande <source lang="bash" inline>. .bashrc</source> ou bien en utilisant la commande <source lang="bash" inline>source ~/.bashrc</source>.
Auto complétion
Le paquet <source lang="bash" inline>bash-completion</source> offre la possibilité de compléter les commandes bash à l'aide de la tabulation. Il faut entrer les quelques lignes suivantes dans l'un des fichiers de configuration de bash pour que cela prenne effet. <source lang="bash"> if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
fi </source>
Personnalisation du prompt
inputrc
Insensibilité à la casse
Rendre insensible l'auto complétion du shell Bash à la casse (très utile quand on tape vite au clavier et que le système écrit /Etc au lieu de /etc et dit "Aucun fichier ou dossier de ce type").
vim ~/.inputrc
Ajouter cette ligne :
<source lang="bash"> set completion-ignore-case On </source>
Source de la section
http://askubuntu.com/questions/87061/can-i-make-tab-auto-completion-case-insensitive-in-the-terminal
Redirections
Rediriger plusieurs lignes
Pour ce faire nous utiliserons un EOF (End Of File). Il faut précéder et succéder une chaîne de caractère quelconque par des traits de soulignement afin de marquer le début et la fin de notre bloque de texte (à la manière du motd Cisco).
Dans un fichier
<source lang="bash"> ycharbi@XPS13:/tmp$ cat << '_EOF_' > foo.txt > Écrire et > terminer par le > même symbole > _EOF_ ycharbi@XPS13:/tmp$ cat foo.txt Écrire et terminer par le même symbole </source>
Dans le shell
<source lang="bash"> ycharbi@XPS13:/tmp$ cat << _EOF_ > Écrire et > terminer par le > même symbole > _EOF_ Écrire et terminer par le même symbole </source>
ASTUCE
Le fait de mettre des quottes au mot clé de fin de fichier (_EOF_ dans l'exemple, mais pourrai être toto) permet de désactiver interprétation Bash. Si vous ne les mettez pas, le shell interprétera le code que vous entrerez (les variables notamment). À vous de voir ce que vous voulez faire. Ceci est expliqué dans ce chapitre du guide de programmation Bash avancé repris par ce commentaire.Source de la section
Arguments
Voici une liste d'astuces pour récupérer des arguments tapés en bash:
| Argument | Signification |
|---|---|
| <source lang="bash" inline><Échap> + _</source> | Colle le dernier argument passé à la dernière commande tapée |
| <source lang="bash" inline>!$</source> | Équivaut, au moment d'envoyer la commande, au dernier argument passé à la dernière commande tapée |
| <source lang="bash" inline>!:$</source> | Équivaut, au moment d'envoyer la commande, à l’énième argument passé à la dernière commande tapée (remplacer le <source lang="bash" inline>$</source> par le numéro de l'argument) |
| <source lang="bash" inline>!!</source> | Équivaut, au moment d'envoyer la commande, à tout les arguments de la dernière commande tapée |
| <source lang="bash" inline>^toto^titi</source> | Permet de remplacer toto par titi dans la commande précédente (à entrer seul, sans commande ni argument). Un <source lang="bash" inline>ls /etc</source> suivi d'un <source lang="bash" inline>^/etc^/</source> donnera un <source lang="bash" inline>ls /</source> |
| <source lang="bash" inline>~+</source> | Donne le répertoire courant (est identique à <source lang="bash" inline>$(pwd)</source>) |
| <source lang="bash" inline><ctrl> + alt + e</source> | Déroule la véritable signification d'un alias. Par exemple, si je tape <source lang="bash" inline>ls</source> suivi de ce raccourci clavier, j'obtiens <source lang="bash" inline>ls --color</source> qui est définit comme alias dans mon <source lang="bash" inline>.bashrc</source> |
| <source lang="bash" inline>$_</source> | Correspond au dernier paramètre de la dernière commande exécuté. La différence avec les motifs présentés plus haut est qu'il utilisable même lors d'un enchaînement de commande comme par exemple <source lang="bash" inline>mkdir -p ~/tmp/conteneur && cd $_</source> |