Avec ses réglages par défaut, Bash permet d'effacer un mot sur la ligne de commande avec la combinaison de touches Alt + Retour arrière. C'est pratique, mais pas toujours suffisant.
Imaginons que j'ai des noms de fichiers très longs du type/foo-1687321681/bar-XSDRYJXJ-87215121-GGGG/machin-bidule-truc-981321-RPXS-456456
avec plein de sous-répertoires et de tirets, autrement dit : des noms de fichiers illisibles. Imaginons qu'il est tard, et que j'ai mal aux yeux.
Imaginons que je viens de faire less /foo-1687321681/bar-XSDRYJXJ-87215121-GGGG/machin-bidule-truc-981321-RPXS-456456
et je veux maintenant faire less /foo-1687321681/bar-XSDRYJXJ-87215121-GGGG/zljxdr-bidule-truc-Z34571-WIGJ-0E4576
(et imaginons que je n'avais pas anticipé en faisant d'abord less /foo-1687321681/bar-XSDRYJXJ-87215121-GGGG/*
parce que personne n'est parfait 😉)
Si je reviens sur la ligne de commande précédente, j'ai le curseur juste après le "mot" 456456, et je dois faire plusieurs Alt + Retour arrière. Je ne peux pas faire Ctrl + w qui effacerait tout le nom de fichier et ne laisserait que less
. Comme j'ai mal aux yeux, j'aimerais bien avoir une seule combinaison de touches pour tout effacer jusqu'au slash du répertoire bar-XSDRYJXJ-87215121-GGGG/
Heureusement, Bash a une option : la commande Readline unix-filename-rubout
Pour activer cette commande, il faut choisir une combinaison de touches, par exemple Ctrl + f (je n'utilise pas Ctrl + f pour avancer d'un caractère ; j'utilise les flèches du clavier) et saisir, soit dans le terminal pour la session en cours, soit dans ~/.bashrc ou ~/.bash_aliases de manière permanente : bind '\C-f:unix-filename-rubout'
Je ne sais pas pourquoi cette commande n'est pas active par défaut parce que je la trouve très pratique…