GNU/Linux >> Tutoriels Linux >  >> Linux

Personnalisation du shell Bash

Le shell Bash est un environnement de traitement de commandes que de nombreux administrateurs système et développeurs utilisent quotidiennement. Il a été développé pour la première fois en 1989 et a été le shell par défaut de nombreuses distributions depuis la création de Linux. Dans la plupart des cas, Bash ou 'Bourne-again shell' est le cadre dans lequel vous travaillez chaque fois que vous ouvrez la ligne de commande. Il possède également son propre langage de script et propose un grand nombre d'utilitaires pour ceux qui ont la discipline mentale nécessaire pour les apprendre.

Pourquoi personnaliseriez-vous votre coque ?

Le shell Bash offre une tonne d'utilité, mais ce n'est pas un système parfait. Au fil des ans, les passionnés de la ligne de commande ont trouvé des failles et apporté des améliorations à divers shells, et Bash ne fait pas exception. Il y a des tonnes d'ajouts que vous pouvez apporter à Bash. Tout, des changements de fonctionnalité significatifs aux raccourcis et aux changements esthétiques effectués selon vos goûts personnels. Cela dit, chacun a sa propre saveur esthétique préférée, je vais donc me concentrer sur les changements de fonctionnalité.

Commencez petit

Le moyen le plus simple de commencer à personnaliser votre shell est de savoir où est passé le plus clair de votre temps de ligne de commande. Vous trouvez-vous en train d'utiliser grep et netstat souvent? Vous déplacez-vous dans le système de fichiers un nombre incalculable de fois par heure ? Si oui, comment pouvez-vous rendre ces tâches plus efficaces ? Dans le premier article que j'ai écrit pour ce site, j'ai parlé d'un script d'automatisation appelé AutoHotkey. Malheureusement, il ne fonctionne que sur Windows. J'ai été mis au défi par un lecteur de trouver quelque chose qu'il pourrait utiliser pour Linux pour accomplir les mêmes tâches. Bien qu'il n'y ait pas de solution parfaitement emballée à ce défi, vous pouvez créer un alias pour les commandes modifiées à l'intérieur de votre shell dans le même sens. Bien que cela puisse prendre un peu de temps, si vous prenez le temps d'apprendre les alias et d'en créer vous-même, vous serez un administrateur système plus intelligent et plus efficace.

Rick Greene, membre de la communauté Enable Sysadmin, a partagé l'un de ses alias préférés, où il s'élève au shell racine en utilisant sudo .

alias root="sudo su - root"

En effet, il travaille en tant que root utilisateur tout en gardant une trace de ses actions dans le système en utilisant son propre mot de passe de compte utilisateur. Alors que la méthode préférée ici serait d'utiliser le sudo commande avant toute action, la beauté de cet exemple est que Bash permet à chaque utilisateur de créer une solution qui fonctionne pour lui ! Vous pouvez alias pratiquement toutes les commandes de votre shell. Je vous recommande d'essayer de créer quelques-uns de vos propres alias maintenant.

[ Pour plus d'informations sur la création d'alias sous Linux, consultez mon article précédent. ]

X> f(x)

Si vous avez un penchant pour les mathématiques, vous savez déjà de quoi nous parlons ici. Les fonctions ont fait leur chemin hors de vos cauchemars en classe et dans votre vie professionnelle ! La bonne nouvelle ici est qu'elles sont assez simples et peuvent être très utiles. Ils nous permettent de faire le pont entre l'aliasing et les scripts complets. Le gros avantage ici est que vous pouvez enchaîner plusieurs commandes ensemble. Regardons la syntaxe pour créer ces fonctions et un exemple pratique d'utilisation. Pour créer une fonction, utilisez la syntaxe suivante :

function_name () {command1; command2;}
#You MUST use a semicolon after each command, including the last. 

Comment utiliserions-nous cela? L'un des meilleurs exemples que j'ai vu flotter sur le Web est une fonction vous permettant de créer un nouveau répertoire, puis de vous déplacer immédiatement dans ce répertoire. Cette fonction ressemblerait à ceci :

mkd () {mkdir -p $1; cd $1;}

Maintenant, si nous créons un répertoire appelé func_test en utilisant le mkd fonction, nous pouvons voir qu'elle nous place automatiquement dans le nouveau répertoire.

# mkd func_test
# pwd
# Home/user/func_test

L'histoire se répète? Seulement si vous voulez...

Avant d'écrire cet article, j'avais contacté notre communauté de contributeurs pour obtenir des commentaires sur leurs améliorations préférées de Bash. Il y avait un thème commun dans tous les commentaires que j'ai reçus. Les gens veulent changer la façon dont Bash history fonctionne. L'un des changements les plus utiles que j'ai vus était la possibilité de supprimer les entrées en double de l'history .

Seth Kenlon d'Opensource.com a envoyé ce qui suit depuis son .bashrc dossier. Il permet l'history pour ignorer les doublons et les commandes commençant par un espace.

"export HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups"

Red Hatter Steve Newsted m'a indiqué un excellent fil de discussion sur StackExchange, où un utilisateur cherchait à modifier l'history de Bash pour se souvenir de tout de chaque terminal sur sa machine tout en ayant cet history être accessible depuis chaque terminal de ladite machine. Découvrez la créativité de la réponse de suntzuisafterU. Ajoutez simplement ce qui suit à votre ~/.bashrc fichier.

#Avoid duplicates
HISTCONTROL=ignoredups:erasedups  
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

Prochaines étapes

Vous pouvez maintenant voir la pléthore de modifications, d'optimisations et de personnalisations disponibles dans Bash. Cet article ne fait qu'effleurer la surface de ce que vous pouvez faire dans le shell. Sortez et explorez-le par vous-même ! Si vous avez un ajout préféré à Bash, n'hésitez pas à l'envoyer à l'équipe à [email protected]. J'aimerais voir certaines des solutions créatives que nos lecteurs mettent en œuvre !

[ Besoin d'aide supplémentaire pour démarrer avec l'administration système Linux ? Suivez un cours d'administration système Red Hat. ]


Linux
  1. La commande "eval" dans Bash ?

  2. La fête ?

  3. Personnalisation de Bash Shell :Gras/couleur La commande ?

  4. Comprendre la signification de `$_` ?

  5. La signification de $ ? Dans un script shell ?

.bashrc contre .bash_profile

Qu'est-ce que le Shell sous Linux ?

Comment lire l'intégralité du script Shell avant de l'exécuter ?

La boucle while dans les scripts shell

Commande Bash fc :utilisez facilement le shell Bash comme un pro

Quelle est la différence entre exécuter un script Bash et le sourcer ?