Tips en Trucs 2023

Broot: een toekomstgerichte bestandsbeheerder en starter voor de terminal

Het deel van het besturingssysteem dat verantwoordelijk is voor het beheer van bestanden en mappen wordt het bestandssysteem genoemd. Het organiseert onze gegevens in bestanden, die informatie bevatten, en mappen (ook wel 'folders' genoemd), die bestanden of andere mappen bevatten.

Eén van de opdrachten die helpen een bestandssysteem te visualiseren is tree, een opdracht dat de inhoud van mappen in een boomstructuur weergeeft. Eén van de problemen met tree is dat de uitvoer bij grote mappen onoverzichtelijk is. Broot zorgt voor een stap voorwaarts.

Broot installeren

De recenste versie kan je downloaden van de Github webpagina van de ontwikkelaar:

dany@pindabook:~> wget https://dystroy.org/broot/download/x86_64-linux/broot
--2023-05-21 14:16:14--  https://dystroy.org/broot/download/x86_64-linux/broot
Herleiden van dystroy.org (dystroy.org)... 2001:41d0:303:427a::, 54.36.60.122
Verbinding maken met dystroy.org (dystroy.org)|2001:41d0:303:427a::|:443... verbonden.
HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
Lengte: 9969216 (9,5M) [application/octet-stream]
Wordt opgeslagen als: ‘broot’

broot                             100%[============================================================>]   9,51M  64,1KB/s    in 3m 23s  

2023-05-21 14:19:39 (48,1 KB/s) - '‘broot’' opgeslagen [9969216/9969216]

Daarna verplaatsen we het programma naar de bin map van de gebruiker:

dany@pindabook:~> mv broot bin/

Daarna moeten we broot nog uitvoerbaar maken:

dany@pindabook:~> chmod u+x bin/broot

Broot gebruiken

Als je de tree opdracht hebt gebruikt, zul je het probleem herkennen dat het pagina na pagina uitvoer produceert. Natuurlijk kun je de uitvoer omleiden naar more of less.

Bij de eerste start van broot wordt gevraagd om een shell uitbreiding te installeren, dit kan ook nog achteraf en activeren we niet om broot te testen.

dany@pindabook:~> broot

Broot should be launched using a shell function.
This function most notably makes it possible to cd from inside broot
(see https://dystroy.org/broot/install-br/ for explanations).

Can I install it now? [Y/n]
broot

Wat biedt broot?

broot 1.22.0
dystroy <denys.seguret@gmail.com>
A tree explorer and a customizable launcher

Complete documentation lives at https://dystroy.org/broot"

USAGE:
    broot [OPTIONS] [FILE]
ARGS:
    <FILE>
            Root Directory
OPTIONS:
    -c, --cmd <CMD>
            Semicolon separated commands to execute
        --color <COLOR>
            Whether to have styles and colors (auto is default and usually OK)
            [default: auto]
            [possible values: auto, yes, no]
        --conf <CONF>
            Semicolon separated paths to specific config files"),
    -d, --dates
            Show the last modified date of files and directories"
    -D, --no-dates
            Don't show the last modified date"
    -f, --only-folders
            Only show folders
    -F, --no-only-folders
            Show folders and files alike
    -g, --show-git-info
            Show git statuses on files and stats on repo
    -G, --no-show-git-info
            Don't show git statuses on files and stats on repo
        --get-root
            Ask for the current root of the remote broot
        --git-status
            Only show files having an interesting git status, including hidden ones
    -h, --hidden
            Show hidden files
    -H, --no-hidden
            Don't show hidden files
        --height <HEIGHT>
            Height (if you don't want to fill the screen or for file export)
        --help
            Print help information
    -i, --git-ignored
            Show git ignored files
    -I, --no-git-ignored
            Don't show git ignored files
        --install
            Install or reinstall the br shell function
        --listen <LISTEN>
            A socket to listen to for commands
        --no-sort
            Don't sort
        --outcmd <OUTCMD>
            Where to write the produced cmd (if any)
    -p, --permissions
            Show permissions
    -P, --no-permissions
            Don't show permissions
        --print-shell-function <PRINT_SHELL_FUNCTION>
            Print to stdout the br function for a given shell
    -s, --sizes
            Show the size of files and directories
    -S, --no-sizes
            Don't show sizes
        --send <SEND>
            A socket that broot sends commands to before quitting
        --set-install-state <SET_INSTALL_STATE>
            Where to write the produced cmd (if any)
            [possible values: undefined, refused, installed]
        --show-root-fs
            Show filesystem info on top
        --sort-by-count
            Sort by count (only show one level of the tree)
        --sort-by-date
            Sort by date (only show one level of the tree)
        --sort-by-size
            Sort by size (only show one level of the tree)
        --sort-by-type
            Same as sort-by-type-dirs-first
        --sort-by-type-dirs-first
            Sort by type, directories first (only show one level of the tree)
        --sort-by-type-dirs-last
            Sort by type, directories last (only show one level of the tree)
    -t, --trim-root
            Trim the root too and don't show a scrollbar
    -T, --no-trim-root
            Don't trim the root level, show a scrollbar
    -V, --version
            Print version information
    -w, --whale-spotting
            Sort by size, show ignored and hidden files
        --write-default-conf <WRITE_DEFAULT_CONF>
            Write default conf files in given directory

Om de extra shell integratie alsnog te installeren, voer je de volgende opdracht uit:

dany@pindabook:~> broot --install
You requested a clean (re)install.
Removing /home/dany/.config/broot/launcher/refused.
Writing br shell function in /home/dany/.local/share/broot/launcher/bash/1.
Creating link from /home/dany/.config/broot/launcher/bash/br to /home/dany/.local/share/broot/launcher/bash/1.
/home/dany/.bashrc successfully patched, you can make the function immediately available with source /home/dany/.bashrc

The br function has been successfully installed.
You may have to restart your shell or source your shell init files.
Afterwards, you should start broot with br in order to use its full power.

Om de shell integratie te gebruiken zonder de terminal te herstarten, gebruik je de opdracht om het startscript uit te voeren:

dany@pindabook:~> source /home/dany/.bashrc

Nu kunnen we broot uitvoeren door een verkorte opdracht in te geven. We gebruiken dit om broot verder te gebruiken:

dany@pindabook:~> br

Als rasecht terminalprogramma bedien je broot met het toetsenbord. De broot shell integratie kwam tot stand door het startscript .bashrc aan te passen. Dit gaan we nader onderzoeken. Eerst moeten we de verborgen bestanden (waarvan de naam begint met een punt) laten weergeven. Durk daarvoor op de sneltoets Alt+h (hidden). Door de eerst letters van de bestandsnaan te typen zoek je snel naar .bashrc. Eenmaal het bestand .bashrc gevonden, druk je Esc om de zoekfunctie af te sluiten. Normaal is .bashrc nu geselecteerd. Je kunt ook bestanden selecteren door met de pijltoetsen te navigeren. Druk :e om het bestand .bashrc in een editor te openen. Met de : geef je aan dat je op de selectie een bewerking wilt uitvoeren, met e geef je aan dat je wilt editeren (aanpassen). Oeps, een foutmelding.

Blijkbaar heeft openSUSE Leap 15.4 geen standaard terminaleditor gedefinieerd. Dit lossen we op door eerst broot af te sluiten met de toetscombinatie Ctrl+c. Om voor de huidige terminalsessie de nano editor te definiëren, voer je de volgende opdracht uit:

dany@pindabook:~> export EDITOR=/usr/bin/nano

Nu kan je bovenstaande opdrachten in broot wel uitvoeren om .bashrc in de teksteditor nano te openen. We merken daarbij dat de shellintegratie van broot de laatste regel heeft toegevoegd. Door voor deze regel een # te plaatsen, kunnen we de shellintegratie voor broot bij de volgende terminal (her)start terug uitschakelen.

source /home/dany/.config/broot/launcher/bash/br

Om in het vervolg steeds nano als standaard terminal editor te gebruiken, kan je de export opdracht van hierboven ook in het opstartscript .bashrc opnemen. Maar wij gaan een andere weg bewandelen, namelijk de configuratie van broot opdrachten aanpassen:

dany@pindabook:~> nano .config/broot/verbs.hjson

In dit bestand staan alle broot opdrachten met hun sneltoetsen en uit te voeren opdrachten gedefinieerd. Zo vinden we in dit bestand de sectie voor het editteren:

    {
        invocation: edit
        shortcut: e
        execution: "$EDITOR +{line} {file}"
        leave_broot: false
    }

Als je daarin $EDITOR vervang door /usr/bin/nano werkt de editor functie bij de volgende (her)start van broot ook. Bekijk ook de commentaarregels met voorbeelden in dit configuratiebestand. M.a.w. je kunt broot heel wat eigen opdrachten laten uitvoeren en zelf bepalen welke opdrachttoetsen je daarvoor wilt gebruiken.

Samengevat

Met broot kun je bestandsstructuren verkennen met een boomachtige weergave, bestanden manipuleren, acties starten en eigen snelkoppelingen definiëren.

Dit hulpprogramma is een echte zegen voor de productiviteit. Het is een geweldig hulpprogramma dat een configureerbare boomstructuur, bestandsbeheerder en starter combineert.

Broot volledig van de computer verwijderen

Met de volgende opdracht kan je nagaan welke bestanden en mappen in hun naam het woord broot voorkomt:

dany@pindabook:~> find . -iname "*broot*"
./.config/broot
./.local/share/broot
./.local/share/RecentDocuments/broot.png[2].desktop
./.local/share/RecentDocuments/broot.png.desktop
./bin/broot

Deze bestanden en mappen, en dus broot met zijn configuratie, verwijder je met de volgende opdracht:

dany@pindabook:~> rm -r .config/broot .local/share/broot bin/broot

Indien je de shell integratie activeerde moet je ook de desbetreffende regel in het bash startscript .bashrc wissen of deactiveren (zie hierboven).