CLEX súborový manažer pre GNU/Linux a Unix

29.04 | 15:57 | Richard | Richard

CLEX je súborový manažér pre (GNU)Linux a Unix. Toľko hovorí názov webu, ktorý je celý v anglickom jazyku. Avšak netreba sa nechať zmiasť, jedná sa o slovenský softvér.


Čo je súborový manažér je všeobecne známe. Od čias DOS-u a veľmi úspešného Norton Commander-a ubehlo veľa času, ale princíp a vzhľad takýchto programov sa veľmi nezmenil. Isteže, s príchodom Prieskumníka vo Windows 95 sa ukázalo, ako sa to dá robiť inak, ale potreba ovládania výlučne myšou a určitá abstrakcia súborového systému spravila, podľa mňa, viac zlého ako dobrého. Jednak bežný užívateľ stratil prehľad, kde sa ten-ktorý jeho súbor na disku nachádza (keďže filozofiou bolo používanie odkazov s názvami ako Plocha, Stiahnuté, atď.), zaviedla sa nová terminológia (namiesto zaužívaného adresára prišiel priečinok), zneviditeľnila sa prípona súboru,...
Napriek tomu tento systém správy súborov si našiel cestu aj do GNU/Linuxu, či už ako východzí správca pre všetky majoritné desktopové prostredia, či v množstve separátnych programov.

Spoločným znakom týchto programov je, že používajú vlastné, interné rutiny pre kopírovanie, presúvanie či iné operácie so súbormi. CLEX je v tomto iný - dalo by sa zjednodušene povedať, že je to nadstavba nad osvedčenými príkazmi cp, mv. Ale nielen to. Viac v nasledujúcich riadkoch.


Inštalácia

V princípe sú štyri možnosti inštalácie.
1. Z repozitárov používanej distribúcie, avšak s rizikom zastaralej verzie (napr. v repozitároch Debianu).
2. Inštaláciou RPM balíčka, ktorý je na stránke autorov, priamy link: http://www.clex.sk/download/.
3. Kompiláciou zdrojových kódov, ktoré sú tiež na horeuvedenom odkaze.
4. Inštaláciou DEB balíčka z webu http://fela.hys.cz/, odkazy sú úplne na konci stránky.
Program je uvoľnený pod GNU GPL licenciou, v. 2.

Základná navigácia

CLEX je, ako sa ľudovo hovorí, dvoj-panelový správca. Na obrázku nižšie je zobrazený jeden panel.

Snímka č. 1: CLEX - základné zobrazenie

Snímka č. 1: CLEX - základné zobrazenie

Tučne zvýraznená cesta k adresáru (vľavo hore) napovedá, v ktorom paneli sa práve nachádzame. Pomocou CTRL-x (ďalej CTRL budem skracovať na C, ALT na A) je možné prepínanie medzi panelmi. Užitočnou je skratka C-e, ktorá vloží cestu z neaktívneho panelu do príkazového riadku. Kláves F2 vloží názov súboru do príkazového riadku, kombinácia ESC F2 (t.j. najprv ESC a až potom F2) vloží všetky označené súbory.

Ale hádam by bolo dobré najpoužívanejšie klávesové kombinácie dať do prehľadnej ASCII tabuľky:

| Funkcia                                                     | Skratka         |
|-------------------------------------------------------------+-----------------|
| Zobrazenie neaktívneho panelu                               | C-x             |
| Vloženie cesty  neaktívneho panelu                          | C-e             |
| Vloženie súboru na ktorom je kurzor                         | F2              |
| Vloženie označených súborov                                 | ESC F2          |
| Filtrovanie zobrazených súborov                             | C-f             |
| Zobrazenie, editovanie, mazanie a výber záložky             | A-k             |
| Zobrazenie a výber posledne navštívených adresárov          | A-v             |
| Skok do ~                                                   | A-~             |
| Skok do /                                                   | A-/             |
| Skok v adresárovej štruktúre nahor                          | A-.             |
| Pridanie aktuálneho adresára k záložkám                     | C-d             |
| Označenie aktuálneho súboru                                 | Ins alebo C-t   |
| Pridanie k označeným súborom súbory podľa masky             | A-+ alebo ESC + |
| Odobranie z označených súborov súbory podľa masky           | A-- alebo ESC - |
| Inverzia označených súborov                                 | A-* alebo ESC * |
| Porovnanie súborov v paneloch                               | A-=             |
| Znovu-načítanie obsahu adresára                             | C-r             |
| Premenovanie aktuálneho súboru                              | A-r             |
| Zobrazenie menu s ponukami filtrovania (dátum, veľkosť,...) | A-s             |
Snímka č. 2: CLEX - triedenie súborov v paneli

Snímka č. 2: CLEX - triedenie súborov v paneli


Filtrovanie

Jedna z mnou najčastejšie používaných funkcií, dostupná pod skratkou C-f. V princípe sa jedná o zobrazenie iba tých súborov (a/len adresárov), ktoré majú v názve (na ľubovoľnom mieste) zadávaný reťazec (filtruje to súbory dynamicky). Nakoľko to pracuje s celým názvom súboru, tak sa to aplikuje aj na prípony, takže zadaním reťazca napr. .pdf zobrazí všetky PDF-ká atď.
Takže je veľmi ľahké zobraziť konkrétne súbory, potom (napríklad) pomocou ESC * ich všetky označiť (aplikuje sa to samozrejme na zobrazené súbory) a pomocou ESC F2 si ich "hodiť" do príkazového riadku, kde sa môžu stať argumentami nejakého príkazu (napr. convert <súbory JPEG> <vysledne.pdf>).

Snímka č. 3: CLEX - filtrovanie súborov v paneli

Snímka č. 3: CLEX - filtrovanie súborov v paneli



Práca so záložkami

Alfa a omega rýchlej a efektívnej práce. Pod skratkou A-k sa nám zobrazí okno s možnosťou výberu, mazania, pridávania, editovania (a zmeny pozície) záložiek. Aj tu funguje C-f pre filtrovanie, čo je príjemnou vlastnosťou. Ako bolo uvedené, aktuálny adresár je možné pridať (pred zobrazením okna so záložkami) pomocou C-d.
Len dodávam, že sa záložky dajú editovať aj ručne, sú uložené v ~/.config/clex/bookmarks.
Opustenie okna bez zvolenia záložky je možné pomocou C-c. Áno, starý dobrý break, kým ho Microsoft neznásilnil na nejaké copy :( .

Práca s príkazovým riadkom

Zase alfa a omega (girl :) ). Čo sa tam dá robiť, napovie ďalšia tabuľka:

| Funkcia                                 | Skratka                                       |
|-----------------------------------------+-----------------------------------------------|
| Presun kurzora do príkazového riadku    | po stlačení klávesu (napr. zadávanie príkazu) |
| Doplňovanie                             | TAB                                           |
| Vloženie názvu súboru                   | F2                                            |
| Vloženie názvu súboru a plnej cesty     | C-a                                           |
| Vloženie označených súborov             | ESC F2                                        |
| Zmazanie všetkých zadaných znakov       | C-u                                           |
| Vloženie cieľa symbolického odkazu      | C-o                                           |
| Vloženie užívateľsky definového príkazu | F3 - F12 (bude vysvetlené neskôr)             |
| Zobrazenie predtým zadávaného príkazu   | C-p                                           |
| Zobrazenie histórie zadávaných príkazov | C-h                                           |
| Doplnenie zadávaného príkazu z histórie | A-p                                           |
| Spustenie príkazu                       | ENTER                                         |

A v tomto je najväčšia sila CLEX-u. Ako som spomínal, jedná sa o akúsi nadstavbu bežného príkazového riadku, kde sa očakáva práca s väčším množstvom súborov, alebo kde sa vyžaduje rýchla navigácia po adresároch či spúšťanie skriptov s viacerými súbormi, ako ich argumentmi.
Keďže je program malý, rýchly a písaný v C, jeho štart je okamžitý.
Dalo by sa povedať, že CLEX spája výhody oboch svetov. Samozrejme, takto riešené to majú mnohé iné súborové manažéry, ale tu je to (podľa mňa) akési intuitívne a keďže to beží v konzole...

Užívateľsky definované príkazy a.k.a. klávesové skratky F3..F12

V skratke sa jedná o príkazy, ktoré sa vykonajú po stlačení príslušného F-klávesu. Zaužívaný spôsob práce s inými manažérmi je dodržaný aj tu, takže predvolene je napr. F7 pre vytvorenie adresára pri F4 pre editovanie súboru. Samozrejme, toto je úplne modifikovateľné podľa predstáv užívateľa.
Editovať samotné príkazy je možné v okne Config (skratka A-c), alebo editovaním ~/.config/clex/config.

Snímka č. 4: CLEX - editovanie F-klávesov

Snímka č. 4: CLEX - editovanie F-klávesov


Syntax je nasledovná:
napríklad:

CMD_F3           = most -w $f $~ $!

kde CMD_F3 kláves F3, most -w $f $~ $! je príkaz, ktorý sa vykoná.

Samozrejme nemusí to byť príkaz most na zobrazenie súboru. Môže to byť napr. less, alebo nejaký skript, ktorý rozpozná, o aký súbor sa jedná a spustí príslušný prehliadač. O tom ale ešte bude reč.

A čo ostatné parametre?

| parameter | funkcia                                                                            |
|-----------+------------------------------------------------------------------------------------|
| $1        | názov aktívneho panela/adresára                                                    |
| $2        | názov neaktívneho panela/adresára                                                  |
| $f        | názov aktuálneho súboru (alebo označených súborov, ak bol príkazu predchádzal ESC) |
| $F        | názov iba aktuálneho súboru (a teda nikdy označených súborov)                      |
| $S        | názov iba označených súborov (a teda nikdy aktuálneho súboru)                      |
| $$        | znak $                                                                             |
| $!        | okamžité vykonanie príkazu (bez odoslania ENTER-om)                                |
| $~        | okamžitý návrat do CLEX-u po skončení príkazu (inak správa a čakanie na ENTER)     |

Takže sa spustí príkaz most s parametrami -w (zalamovanie riadkov), $f (aplikuje ho na nejaký súbor/y), $~ (po jeho skončení sa okamžite vráti CLEX do popredia) a $! (príkaz sa spustí okamžite po stlačení F3).

Takže je to tak, ako to vyzerá - stlačenie klávesy (napr. F3) spôsobí, že sa vytvorí príkaz, ktorý sa vloží do príkazového riadku a eventuálne sa aj sám odošle.
Rýchle, jednoduché, efektívne...

Asociácie súborov a iné pestvá

Užívateľ očakáva, že ak si chce prezrieť textový súbor, obrázok alebo PDF, tak nebude musieť zadávať do príkazového riadku konkrétny program na otvorenie.
Spustenie príkazu pomocou ENTER-a tiež nejde, pretože to odošle, vykoná zadaný príkaz.
Šikovne sa to dá spraviť tak, že napr. ku klávesu F12 (alebo napr. aj F3) sa priradí skript, ktorý rozpozná typ súboru (ja to mám len cez príponu, ale šlo by to aj cez výstup file) a následne spustí konkrétny program.
A prečo F12? Proste preto, že tento mám prehodený s CAPS LOCK-om (ktorý som použil v živote asi len 2x :) ) a ktorý je teda hneď poruke, a v GNU EMACS-e ho používam navyše ako modifikátor HYPER. Sila zvyku...

CMD_F12          = ~/bin/clexopener.sh $f $~ $!

U mňa tento príkaz spôsobí, že skript zoberie do úvahy aktuálny súbor, alebo súbor označených súborov (čo je strašná veta, takže oprava: zoznam označených súborov).

Úryvok zo skriptu clexopener.sh:

#!/bin/bash

extension=$(echo $1 | rev | cut -f -1 -d '.' | rev)

echo "Prípona súboru je: $extension"

if [ $extension == "pdf" ] || [ $extension == "PDF" ]
then
        mupdf "$1" >/dev/null 2>&1 &
    
fi

if [ $extension == "odt" ] || [ $extension == "doc" ]
then
        soffice "$1" &
    
fi

A tým je povedané všetko. Žiadne mime, xdg-open, a podobné záležitosti, ktoré niekde fungujú a niekde nie. Čisté a prehľadné, presne v duchu unixovej filozofie.

Nejaké menu s často používanými programami by sa hodilo...

A možno ani nie. Všetko môžu obstarať vlastné skripty.
Alebo predsa len áno?
Ja to riešim takto:
Po stlačení F10 (alebo ESC F10, ak sa aplikuje nasledovná udalosť na viac označených súborov) sa zjaví menu:

+-----------------------------------------------------------------------------------------+
|                    Užívateľské menu pre 'clex'  (~/bin/clexmenu.sh)                     |
+-----------------------------------------------------------------------------------------+
| 1 - xpp <súbor>               2 - evince <súbor>              3 - mirage <súbor>        |
| 4 - du -h                     5 - df -h                       6 - menu pakovania        |
| 7 - find . -iname <reg>       8 - presuň do koša              9 - práva -rw-------      |
| a - xarchiver <súbor>         b - clamscan -r -v .            c - grep -rnw . -e <retc> |
| d - space-underline           e - feh -Z -.                   f - underline-space       |
| g - reverz stran v pdf        h - hľadaj text v súbore        i - spoj označené PDF     |
| j - zahesluj PDF              k - xnview .                    l - skopíruj obr. do schr.|
| m - pridaj prefix oznac.                                                                |
+-----------------------------------------------------------------------------------------+

A následne stlačím príslušný kláves na spustenie nejakej naprogramovanej aktivity (napr. 6 zobrazí podmenu s výberom typu kompresie a následne prebehne samotná kompresia).
Že je to des? A čo je to za slovo: pakovanie?
Des, des - to je uhol pohľadu. Pre mňa je to omnoho rýchlejšie, ako spúšťanie GUI programov či pamätanie si kdejakých parametrov, ktoré používam občasne.
A pakovanie - pamätníci pamätajú, že výraz komprimovanie či stláčanie, či ako sa ešte inak volá, sa kedysi nepoužíval. Proste sa súbory pakovali a rozpakovali.

Konkrétne riešenia v skripte clexmenu.sh sú takéto (pár vybraných):

<echá na vypísanie textu>
               
read -n 1 x; while read -n 1 -t .1 y; do x="$x$y"; done
volba=$x
echo
if [ $volba = "1" ];
then
    xpp $filename &
fi

if [ $volba = "6" ];
then
    mydir=$1
    dirname=$(dirname $mydir ) 
    basename=$(basename $mydir ) 

    echo "Vyber si typ archívu:"
    echo "---------------------"
    echo
    echo "1 - .zip"
    echo "2 - .tar.gz "
    echo "3 - .tar.bz2"
    read -n 1 x; while read -n 1 -t .1 y; do x="$x$y"; done
    volba=$x

    if [ $volba = "1" ];
    then
        zip -r $basename.zip $basename 
    fi

    if [ $volba = "2" ];
    then
       tar cvzf $basename.tar.gz -C $dirname $basename 
    fi

    if [ $volba = "3" ];
    then
       tar cvjf $basename.tar.bz2 -C $dirname $basename
    fi

    echo
    echo "Hotovo, súbory sú zapakované."
    echo "Stlac ENTER"
    echo "-----------"
    read
fi

if [ $volba = "i" ];
then
    echo "Spájam označené PDF súbory do jedného"
    echo "-------------------------------------"
    /usr/bin/pdftk "$@" cat output SPOJENE.pdf
    echo "Stlac ENTER"
    echo "-----------"
    read
fi
        
if [ $volba = "m" ];
then
    echo "Zadaj prefix:"
    echo "-------------"
    read prefix
    pridaj-prefix.sh $prefix "$@"
fi

Opäť - jednoduché, funkčné, rýchle, použiteľné v konzole, bez závislostí, grafických knižníc (samozrejme, CLEX potrebuje NCURSES), a čo-ja-viem akého balastu.
Samozrejme, zruční užívatelia dokážu akiste vytvoriť krajšie a efektívnejšie verzie mojich skriptov. Tu mi ide hlavne o ukážku, ako som niektoré veci riešil ja.

Nejaké ďalšie triky a šikovné vlastnosti


Epilóg

Pre prácu so súbormi v konzole existujú silné a osvedčené programy: mc, ranger, nnn, GNU Emacs dired, GNU Emacs sunrise-commander, lfm. A možno aj iné. Skúšal som takmer všetky, ale programy založené na príkazoch vi(m)-u mi nesedeli. Môj obľúbený Emacs a jeho nadstavby som zatiaľ nedostal do stavu, kedy by som bol s nimi 100% spokojný (čo je výzva zlepšiť sa v LISP-e :) ). mc je fajn, vstavaný ftp klient je pre mňa postačujúci (do takej úrovne, že sa pripájam k telefónu alebo k hostingu pomocou

mc ftp://<user>:<heslo>:<port>

Ale CLEX ma proste chytil a nepustil. Robím v ňom bežnú prácu, a to, že mnohé veci interne nedokáže (teda - dokáže len pár vecí, ale poriadne), považujem za výhodu. V zmysle spomínanej unixovej a KISS filozofie si neviem predstaviť nič prirodzenejšie.
Taktiež mám pocit, že program potrebuje trochu spropagovať. Užívateľov GNU/Linuxu poznám mnoho, ale CLEX nepoznali.
Navyše - jedná sa o živý a vyvíjaný produkt. V našom svete veľa dobrých programov zakrpatelo, zaniklo, stratili sa.
GNU/Linuxový svet je o alternatívach, možnostiach, pestrosti a výbere. Každý program si svoje miesto a užívateľa nájde.


Napísané v markdown-mode pre GNU Emacs; tabuľky s pomocou org-mode.

  ,           , 
 /             \ 
((__-^^-,-^^-__)) 
 `-_---' `---_-' 
  `--|o` 'o|--' 
     \  `  / 
      ): :( 
      :o_o: 
       "-" 
      
      G N U
    • RE: CLEX súborový manažer pre GNU/Linux a Unix 29.04 | 19:33
      Avatar vxmery Mint 19.2 Cinnamon; MX 18.3 Xfce  Administrátor

      Napadá taký klasický fór z obdobia Nortonu: kukám vľavo mám disk c: vpravo mám disk c:- načo sú mi dva? Tak som jeden zmazal :)

      V repozitároch Mintu je CLEX verzia 4.6 patch 7-2. Vďaka za blog.

      • RE: CLEX súborový manažer pre GNU/Linux a Unix 29.04 | 20:03
        Avatar bedňa LegacyIce-antiX  Administrátor

        Heh, staré, ale stále dobré. Toto pobaví vždy :)

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: CLEX súborový manažer pre GNU/Linux a Unix 29.04 | 22:10
      Avatar debian+   Návštevník

      Mozes strucne zhrnut, preco by som si mal nainstalovat a pouzivat tento program?

      • RE: CLEX súborový manažer pre GNU/Linux a Unix 30.04 | 07:40
        Avatar Richard Antix  Používateľ

        Presne na to isté, na čo sa používa akýkoľvek správca súborov, či už je to Midnight Commander, Double Commander, Krusader, Tux Commander, Gnome Commander, a kdejaký iný Commander. Teda v skratke - na manipuláciu so súbormi (kopírovanie, premenovávanie, úprava).

        Nič viac.

        A prečo?

        Ako bolo spomenuté v článku, pre jeho rýchlosť, filozofiu, slobodnú licenciu... dôvodov sa nájde viac.

        • RE: CLEX súborový manažer pre GNU/Linux a Unix 30.04 | 22:37
          Avatar debian+   Návštevník

          Nano aj vim, su obidve editory, ale su si niecim rozdielne, specificke. Preco by som mal pouzivat prave tvoj. Je kopec dalsich. Cakal som, ze odpoved bude nieco hodnotne silne odrazajuce Tvoju skusenost, nie len take vseobecne.

          Napr. nano je pre laikov. Ale vim umoznuje zautomatizovat ukoni nad dokumentom. Napr. 15dd, zmaze 15 riadkov. V obycajnom editore by si musel zvyraznit a zmazat alebo rucne po znakoch zmazat.

          • RE: CLEX súborový manažer pre GNU/Linux a Unix 02.05 | 09:53
            Avatar Richard Antix  Používateľ

            OK, v skratke, čo ma upútalo a prečo som prestal používať napr. Double Commander.

            (1)

            Chcel som niečo, čo beží v konzole. Skúsil som Ranger a LFM, potom nnn. Ale u MC a LFM sa mi nepáčilo, že sa síce dalo skákať na súbory podľa zadávaného reťazca (u MC je potrebné dávať * ako prvý znak, ak chceme skákať na znaky v názve), ale pritom sa zobrazovali (a ostali zobrazené) všetky súbory. (možno sa to dá nejako nastaviť, ale pri rýchlom hľadaní som to nenašiel).

            CLEX má to filtrovanie dynamické a po ukončení filtrovania (opäť C-f) ostávajú zobrazené len vyfiltrované súbory. To sa mi páčilo odzačiatku.

            Áno, MC, LFM, ViFM zobrazujú súbory farebne, takže užívatelia farebných monitorov sú vo výhode :)...

            (2)

            Nepotreboval som, aby natívne manažér zobrazoval deb, obrázky či archívy. Načo aj, keď už raz v systéme musí byť nejaký softvér na prácu s nimi.

            Takže určite to nie je program pre začiatočníkov, tých to skôr znechutí...

            (3)

            Páči sa mi, že v zobrazení posledne navštívených ciest, histórii príkazov a tiež v záložkách funguje filtrovanie. Úžasne to zrýchľuje prácu.

            Asi tak. Zvyšok je viac-menej podobný ako pri iných programoch.

    • RE: CLEX súborový manažer pre GNU/Linux a Unix 02.05 | 15:41
      Avatar bedňa LegacyIce-antiX  Administrátor

      Dík za blog, ale pridám svoj pohľad na vec.

      Od kedy som na GNU/Linuxe, tak správcov súborov používam pomenej a dvojpanelových vôbec. Teda klamem občasne používam Xkový SpaceFM, ten je multipanelový, ale túto funkcionalitu som nikdy nepoužil.

      Najčastejšie používam GNU nástroje ktoré mi ponúkajú všetko čo chcem, vrátane filtrovania. Čo je výhoda, že nie som obmedzovaný nejakým programom kde programátor nenapísal nejakú funkcionalitu ktorá mi chýba. Proste to preženem cez trubky a na konci mám čo chcem. Keď sa mi nechce stále písať často používané veci tak si môžem skratky napchať do .bashrc. Napríklad stlačím "P" a "ENTER" mno a stane sa to čo očakávam :)

      alias p="mplayer ~/Videos/XXX/*"
      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org