Recherche…


Introduction

Le shell exécute un programme en réponse à son invite. Lorsque vous donnez une commande, le shell recherche le programme, puis l'exécute. Par exemple, lorsque vous donnez la commande ls, le shell recherche l'utilitaire / programme nommé ls, puis l'exécute dans le shell. Les arguments et les options que vous fournissez avec les utilitaires peuvent avoir un impact sur le résultat obtenu. Le shell est également appelé interface de ligne de commande ou de ligne de commande.

Changer le shell par défaut

La plupart des distributions modernes seront fournies avec BASH ( B ane A gain SH ell) pré-installé et configuré en tant que shell par défaut.

La commande (en fait un binaire exécutable, un ELF) responsable du changement de shell sous Linux est chsh ( ch ange sh ell).

Nous pouvons d’abord vérifier quels shells sont déjà installés et configurés sur notre machine en utilisant la commande chsh -l , qui affichera un résultat similaire à celui-ci:

[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

Dans certaines distributions Linux, chsh -l n'est pas valide. Dans ce cas, la liste de tous les shells disponibles se trouve dans le fichier / etc / shells. Vous pouvez afficher le contenu du fichier avec cat :

[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

Maintenant, nous pouvons choisir notre nouveau shell par défaut, par exemple fish , et le configurer en utilisant chsh -s ,

[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password: 
Shell changed.

Il ne reste plus qu'à préparer un cycle de déconnexion et d'ouverture de session et à profiter de notre nouveau shell par défaut.

Si vous souhaitez modifier le shell par défaut pour un utilisateur différent et que vous disposez de privilèges d’administrateur sur la machine, vous pourrez le faire en utilisant chsh tant que root . Donc, en supposant que nous voulions changer le shell par défaut de user_2 en poisson, nous utiliserons la même commande qu'auparavant, mais en ajoutant le nom d'utilisateur de l'autre utilisateur, chsh -s /usr/bin/fish user_2 .

Afin de vérifier ce qu'est le shell par défaut actuel, nous pouvons afficher la variable d'environnement $SHELL , qui pointe vers le chemin d'accès à notre shell par défaut. Après notre modification, nous nous attendrions à obtenir un résultat similaire,

 ~  echo $SHELL                                 
/usr/bin/fish

options chsh :

-s shell

Définit le shell comme shell de connexion.

-l , --list-shells

Imprimer la liste des shells listés dans / etc / shells et quitter.

-h , --help

Imprimer un message d'utilisation et quitter.

-v , --version

Imprimer les informations de version et quitter.

Utilitaires de base de shell


Personnalisation de l'invite Shell

L'invite de commande par défaut peut être modifiée pour être différente et courte. Si le répertoire en cours est long, l'invite de commande par défaut devient trop volumineuse. Utiliser PS1 devient utile dans ces cas. Une commande courte et personnalisée jolie et élégante. Dans le tableau ci-dessous, PS1 a été utilisé avec un certain nombre d’arguments pour afficher différentes formes d’invites de shell. L'invite de commande par défaut ressemble à ceci: user@host ~ $ dans mon cas, cela ressemble à ceci: bruce@gotham ~ $ . Il peut changer selon le tableau ci-dessous:

Commander Utilitaire
PS1 = '\ w $' ~ $ shell en tant que nom de répertoire. Dans ce cas, le répertoire racine est Root.
PS1 = '\ h $' gotham $ shell gotham $ comme nom d'hôte
PS1 = '\ u $' bruce $ shell prompt en tant que nom d'utilisateur
PS1 = '\ t $' 22:37:31 $ shell au format 24 heures
PS1 = '@ $' 10:37 PM shell au format 12 heures
PS1 = '! $ ' 732 affichera le numéro d'historique de la commande à la place de l'invite du shell
PS1 = 'mec $' dude $ affichera l'invite du shell comme vous le souhaitez

Quelques commandes de base du shell

Commander Utilitaire
Ctrl-k couper / tuer
Ctrl-y tirer / coller
Ctrl-a prendra le curseur au début de la ligne
Ctrl-e prendra le curseur à la fin de la ligne
Ctrl-d supprimera le caractère après / au curseur
Ctrl-l effacera l'écran / le terminal
Ctrl-u effacera tout entre invite et le curseur
Ctrl-_ annulera la dernière chose saisie sur la ligne de commande
Ctrl-c va interrompre / arrêter le travail / processus en cours d'exécution au premier plan
Ctrl-r recherche inversée dans l'histoire
~/.bash_history stocke les 500 dernières commandes / événements utilisés sur le shell
history affichera l'historique des commandes
history | grep <key-word> affichera toutes les commandes de l'historique ayant le mot-clé <mot-clé> (utile dans les cas où vous vous souvenez d'une partie de la commande utilisée dans le passé)

Créez votre propre alias de commande

Si vous en avez assez d'utiliser de longues commandes dans bash, vous pouvez créer votre propre alias de commande.

La meilleure façon de le faire est de modifier (ou créer s’il n’existe pas) un fichier appelé .bash_aliases dans votre dossier personnel. La syntaxe générale est la suivante:

alias command_alias='actual_command'

actual_command est la commande que vous actual_command et command_alias est le nouveau nom que vous lui avez donné. Par exemple

alias install='sudo apt-get -y install'

mappe l' install du nouvel alias de commande à la commande réelle sudo apt-get -y install . Cela signifie que lorsque vous utilisez install dans un terminal, cela est interprété par bash comme sudo apt-get -y install .

Localiser un fichier sur votre système

En utilisant bash, vous pouvez facilement localiser un fichier avec la commande de locate . Par exemple, disons que vous recherchez le fichier mykey.pem:

locate mykey.pem

Parfois, les fichiers ont des noms étranges, par exemple, vous pourriez avoir un fichier comme random7897_mykey_0fidw.pem . Disons que vous recherchez ce fichier mais que vous ne vous souvenez que des parties mykey et pem. Vous pouvez combiner la commande de locate avec grep utilisant un tube comme celui-ci:

locate pem | grep mykey

Ce qui ferait apparaître tous les résultats qui contiennent ces deux pièces.

Notez que tous les systèmes ne disposent pas de l'utilitaire de locate et que beaucoup ne l'ont pas activé. locate est rapide et efficace car il analyse périodiquement votre système et met en cache les noms et les emplacements de chaque fichier, mais si cette collecte de données n'est pas activée, elle ne peut rien vous dire. Vous pouvez utiliser updatedb pour lancer manuellement l'analyse du système de fichiers afin de mettre à jour les informations mises en cache sur les fichiers de votre système de fichiers.

Si vous n'avez pas de locate travail, vous pouvez utiliser l'utilitaire de find :

find / -name mykey.pem -print

est à peu près équivalent à locate mykey.pem mais doit analyser votre système de fichiers chaque fois que vous l'exécutez pour le fichier en question, plutôt que d'utiliser des données mises en cache. C'est évidemment plus lent et moins efficace, mais plus en temps réel. L'utilitaire de find peut faire beaucoup plus que trouver des fichiers, mais une description complète de ses capacités dépasse le cadre de cet exemple.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow