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. ]