LESSPIPE.SH(1)

NUME
lesspipe.sh - un filtru pentru less

SINOPSIS
lesspipe.sh [FIȘIER[e]]...

DESCRIERE

Scopul lui lesspipe.sh este de a îmbunătăți rezultatul lui less. Alegerea regulilor care urmează să fie aplicate pentru a modifica rezultatul se bazează pe conținutul fișierului. Extensia fișierului este respectată doar în ultimă instanță. De obicei, lesspipe.sh este apelat ca un filtru de intrare pentru less.

Cu ajutorul acestui filtru, less va afișa conținutul necomprimat al fișierelor comprimate (gzip, bzip2, compress, zstd, lz4, lzip, xz, lzma, zlib sau brotli). Pentru fișierele care conțin arhive și directoare (de exemplu, formatele tar, ar, zip, 7-zip, rar, jar, cpio, rpm, deb, ms-cabinet, iso, dmg, appimage și snap), se va afișa un tabel de conținut. Multe alte fișiere vor fi reformatate pentru afișare. Sunt incluse formatele pdf, dvi, markdown, suite Office (MS și Openoffice), NetCDF, matlab, device tree blob, html și media (imagine, audio și video). Acesta necesită instalarea unor programe ajutătoare.

De asemenea, filtrul poate fi aplicat în mod recursiv pentru a extrage și afișa din mers fișierele din arhive. Acest lucru funcționează până la o adâncime de 6, unde aplicarea unui algoritm de decomprimare contează ca un nivel separat.

Dacă instrumentufile raportează un text cu o codificare diferită de cea utilizată în terminal, atunci textul va fi transformat folosind iconv în codificarea implicită. Acest lucru presupune că instrumentul file obține codificarea corectă a fișierului, ceea ce poate fi greșit în anumite situații. Dacă se adaugă două puncte „:” la numele fișierului, conversia este suprimată.

Atunci când se utilizează programele git, vim sau mutt, acestea pot fi activate pentru a citi fișiere care nu sunt de tip text, utilizând lesspipe.sh. Acest lucru este descris în Wiki la adresa https://github.com/wofr06/lesspipe/wiki.

ACTIVAREA FILTRULUI
Filtrul este apelat din less cu condiția ca variabila de mediu LESSOPEN să fie definită corespunzător. În cazul shell-urilor de tip ksh (bash, zsh), comanda
    LESSOPEN="|lesspipe.sh %s"; export LESSOPEN
activează filtrul pentru «less». Utilizați ruta complet calificată, dacă lesspipe.sh nu se află în ruta de căutare. Comanda pentru a defini LESSOPEN poate fi, de asemenea, afișată prin apelarea lesspipe.sh fără argumente. Aceasta poate fi utilizată chiar și pentru a defini direct LESSOPEN:
    eval `lesspipe.sh`
    (bash) or
    lesspipe.sh|source /dev/stdin
    (zsh)
Comenzile de mai sus funcționează numai în modul descris dacă numele fișierului este lesspipe.sh. Dacă acesta este instalat sub un nume diferit, atunci apelarea fără un argument va funcționa ca un filtru cu fanionul LESSQUIET activat și așteptând intrare de la STDIN.

După ce ați definit variabila de mediu în modul descris mai sus, less va afișa informații textuale pentru o gamă largă de formate de fișiere.

În mod normal, filtrul nu este apelat dacă intrarea este direcționată către «less» ca în
    cat somefile | less
Așa cum este descris în pagina de manual a «less», filtrarea într-o conductă poate fi totuși forțată prin începerea LESSOPEN cu caracterele |-.

Dacă comenzile din lesspipe.sh eșuează, în unele cazuri sunt afișate mesaje de eroare. Acest lucru este considerat un comportament defectuos și trebuie raportat.

Pentru a suprima mesajele informale din prima linie de ieșire a filtrului, variabila ENV LESSQUIET poate fi fixată la o valoare nevidă.

Pentru a dezactiva temporar filtrul, se pot adăuga două puncte la numele fișierului „:”. În cazul în care numele fișierului conține două puncte, în locul acestora trebuie folosit un semn egal.

Fișiere HTML, XML și Perl POD
Fișierele în format htmlși perl pod sunt întotdeauna interpretate. Cu toate acestea, uneori conținutul original al fișierului ar trebui să fie vizualizat în schimb. După cum s-a menționat anterior, acest lucru poate fi realizat prin adăugarea de două puncte („:”) la numele fișierului. Dacă urmează tipul corect de fișier (html, pod), ieșirea poate fi colorată (a se vedea și secțiunea de mai jos).

    Exemplu: less index.html:html

Dacă este instalat binarul xmq, atunci xml este redat diferit, astfel încât structura xml să fie mai bine recunoscută. O afișare similară pentru conținutul html folosind xmq se obține prin adăugarea a două puncte („:”) la numele fișierului. Pentru a obține conținutul original al fișierului html, sunt necesare de două ori două puncte în acest caz („::”).

COLORAREA IEȘIRII
Filtrul este capabil să evidențieze sintaxa pentru o mare varietate de tipuri de fișiere. Dacă este instalat, nvimpager este utilizat pentru colorarea ieșirii. Dacă nu, sunt încercate pe rând bat/batcat, pygmentize, source-highlight, vimcolor și code2color. Pentru bat/batcat, tema este stabilită la ansi și stilul este stabilit la plain, ceea ce se apropie de rezultatul nefiltrat al less. Aceste opțiuni pot fi modificate în ~/.config/bat/config sau prin variabilele de mediu BAT_STYLE și BAT_THEME.

Conținutul fișierelor jurnal poate fi afișat în culori dacă programul tspin este instalat și dacă la numele fișierului se adaugă șirul „:log” sau dacă extensia fișierului este „log”.

Dintre programele de colorare, se poate forța utilizarea unuia dintre ele prin definirea variabilei ENV LESSCOLORIZER la numele programului de colorare. Pentru pygmentize și bat/batcat sunt permise configurări de opțiuni restrânse, după cum urmează:
    LESSCOLORIZER='pygmentize -O style=foo' # -P este permisă, de asemenea
    LESSCOLORIZER='bat --style=foo --theme=bar' # implicit: theme=ansi, style=plain
Evidențierea sintaxei este activată dacă variabila de mediu LESS există și conține opțiunea -R sau dacă «less» este apelat cu această opțiune. Acest lucru garantează că secvențele de control sunt convertite în culori și nu distorsionează afișarea. Utilizarea opțiunii -r nu este recomandată, deoarece dispunerea ecranului poate fi greșită, dacă în ieșire se află linii lungi.

Evidențierea sintaxei poate fi dezactivată prin adăugarea a două puncte după numele fișierului, dacă ieșirea a fost colorată. Dacă a fost ales un limbaj greșit pentru evidențierea sintaxei, atunci poate fi forțat un alt limbaj prin adăugarea a două puncte și a unui sufix după numele fișierului. Lista sufixelor și a limbilor acceptate poate fi imprimată folosind următoarele comenzi de colorare:
    bat --list-languages
    batcat --list-languages
    pygmentize -L lexers
    source-highlight --lang-list
    code2color -h
    vimcolor -L (atât pentru vimcolor, cât și pentru nvimpager)

Într-o conductă, această metodă nu poate fi utilizată. Ca o soluție se poate adăuga un ultim argument care este inspectat de lesspipe.sh. Este posibil să se folosească doar două puncte „:” (dezactivarea filtrului) sau :extensia (forțarea limbajului), de exemplu cu
    comandă care generează cod c | less - :c

Atunci când sunt îndeplinite condițiile de evidențiere a sintaxei, listele de directoare și listele cu conținutul fișierelor tar sunt de asemenea colorate.

Deoarece less este utilizat ca navigator implicit în alte programe (de exemplu, man, git și perldoc) lesspipe.sh poate fi angajat și poate modifica rezultatul acestor programe.

URMĂRIREA CREȘTERII FIȘIERELOR
Abilitatea de a vizualiza fișierele pe măsură ce cresc (utilă de obicei pentru fișierele jurnal, cum ar fi syslog) (folosind comanda F din less sau apelând less cu opțiunea +F) se poate pierde dacă lesspipe.sh stochează datele de intrare într-un fișier temporar pentru procesare ulterioară. Această problemă poate fi remediată adăugând două puncte („:”) ca ultim argument pentru less, de exemplu:
    less /var/log/syslog :
sau dacă LESSOPEN începe cu |- și less: este apelat printr-o conductă
    cat /var/log/syslog | less +F - :

UTILIZARE AVANSATĂ
Această versiune a lesspipe.sh vă permite să vizualizați fișiere individuale conținute într-o arhivă de fișiere, care la rândul ei poate fi conținută într-o altă arhivă.

Notația pentru vizualizarea fișierelor din arhivele multi-fișiere este
    less fișier_arhivă:fișier_conținut
sau chiar
    less super_arhivă:fișier_arhivă:fișier_conținut
Pentru a afișa ultimul fișier în formatul brut al lanțului, trebuie adăugate două puncte (:) la numele fișierului. Dacă acesta conține două puncte, atunci trebuie să se utilizeze semnul egal (=) drept caracter de separare alternativ.

Din nou, această metodă de extragere și afișare a fișierelor nu funcționează dacă less este apelat într-o conductă de ieșire și LESSOPEN începe cu caracterele |-. Ca și în cazul evidențierii sintaxei, soluția este de a utiliza un al doilea argument care începe cu două puncte. În acest caz, comanda de mai sus ar fi scrisă sub forma
    cat super_arhivă | less - :arhivă:fișier_conținut

MECANISM DE COMPLETARE A CONȚINUTULUI ARHIVEI
Cu fișierul lesscomplete furnizat (pentru zsh și bash) și fișierele _less (pentru zsh) și less (pentru bash) generate în timpul instalării, se poate realiza completarea cu tasta «Tab» pentru fișierele din arhive. Introducerea unui semn de două puncte (:) sau a unui semn egal (=) după numele unui fișier arhivat și apoi apăsarea tastei «Tab» activează mecanismul de completare. Acest lucru funcționează și în arhivele în lanț. Fișierele necesare pentru algoritmul de completare sunt instalate în directoare în conformitate cu opțiunile selectate în timpul instalării (scriptul de configurare). Fișierul lesscomplete trebuie să se afle într-unul dintre directoarele listate în $PATH, iar funcția _less pentru zsh într-un director listat de $fpath. Fișierul less cu instrucțiuni de completare pentru bash trebuie să fie sursă într-un script de inițializare bash, de exemplu în ~/.bashrc. Directoare noi, precum ~/scripts și ~/.fpath (pentru zsh), pot fi adăugate folosind comenzile
    PATH=~/scripts:$PATH # (lesspipe.sh, less) and fpath=(~/.fpath $fpath) # (_less, zsh only)

În zsh, trebuie apelat compinit și trebuie activată opțiunea menucomplete, dacă nu a fost deja făcută. Acest lucru se poate realiza cu ajutorul comenzilor
    autoload compinit
    compinit -Uz
    setopt menucomplete

În bash, bash-completion (de obicei un pachet cu acest nume) trebuie să fie instalat.

FILTRAREA DEFINITĂ DE UTILIZATOR
Filtrarea lesspipe.sh poate fi înlocuită sau îmbunătățită de un program definit de utilizator. Un astfel de program trebuie să se numească fie .lessfilter (și să fie plasat în directorul personal al utilizatorului), fie lessfilter (și să fie accesibil dintr-un director menționat în $PATH). Acesta trebuie să fie executabil și trebuie să se încheie cu un cod de ieșire 0, dacă filtrarea a fost efectuată în cadrul scriptului respectiv. În caz contrar, un cod de ieșire diferit de zero înseamnă că filtrarea este lăsată în seama «lesspipe.sh».

Acest mecanism poate fi utilizat pentru a adăuga filtre pentru noi formate sau, de exemplu, pentru a inhiba filtrarea pentru anumite tipuri de fișiere. Un exemplu de .lessfilter ar putea arăta astfel:
    #!/usr/bin/env bash
    case $1 in
    *.md|*.MD|*.mkd|*.markdown|*.rst)
    # dacă modulul Python rich.markdown nu este găsit, atunci
    # codul de ieșire nu este nul și se apelează lesspipe.sh
    python3 -m rich.markdown -c $1 ;;
    *.html|*.htm)
    # apelează programul tău preferat de formatare HTML, «cat -b» este doar un exemplu plictisitor
    cat -b $1 ;;
    *)
    exit 1;;
    esac

AUTOR
Wolfgang Friebel

RAPORTAREA ERORILOR
Raportați erorile la <wp.friebel AT gmail DOT com>.

DREPTURI DE AUTOR
Drepturi de autor © 2005-2026 Wolfgang Friebel
Acesta este software liber; consultați sursa pentru condițiile de copiere. NU există NICIO garanție; nici măcar pentru COMERCIALIZARE sau POTRIVIRE PENTRU UN ANUMIT SCOP.

CONSULTAȚI ȘI
less(1)

O descriere a lesspipe.sh poate fi de asemenea găsită în fișierul README conținut în pachetul de cod sursă

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.