[gull] Truc et astuces: ( fzf + batcat ) / apt-cache
Félix Hauri
felix at f-hauri.ch
Sun Jan 12 09:50:31 CET 2025
Je vous avais parlé de fzf, `Fuzzy Finder', qui permet de créer des
listes interactives...
https://f-hauri.ch/vrac/fzfDbDemo.tzst
## Cette demo DB dépends des paquets suivants:
## catimg, coreutils, fzf, ncurses-bin, sed et sqlite3.
$ mkdir /tmp/fzfDemo; cd $_;
$ wget -qO - f-hauri.ch/vrac/fzfDbDemo.tzst | tar --zstd -x
$ fzfDbDemo/fzfDbDemo.sh # Simple demo DB SQLite
$ fzfDbDemo/fzfDbDemoBack.sh # SQLite en background (connexion db unique)
# Les touches <Up> <Down> <Return> et <Esc> pour navigation et
# <Shift+Up> et <Shift+Down> pour la navigation dans la fenêtre "preview".
Voici une application simple et utile pour les paquets Debian (et Ubuntu):
(Je chechais à lister les paquets ``elpa-*'')
$ mapfile -t arry < <(
fzf -m --preview 'read -r nam _ <<<{};
apt-cache show $nam |
fold -s -w 80 |
batcat --color=always -l YAML -p
' --preview-window 80 < <(
apt-cache search elpa
));printf ' - deb pak: %s\n' "${arry[@]%% *}"
# Les touches <Up> <Down> <Return> et <Esc> pour navigation,
# La touche <tab> pour sélectionner/déselectionner un paquet
# <Shift+Up> et <Shift+Down> pour la navigation dans la fenêtre "preview".
Cette commande génère une chaîne `arry` qui contient chaque lignes
sélectionnée (complête). La syntaxe `"${arry[@]%% *}"` permet d'obtenir
une chaîne de chaînes limitées au premier *espace*.
Petite fonction:
aptFzfSel() {
local arry yesno;
mapfile -t arry < <( fzf -m --preview '
read -r nam _ <<<{}; apt-cache show $nam |
fold -s -w 80 | batcat --color=always -l YAML -p
' --preview-window 80 < <(
apt-cache search "$1"
));
((${#arry[@]})) || return 0;
echo Install following packages:; printf ' - : %s\n' "${arry[@]}";
printf 'Yes no (Y/n)? ';while [[ -z $yesno ]];do
IFS= read -rsn 1 yesno;
case ${yesno,} in
[yn] ) ;;
$'\e') yesno=n ;;
'' ) yesno=y;;
* ) yesno=;;
esac;
done;
if [[ ${yesno,} == y ]];
then echo Yes; sudo apt install "${arry[@]%% *}";
else echo No;
fi;
}
$ aptFzfSel elpa
$ aptFzfSel '^catimg$|^fzf$|^sqlite3$|^ncurses-bin$|^coreutils$|^sed$'
A+!
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list