1
0
Bifurcation 0
miroir de https://github.com/PAPAMICA/Wiki-Tech.io.git synchronisé 2024-12-27 18:10:23 +01:00
Wiki-Tech.io/Linux/Débutant/Terminal.html
2021-05-24 12:04:46 +02:00

181 lignes
11 Kio
HTML

<!--
title: Linux - Terminal
description: Toutes les astuces pour votre terminal !
published: true
date: 2021-05-20T14:34:45.073Z
tags:
editor: ckeditor
dateCreated: 2021-05-10T07:29:51.462Z
-->
<figure class="image image_resized" style="width:22.93%;"><img src="https://2.bp.blogspot.com/-K6OX_DJBHl0/Vms2vUM7PII/AAAAAAAAA4M/QCNAHS_RLeY/s1600/Terminal-icon.png" alt="How to beautify or enhance the appearance linux terminal - Ahan-Ganteng"></figure>
<h1>Choix du terminal</h1>
<h2>La base</h2>
<p>Simplement celui de votre environnement de bureau !</p>
<p>Pour ma part j'utilise KDE qui fournit Konsole : simple, personnalisable et bien pensé. Il est un très bon terminal pour débuter sous Linux.</p>
<p>&nbsp;</p>
<h2>Le jolie et complet</h2>
<p>Mon petit chouchou, disponible sous <strong>Linux</strong>, <strong>MacOS</strong> et <strong>Windows</strong> : <a href="https://extraterm.org/index.html">Extraterm</a></p>
<p>Il est développé avec Electron ce qui le rend accessible sur tous les OS mais il souffre aussi de quelques ralentissement par moment. Cependant il intègre beaucoup de fonctionnalités très intéressantes comme :</p>
<ul>
<li>La commande <code>show</code> qui vous permettra de <strong>voir vos images dans votre terminal</strong></li>
<li>Un système d'onglets et de fenêtres complet</li>
<li>Un système de <strong>recherche de commandes intégré</strong></li>
<li>L'isolation de la sortie des commandes dans des “frames”</li>
<li>Un gestionnaire de téléchargement</li>
<li>Récupération de la sortie d'une commande précédente</li>
<li>Le support des emoji nativement</li>
<li>L'accélération GPU</li>
</ul>
<p>Et il est évidemment OpenSource, bref c'est vraiment un terminal à tester !</p>
<figure class="image image_resized" style="width:59.78%;"><img src="https://extraterm.org/selection_mode2.gif" alt="Extraterm keyboard cursor and selection"></figure>
<p>&nbsp;</p>
<h2>Le rapide</h2>
<p>Si vous aimez la rapidité plus que tout (coucou Arnold), il serait temps de vous intéresser à ce petit terminal qui mise tout dessus : <a href="https://github.com/alacritty/alacritty">Alacritty</a> !</p>
<p>Alacritty est un émulateur de terminal moderne qui est livré avec une configuration par défaut simple, mais permet une configuration étendue.&nbsp;</p>
<p>En s'intégrant à d'autres applications, plutôt qu'en réimplémentant leurs fonctionnalités, il parvient à fournir un ensemble flexible de fonctionnalités à hautes performances. Les plates-formes prises en charge sont actuellement <strong>BSD</strong>, <strong>Linux</strong>, <strong>macOS</strong> et <strong>Windows</strong>.</p>
<p>Vous retrouverez la liste des fonctionnalités à jours ici : <a href="https://github.com/alacritty/alacritty/blob/master/docs/features.md">features.md</a></p>
<p>Ce terminal est considéré comme étant en bêta encore actuellement; il y a quelques fonctionnalités manquantes et quelques bugs à corriger, mais il est déjà utilisé par beaucoup comme terminal par défaut.</p>
<p>Les binaires précompilés sont disponibles sur <a href="https://github.com/alacritty/alacritty/releases">GitHub</a>.</p>
<p>&nbsp;</p>
<h2>Le simple</h2>
<p>Il porte bien son nom car il se nome : <a href="https://st.suckless.org">st</a> pour “Simple Terminal" !</p>
<p>Un petit retour aux sources, pas de fonctionnalités “superflus” ici, juste votre terminal. Un outil parfait pour les puristes de Linux.</p>
<p>&nbsp;</p>
<h2>Le discret</h2>
<p>Intégré nativement dans KDE, il me semble nécessaire de le mentionner ici vu que je l'utilise au quotidien en supplément de mon terminal par défaut.</p>
<p>Je parle de <a href="https://apps.kde.org/yakuake/">Yakuake</a> qui, d'une touche, fait apparaître un terminal du haut de votre écran et “se range” dès que vous avez terminé. Il est si accessible que c'est ce dernier que j'utilise lorsque j'ai juste une petite commande à faire. Il s'intègre parfaitement avec mon workflow !</p>
<h1>Zsh - Oh-My-Zsh</h1>
<h2>Présentation</h2>
<p>ZSH permet de remplacer aisément le shell (Bash) par défaut dans les distributions Linux.</p>
<p>Il permet de rendre plus agréable et plus interactif votre terminal sous Linux.</p>
<p>On peut noter ceci :<br>&nbsp;- Autocomplétion améliorée<br>&nbsp;- Personnalisation avancée (au niveau des couleurs par exemples)<br>&nbsp;- Possibilités de le rendre insensible à la casse !<br>&nbsp;- Correcteur synthaxique !</p>
<h2>Installation</h2>
<p>Zsh est en général installer par défaut sur les distribution Linux récentes, cependant si vous ne l'avez pas, installer le avec votre gestionnaire de paquet.</p>
<p>Pour Oh-My-Zsh c'est très simple avec une simple commande <code>curl</code> :</p>
<pre><code class="language-plaintext">sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"</code></pre>
<p>Ou si vous préférez, avec <code>get</code> :</p>
<pre><code class="language-plaintext">sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"</code></pre>
<p>Le fichier de configuration se trouve ici : <code>~/.zshrc</code></p>
<p>&nbsp;</p>
<h2>Les thèmes</h2>
<p>L'avantage avec Oh-My-Zsh c'est la possibilité de personnaliser son shell très simplement avec des thèmes préfait.</p>
<p>Vous pouvez retrouver la liste des thèmes ici : &nbsp;<a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Themes">Github</a></p>
<p>J'ai personnellement une petite préférence pour le thème <code>agnoster</code> :</p>
<figure class="image image_resized" style="width:48.21%;"><img src="https://cloud.githubusercontent.com/assets/2618447/6316862/70f58fb6-ba03-11e4-82c9-c083bf9a6574.png" alt="Agnoster theme"></figure>
<p>Pour configurer le thème il suffit de modifier la ligne <code>ZSH_THEME</code> dans le fichier <code>~/.zshrc</code> avec le thème souhaité :</p>
<pre><code class="language-plaintext">ZSH_THEME="agnoster"</code></pre>
<p>&nbsp;</p>
<h2>Les plugins</h2>
<p>Comme pour les thèmes, une grande force de Oh-My-Zsh est sa looooongue liste de plugins disponible. Vous pouvez les retrouver ici : <a href="https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins">Github</a></p>
<p>Pour les utiliser, vous devez les renseigner dans le fichier de configuration <code>~/.zshrc</code> :</p>
<pre><code class="language-plaintext">plugins=(
git
ansible
autojump
syntax-highlighting
autosuggestions
zsh-completions
)</code></pre>
<h1>Screen</h1>
<h2>Présentation</h2>
<p>Avez-vous déjà été confronté à une situation où vous exécutez une tâche de longue durée sur une machine distante, et soudainement votre connexion tombe, la session SSH est interrompue et votre travail est perdu. Et bien, cela nous est arrivé à tous à un moment donné, n'est-ce pas? Heureusement, il existe un utilitaire appelé <code>screen</code>qui nous permet de reprendre les sessions.</p>
<p>Screen ou GNU Screen est un multiplexeur terminal. En d'autres termes, cela signifie que vous pouvez démarrer une session, puis ouvrir n'importe quel nombre de fenêtres (terminaux virtuels) à l'intérieur de cette session. Les processus exécutés dans Screen continueront de s'exécuter même si vous êtes déconnecté.</p>
<p>&nbsp;</p>
<h2>Installation</h2>
<p>Le package <code>screen</code> est pré-installé sur la plupart des distributions Linux de nos jours. Vous pouvez vérifier s'il est installé sur votre système avec la commande : <code>screen --version</code></p>
<pre><code class="language-plaintext">screen --version
Screen version 4.08.00 (GNU) 05-Feb-20</code></pre>
<p>Si <code>screen</code> n'est pas installé, vous pouvez l'installer facilement avec le gestionnaire de paquet de votre distribution :</p>
<h3>Debian &amp; Ubuntu family</h3>
<pre><code class="language-plaintext">sudo apt install screen</code></pre>
<h3>Fedora &amp; CentOS family</h3>
<pre><code class="language-plaintext">sudo dnf install screen</code></pre>
<h3>Arch &amp; Manjaro family</h3>
<pre><code class="language-plaintext">sudo pacman -S screen</code></pre>
<p>&nbsp;</p>
<h2>Utilisation</h2>
<p>Pour démarrer une session, il suffit simplement d'utiliser la commande :</p>
<pre><code class="language-plaintext">screen</code></pre>
<p>Mais je vous conseille plutôt de démarrer vos sessions avec un nom à chaque fois :</p>
<pre><code class="language-plaintext"> screen -S &lt;nom_session&gt;</code></pre>
<p>Vous pouvez lister toutes les sessions screen en cours avec :</p>
<pre><code class="language-plaintext">screen -ls</code></pre>
<p>Pour reprendre une session déjà ouverte :</p>
<pre><code class="language-plaintext">screen -r &lt;id_session&gt;</code></pre>
<p>Pour rejoindre une session déjà utilisée :</p>
<pre><code class="language-plaintext">screen -x &lt;id_session&gt;</code></pre>
<h2>Raccourcis clavier</h2>
<p>Voici un petit récapitulatif des raccourcis clavier pour screen :</p>
<figure class="table">
<table>
<thead>
<tr>
<th>Raccourci</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Ctrl+a</code> <code>c</code></td>
<td>Créer une nouvelle fenêtre (avec shell)</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>"</code></td>
<td>Répertorier toutes les fenêtres</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>&lt;0-9&gt;</code></td>
<td>Passer à la fenêtre 0-9 (par numéro)</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>A</code></td>
<td>Renommer la fenêtre actuelle</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>S</code></td>
<td>Diviser la région actuelle horizontalement en deux régions</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>|</code></td>
<td>Diviser la région actuelle verticalement en deux régions</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>tab</code></td>
<td>Basculer le focus d'entrée sur la région suivante</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>Ctrl+a</code></td>
<td>Basculer entre la fenêtre actuelle et la fenêtre précédente</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>Q</code></td>
<td>Fermer toutes les régions sauf la région actuelle</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>X</code></td>
<td>Fermer la région actuelle</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>d</code></td>
<td>Déconnecter de la session</td>
</tr>
<tr>
<td><code>Ctrl+a</code> <code>?</code></td>
<td>Afficher les raccourcis disponibles</td>
</tr>
</tbody>
</table>
</figure>
<p>&nbsp;</p>
<h2>Configuration</h2>
<p>Screen est configurable directement via son fichier de configuration dans <code>/etc/screenrc</code> et <code>~/.screenrc</code>.</p>
<h1>Autres astuces</h1>
<h2>Color ls</h2>
<p>Un script Ruby qui colorise la sortie ls avec des couleurs et des icônes.&nbsp;</p>
<figure class="image image_resized" style="width:74.32%;"><img src="/images/image_2021-05-10_131515.png"></figure>
<p>Lien officiel : <a href="https://github.com/athityakumar/colorls">Github</a></p>
<p>&nbsp;</p>
<h2>Powerlevel10k</h2>
<p>Ajoute une personnalisation bien plus poussée du terminal. Compatible avec Oh-My-Zsh.</p>
<p>Lien officiel : <a href="https://github.com/romkatv/powerlevel10k">Github</a></p>