Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

lundi 18 avril 2016

Un terminal aux petits oignons pour Linux

Sous LInux, lorsqu'on lance un terminal utilisateur, celui-ci a une certaine taille, ne comporte qu'un onglet et se lance dans le répertoire HOME de l'utilisateur connecté.

Heureusement gnome-terminal et les terminaux des autres environnements graphiques Linux comportent des flags permettant de configurer le terminal différemment.

Par exemple pour lancer un terminal dans un fenêtre de 80 colonnes et de 25 lignes on utilisera:

gnome-terminal --geometry=80x25

Si de plus on souhaite que le terminal se positionne en haut à gauche de l'écran:

gnome-terminal --geometry=80x25+0+0

Si on veux utiliser tout l'écran:

gnome-terminal --maximize

ou

gnome-terminal --full-screen

En effet, sur un écran de portable de 15 pouces, je ne vois pas l'intérêt de se fatiguer la vue dans un terminal qui ressemble à un timbre poste !

On peut aussi changer le titre du terminal avec:

gnome-terminal --title="Nouveau titre"

Attention, pour que le titre s'affiche il faut que les paramètres du profil utilisé par le terminal le permettent:

Capture-Edition_du_profil___Solarized__.png

Tous ses flags cités précédemment contrôlent la fenêtre.

Un autre flag est très intéressant, c'est le flag --tab. Par exemple:

gnome-terminal --tab --tab --tab

ouvre un terminal avec trois onglets ouverts.

Un autre flag qui contrôle le terminal, celui permettant de changer le répertoire de travail:

gnome-terminal --tab --tab --working-directory=/home/users/user1/projects/project1

va démarrer deux onglets dont le deuxième sera dans le répertoire /home/users/user1/projects/project1.

Le flag --working-directory peut évidemment s'utiliser sans le flag --tab, il s'applique alors au seul terminal ouvert.

Un dernier flag utile --active qui rend actif l'onglet spécifié juste avant (par --tab) sur la ligne de commande.

Comme on l'a vu, gnome-terminal peut se configurer de différentes façons, on peut aussi afficher ou cacher la barre de menus, spécifier le profil au lancement ...

Enfin, il y a une option très intéressante pour débugger un terminal qui ne démarre pas parce que sa configuration est erronée et c'est l'option "Quand la commande se termine", dans l'onglet "Titre et commande" que l'on positionnera à "Conserver le terminal ouvert".

Cela évite que le terminal s'ouvre à toute vitesse, et que quand il se plante on n'a le temps de rien voir !

samedi 13 février 2016

Les options de la commande rm sous Linux

Sous Linux, la suppression de fichiers s'effectue avec la commande rm:

Par exemple:

rm file

SI un des fichiers n'existe pas, la commande rm le signale à l'utilisateur mais continue de supprimer les autres fichiers spécifiés:

rm file-not-found file
rm: impossible de supprimer « file-not-found »: Aucun fichier ou dossier de ce type

Ce mode de fonctionnement est très dangereux parce que si j'entre la commande:

rm to_remove *

et que par inadvertance, j'ai ajouté un espace entre 'to_remove' et '*', j'aurais droit au message suivant:

rm: impossible de supprimer « to_remove »: Aucun fichier ou dossier de ce type

Et la commande rm aura supprimé TOUS les fichiers du répertoire courant puisque le Shell aura interprété l'astérisque en ce sens !

Heureusement pour moi, si dans ce répertoire courant se trouvent aussi des répertoires, le message d'erreur de rm sera:

rm: impossible de supprimer « to_remove »: Aucun fichier ou dossier de ce type
rm: impossible de supprimer « folder1 »: est un dossier
rm: impossible de supprimer « folder2 »: est un dossier
rm: impossible de supprimer « folder3 »: est un dossier

puisque rm ne supprime les répertoires qu'en présence de l'option -r sur la ligne de commande.

Pour éviter de supprimer des fichiers que l'on souhaitait garder, il suffit de passer à la commande rm l'option -i comme suit:

rm -i a z c
rm : supprimer fichier « a » ? yes
rm: impossible de supprimer « z »: Aucun fichier ou dossier de ce type
rm : supprimer fichier « c » ? yes

C'est d’ailleurs une pratique courante (et saine !) de définir l'alias suivant:

alias rm='rm -i'

dans votre fichier .bash_aliases

On peut aussi utiliser -I qui ne demandera qu'une confirmation de suppression lorsqu'il y a plus de 3 fichiers:

touch file1 file2 file3 file4
user@machine:~/tmp$ rm -I file*
rm : supprimer tous les arguments ? 

samedi 16 janvier 2016

Configurer la librairie readline pour un bash sur mesure

Bash utilise une librairie nommée readline pour parser l'entrée utilisateur.

Cette librairie readline développée par la projet GNU est paramétrable à l'envie via un fichier spécifié par la variable d'environnement INPUTRC. En l'absence de cette variable, c'est le fichier ~/.inputrc qui est lu.

Par exemple, pour supprimer le bip énervant lorsque l'on appuie sur la touche TAB, il suffit d'ajouter dans le fichier ~/.inputrc:

set bell-style none

Si on veut maintenant que la complétion sur les noms de fichiers soit insensible à la casse, il faut ajouter:

set completion-ignore-case on

Si ensuite on souhaite que la complétion fasse plus que proposer les choix possibles mais sélectionne d'emblée la première possibilité et que chaque appui sur TAB prenne en compte le choix possible suivant, il faut utiliser la complétion à la "mode vim":

TAB: menu-complete
set show-all-if-ambiguous on

On peut également changer les valeurs de editingmode et de keymap pour ne plus avoir les raccourcis de emacs par défaut (Ctrl-R, Ctrl-S, Ctrl-A, Ctrl-E ...) mais ceux de vi à la place.

Pour une liste exhaustive des options du fichier de configuration de readline, on pourra consulter la man page correspondante.