# Personnalisation Terminal Linux

Changement des couleurs du terminal et de l'accueil à l'ouverture   
mais aussi ceux des gestionnaire de fichier comme 'nano'

# NANO

## Ajouter des couleur a nano

sudo pacman -S nano

sudo apt-get install nano

##### Repérez le répertoire contenant les fichiers \*.nanorc.

Il est habituellement sous **/usr/share/nano** (ou /usr/local/share/nano). Si ce n'est pas le cas cherchez-le :  
`find /usr/ -name "*.nanorc"`

#### En tant qu'utilisatteur  


`ls /usr/share/nano/*.nanorc | xargs -I {} echo 'include "{}"' >> ~/.nanorc`

#### En tant que root

`ls /usr/share/nano/*.nanorc | xargs -I {} echo 'include "{}"' >> /etc/nanorc`

ou plus simplement en allant dans le fichier

nano /etc/nanorc

et ajouter la ligne suivante

include "/usr/share/nano/\*.nanorc"

<p class="callout info">Je conseille de faire les modification en directement en général avec root la deuxieme option pour que même quand on utilise sudo l'interface soit + lisible</p>

<p class="callout warning">Si on veut rajouter des langages personnaliser je conseille ce dépots [https://github.com/serialhex/nano-highlight](https://github.com/serialhex/nano-highlight)</p>

pour supprimer les ancienne conf

sed '/include/d' /etc/nanorc &gt; /etc/nanorc.bak &amp;&amp; mv /etc/nanorc.bak /etc/nanorc

# Garder la connexion ssh en vie

## Maintenir la connexion SSH plus longtemps

##### sur le serveur distant ouvrir la conf ssh

sudo nano /etc/ssh/sshd\_config

ou

sudo vim /etc/ssh/sshd\_config

modifier de dans les ligne suivante avec les paramètre suivant  
`ClientAliveInterval 30ClientAliveCountMax 5`

<p class="callout info">`ClientAliveInterval` permet d'envoyer un ping au client toute les x seconde pour vérifier si le client est online  
</p>

<p class="callout info">`ClientAliveCountMax` mes un nombre max x de ping envoyé sans réponse pour déconnecter la session   
</p>

##### Côté client  


créer la conf ssh pour l'user concerné si elle existe pas déja

nano `~/.ssh/ssh_config`

et ajouter dedans les ligne suivante   
`ServerAliveInterval 15ServerAliveCountMax 3`

<p class="callout info">`ServerAliveInterval` permet d'envoyer un ping au serveur toute les x seconde pour vérifier si le serveur est online  
</p>

<p class="callout info">`ServerAliveCountMax` mes un nombre max x de ping envoyé sans réponse pour déconnecter la session   
</p>

# Personnaliser un Terminal (bash)

> ### Qu’est-ce que le bashrc ?
> 
> Le bashrc est un fichier de configuration permettant de personnaliser son terminal. Il nous permet de définir des alias (des raccourcis pour certaines commandes), de se créer des fonctions personnel ou enfin de modifier son prompt.

## **Raccourcie des commandes**

Grâce aux alias, on peut par exemple redéfinir la commande ls –al à un ls, pour cela il suffit de faire :

```bash
alias nom='commande'
```

<div id="bkmrk-"><div class="syntaxhighlighter  bash" id="bkmrk--9"></div></div>On pourrait ainsi définir l’alias ls, afin qu’a chaque appelle de la commande ls, l’option –al soit activé à chaque fois.

```bash
alias ls='ls -al'
```

Le fichier `.bashrc` contient des alias prédéfinit qui sont mis en commentaire. Il vous suffit de parcourir le fichier pour décommenter les alias existants ou de créer les votre.

```bash
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
```

<div class="syntaxhighlighter  bash" id="bkmrk--0"></div>## **Personnalisation du Terminal**

La personnalisation d'un terminal permet le changement des couleurs mais permet aussi de rajouter/enlever des informations à votre invite de commande.

[![image.png](https://wiki.mira-ceti.ovh/uploads/images/gallery/2023-02/scaled-1680-/omBuIr2zgmEvaKKA-image.png)](https://wiki.mira-ceti.ovh/uploads/images/gallery/2023-02/omBuIr2zgmEvaKKA-image.png)

####  

##### <span style="text-decoration: underline;">Personnalisation par utilisateur</span>

créer un fichier `.bashrc` dans le répertoire home de l'utilisateur

```bash
nano ~/.bashrc
```

Ajouter la ligne suivante à la fin du fichier pour avoir un invite personnalisé :

```bash
export PS1='\[\e[38;5;160m\]\u\[\e[0m\]@\[\e[38;5;21m\]\h\[\e[38;5;40m\][\[\e[3m\]\w\[\e[23m\]] \[\e[38;5;226;2m\]$(git branch 2>/dev/null | grep '"'"'*'"'"' | colrm 1 2)\n\[\e[0m\]\$ '
```

L'exemple du pré-set ci-dessus va personnaliser l'invite de commande de la façon suivante :

[![preview.png](https://wiki.mira-ceti.ovh/uploads/images/gallery/2023-08/scaled-1680-/ybKjw8hbQ2GSf3Vo-preview.png)](https://wiki.mira-ceti.ovh/uploads/images/gallery/2023-08/ybKjw8hbQ2GSf3Vo-preview.png)

> **Vous pouvez créer votre propre preset de terminal grâce au site : [https://scriptim.github.io/bash-prompt-generator/](https://scriptim.github.io/bash-prompt-generator/)**

<p class="callout info">Pour que les modifications soient prises en compte vous pouvez faire une des manipulations suivantes :  
- Enregistrer le fichier et quitter le terminal pour se reconnecter. *(permanent)*  
- Exécuter la commande suivante : `source ~/.bashrc` *(temporaire)  
-* Exécuter la commande suivante : `exec $SHELL` *(temporaire)*</p>

<p class="callout warning">Si lors de votre déconnexion/reconnexion le terminal n'a pas pris en compte la personnalisation de votre preset alors vous devez rajouter un fichier `.bash_profile` dans votre répertoire. </p>

```bash
nano ~/.bash_profile
```

Puis coller le script suivant dans le fichier :

```bash
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
```

Maintenant vous pouvez vous déconnecter/reconnecter pour avoir le nouveau pré-set.

##### <span style="text-decoration: underline;">Personnalisation pour tous les utilisateurs</span>

Pour que la personnalisation soit effective pour tous les utilisateurs il faut effectuer la même modification mais dans le fichier `profile`.

```bash
sudo nano /etc/profile
```

## **Message à la connexion** 

##### <span style="text-decoration: underline;">**Figlet - créer un art ASCII à partir d'un texte**</span>

```
Linux server 5.10.0-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

 _   _      _ _    __        __         _     _
| | | | ___| | | __\ \      / /__  _ __| | __| |
| |_| |/ _ \ | |/ _ \ \ /\ / / _ \| '__| |/ _` |
|  _  |  __/ | | (_) \ V  V / (_) | |  | | (_| |
|_| |_|\___|_|_|\___/ \_/\_/ \___/|_|  |_|\__,_|

user@server:~$ 
```

(Sur Debian) Pour le art télécharger le package : `figlet`

```bash
sudo apt-get install figlet
```

(Sur Arch Linux)

```bash
sudo pacman -S figlet
```

Enfin ajouter dans le fichier `.bashrc`

```bash
figlet HelloWorld
```

####   


##### <span style="text-decoration: underline;">**Neofetch - Affiche des informations système importantes**</span>

```
Linux antec 5.10.0-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

       _,met$$$$$gg.          user@server
    ,g$$$$$$$$$$$$$$$P.       --------------
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 11 (bullseye) x86_64
 ,$$P'              `$$$.     Host: B450M DS3H V2
',$$P       ,ggs.     `$$b:   Kernel: 5.10.0-18-amd64
`d$$'     ,$P"'   .    $$$    Uptime: 43 days, 1 hour, 10 mins
 $$P      d$'     ,    $$P    Packages: 720 (dpkg)
 $$:      $$.   -    ,d$$'    Shell: bash 5.1.4
 $$;      Y$b._   _,d$P'      Resolution: 1280x1024
 Y$$.    `.`"Y$$$$P"'         Terminal: /dev/pts/0
 `$$b      "-.__              CPU: AMD Ryzen 5 3600 (12) @ 3.600GHz
  `Y$$                        GPU: NVIDIA GeForce 6200 TurboCache
   `Y$$.                      Memory: 19482MiB / 32119MiB
     `$$b.
       `Y$$b.
          `"Y$b._
              `"""

user@server:[~]$ 

```

(Sur Debian) Pour le art télécharger le package : `neofetch`

```bash
sudo apt-get install neofetch
```

Enfin ajouter dans le fichier `.bashrc`

```bash
neofetch
```