Tout sur le Shell de Linux
Vous débutez sur Linux ? Ou ça fait quelques jours ? Vous avez déjà vu le terminal, cet écran noir qui fait peur ? Ici, on vous explique comment l’installer et le paramétrer pour se sentir plus à l’aise.
Allez, suivez le guide !
Qu’est-ce qu’un Shell ?
Le Shell, le terminal, le CUI ( commande user interface ) ou encore, l’interpréteur de commande.
Le terminal à plusieurs noms suivant la langue ou la personne l’utilisant.
Pour l’histoire, les américains utilisent le mot : Shell ( Coquille en bon français ) car au début de l’informatique, c’était la dernière couche avant l’utilisateur, il fait l’interface entre le cœur de la machine et nous. Après quelque temps fut inventer le GUI ( graphique user interface ) nous faisant abandonner le shell. Entre temps, monsieur Steve Bourne inventa le BASh ( Bourne Again Shell ) qui est un Shell amélioré. C’est pouquoi vous entendrez aussi le mot BASh revenir régulièrement.
Finalement, un BASh est un interpréteur de commande qui va envoyer ensuite au Shell la commande brute.
Pour l’histoire c’est finit, maintenant, à quoi ça sert ?
Ca sert à utiliser son ordinateur sans utiliser sa souris pardi !
Vous pourrez par exemple utiliser Nmap ou WPScan tranquillement
Bien évidemment, un logiciel créé avec une interface graphique est rarement utilisable avec un shell. Et puis ce n’est pas prévu.
Mais, surtout sur Linux, beaucoup de programme sont utilisables qu’avec le terminal. Il est donc important de savoir l’utiliser.
On choisit notre SHELL et on le paramètre
Ici, on va choisir son SHELL, car il en existe plusieurs.
Commençons par ouvrir notre fameux terminal et écrivons le code suivant pour connaitre le shell utilisé actuellement
Une commande est souvent une contraction d’un mot ou d’un groupe de mot anglais. C’est important de la savoir et de connaitre le groupe de mot afin de comprendre ce que l’on fait et aussi de mieux les retenir.
La commande suivante vient de change shell : chsh
ATTENTION : le terminal est sensible à la casse ( majuscule, minuscule ) donc CHSH n’est pas égal à chsh
chsh
Encadré en rouge, il m’est donné le chemin vers mon shell. Il s’agit de zsh. Attention, sur ubuntu, le chemin est : /bin/zsh
Si je voulais le changer par le shell basique de linux je devrais changer vers le bon chemin et donc entrer le bon chemin.
Voici le résultat pour un shell sur bash.
Il existe un nombre incalculable de shell avancé différent. Vous en trouverez à volonté sur internet. Personnellement, je préfère ZSH, on partira donc sur cet exemple.
Pourquoi ZSH ? Car il permet, en autre fonctionnalité, de mettre un code couleur lorsqu’on écrit. Ce qui rend le code plus lisible. Et je ne parle pas de OhMyZsh qui est un add-on très complet. Et qui mériterait un article à lui seul.
Si après la commande chsh vous avez un autre résultat que zsh, copier-coller dans le terminal les commandes suivantes :
sudo apt install zsh
Après l’installation, il vous faudra vous déconnecter du compte et vous reconnecter. Et recommencer la commande chsh
Pour installer ensuite le syntax-hightlightning ( votre commande change de couleur pour une meilleur lisibilité ),
regardez le github suivant : https://github.com/zsh-users/zsh-syntax-highlighting
Si vous avez installé Oh-my-zsh, vous n’avez qu’à entrer cette ligne de commande :
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
Puis activer le plugin dans ~/.zshrc
plugins=( [plugins...] zsh-syntax-highlighting)
Pour avoir ensuite le même syntax-highlighting que sur kali, si vous n’avez pas kali, copié-collé le code suivant dans le ~/zshrc juste au dessus de #User configuration
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PROMPT=$'%F{%(#.blue.green)}┌──${debian_chroot:+($debian_chroot)──}(%B%F{%(#.red.blue)}%n%(#.💀.㉿)%m%b%F{%(#.blue.green)})-[%B%F{reset}%(6~.%-1~/…/%4~.%5~)%b%F{%(#.blue.green)}]\n└─%B%(#.%F{red}#.%F{blue}$)%b%F{reset} '
RPROMPT=$'%(?.. %? %F{red}%B⨯%b%F{reset})%(1j. %j %F{yellow}%B⚙%b%F{reset}.)'
# enable syntax-highlighting
if [ -f /home/placeDirectoryorUserNameHere/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && [ "$color_prompt" = yes ]; then
# ksharrays breaks the plugin. This is fixed now but let's disable it in the
# meantime.
# https://github.com/zsh-users/zsh-syntax-highlighting/pull/689
unsetopt ksharrays
. /home/placeDirectoryorUserNameHere/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
ZSH_HIGHLIGHT_STYLES[default]=none
ZSH_HIGHLIGHT_STYLES[unknown-token]=fg=red,bold
ZSH_HIGHLIGHT_STYLES[reserved-word]=fg=cyan,bold
ZSH_HIGHLIGHT_STYLES[suffix-alias]=fg=green,underline
ZSH_HIGHLIGHT_STYLES[global-alias]=fg=magenta
ZSH_HIGHLIGHT_STYLES[precommand]=fg=green,underline
ZSH_HIGHLIGHT_STYLES[commandseparator]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[autodirectory]=fg=green,underline
ZSH_HIGHLIGHT_STYLES[path]=underline
ZSH_HIGHLIGHT_STYLES[path_pathseparator]=
ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]=
ZSH_HIGHLIGHT_STYLES[globbing]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[history-expansion]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[command-substitution]=none
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]=fg=magenta
ZSH_HIGHLIGHT_STYLES[process-substitution]=none
ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]=fg=magenta
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=fg=magenta
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=fg=magenta
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]=none
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]=fg=yellow
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]=fg=yellow
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]=fg=yellow
ZSH_HIGHLIGHT_STYLES[rc-quote]=fg=magenta
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]=fg=magenta
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]=fg=magenta
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]=fg=magenta
ZSH_HIGHLIGHT_STYLES[assign]=none
ZSH_HIGHLIGHT_STYLES[redirection]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[comment]=fg=black,bold
ZSH_HIGHLIGHT_STYLES[named-fd]=none
ZSH_HIGHLIGHT_STYLES[numeric-fd]=none
ZSH_HIGHLIGHT_STYLES[arg0]=fg=green
ZSH_HIGHLIGHT_STYLES[bracket-error]=fg=red,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-1]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-2]=fg=green,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-3]=fg=magenta,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-4]=fg=yellow,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-5]=fg=cyan,bold
ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]=standout
fi
else
PROMPT='${debian_chroot:+($debian_chroot)}%n@%m:%~%# '
fi
Bien sur, vous pouvez changer les couleurs à votre envie ! On est sur Linux bordel, configuration power !
ATTENTION, il faudra exécuter la même chose pour root.
Pour cela, passez « root »sur votre machine et rendez-vous au chemin suivant : /root/
Refaite exactement les mêmes manipulations qu’au dessus.
Et modifiez le /root/.zshrc comme cité ci-dessus.
Le petit plus que personne ne connait
Lorsque vous installez ou paramétrez dans le terminal, il est possible qu’on vous pose une question.
Sachez que, par convention, si une des 2 lettres est en majuscule, ce sera l’option choisie si vous tapez directement sur « entrée ». Sans avoir besoin de mettre un « y ».
Pour notre exemple, se sera donc Y ou Yes. Nous continuerons donc.
Vous gagnez de temps.
Les Alias
Un alias est un nom de fonction personnalisé qui vous permet de créer vos propres raccourcis de commande.
L’interpréteur de commande peut se paramétrer en changeant quelques lignes dans son fichier de paramètres. Pour le trouver, rendez-vous ici : /home/users/.zshrc
Le « users » étant le nom utilisé pour votre connexion sur le bureau. Pour ma part c’est kali.
Pour l’ouvrir, il faudra utiliser l’éditeur de texte de votre machine. Sur kali, il s’agit de mousepad
sudo mousepad .zshrc
Le fichier est assez long. Il vous faudra aller en fin de fichier pour commencer à écrire vos propres alias.
Bien évidemment, je vais vous donner quelques alias indispensables et qui devraient être intégrés de base à mon humble avis.
La partie #some more ls aliases est intégrée de base. Vous pouvez y intégrer à partir d’ici vos alias.
Le fait de mettre un dièse « # » en début de ligne indique au programme que la ligne est un commentaire et n’est donc pas à exécuter. C’est un pense bête pour le programmeur.
La sémantique
Un alias se créé suivant un ordre précis, que vous avez peut-être compris en regardant de plus près l’image du dessus.
Il faut d’abord mettre le mot « alias » puis le nom de votre alias sans espace « mon_alias » suivi d’un « = » et entrer entre apostrophe votre ligne de commande qui peut, elle, être avec des espaces.
alias mon_alias='sudo ma_commande mon_option -y'
L’une de mes préférés, que j’insère dès le début est la mise à jour automatique. Ceux utilisant linux le savent, mettre à jour linux correctement veut dire entrer au moins 2 commandes. Et pour être propre, 4 commandes. ( Le tiret y « -y » veut dire que nous dirons oui à toutes les demandes de réponses qui seront amenées à nous être posées).
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get autoremove -y
sudo apt-get dist-upgrade -y
La 1ère commande met à jour les paquets. C’est à dire la liste des applications et leur versions
La 2ème commande met à jour les applis
La 3ème supprime ce qui n’est plus nécessaire.
La 4 ème mets à jour la version de la distribution ( Pas à faire tous les jours, je ne la mets pas de base )
Avec un alias, je vais faire les 3 premières commandes en simplement 3 lettres.
alias maj='sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get autoremove -y'
Pour les curieux, le fait de mettre « && » indique que lorsque la commande précédente est terminée, on débute la seconde. On peut donc aligner les commandes en une seule ligne.
Fermez votre terminal puis réouvrez en un.
Taper maintenant « maj » dans la console. Votre linux se met à jour automatiquement en 3 lettres.
Jaune : Mon alias avec insertion du mot de passe sudo.
Vert, mis à jour des paquets.
Cyan, téléchargement et installation des appli
Violet, la suppression des dépendances non utiles. C’est à dire 0 pour cette fois-ci.
Une petite liste sympa
alias mpd='sudo mousepad'
Lance mousepad en sudo
alias rmtmp='sudo rm -rf cache/* logs/* stage/* tmp/* '
Supprime les logs cache et fichiers temporaires
alias pg='ping -c 5'
Permet de faire 5 ping vers une cible.
alias ncl='sudo nc -lvp 4444'
Met le port 4444 en écoute pour netcat
alias pythons='sudo python -m http.server 8080'
Créé un serveur HTTP avec python sur le port 8080
alias rmh='sudo rm /home/kali/.zsh_history'
Supprime l’historique des commandes du terminal
alias reparkey='sudo apt-get update 2>&1 | sed -ne 's?^.*NO_PUBKEY ??p' |xargs -r -- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys'
Permet de réparer un problème NO-PUBKEY de clé lors des mises à jour des paquets. Arrive régulièrement.
alias trusted='mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d'
Permet de réparer un problème de clé pgp » trusted » lors de la mise à jour des paquets
Petit rappel, si vous ne vous souvenez plus de vos alias, nul besoin d’aller lire le fichier .zshrc.
Entrer simplement la commande « alias » dans le terminal et il vous sortira tous les alias disponibles.
Conclusion
Voici un petit tour du terminal. On l’a vu, on l’a installé et on l’a paramétré.
Dans un prochaine article, nous verrons les premiers codes, le grep et les utilisations avancées.
En attendant, un lien vers OpenClassRoom proposant un bon cours sur le shell.
One thought on “Tout sur le Shell de Linux”
Comments are closed.
[…] Tout sur le Shell de Linux […]