Se anche tu lavori spesso in ambiente Linux da terminale, conoscerai sicuramente ls, cd, cat, df e du. Ebbene: questi comandi fanno il loro lavoro... ma c'è di meglio, molto meglio! Nel corso di questa guida vedremo dunque alcuni comandi alternativi per gestire i file da linea di comando in ambiente Linux

Per realizzare le prove dei programmi citati ho utilizzato principalmente il mio PC Ubuntu e Ubuntu Server in SSH, ma gli stessi pacchetti sono comunque disponibili tramite i repository ufficiali di un po' tutte le distribuzioni principali

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video) - 10 comandi linux moderni che devi conoscere spotlight

Verificare lo Spazio su disco: duf

duf è un comando alternativo a df per visualizzare la capacità dei dischi, lo spazio libero e quello occupato

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

La caratteristica principale che mi fa preferire duf è la separazione delle varie unità in base al tipo. In alto vediamo immediatamente la radice (/) ed eventuali altre unità collegate al PC, come chiavette o dischi USB. In caso siano montate unità di rete saranno visualizzate al centro, mentre i "dispositivi speciali" (ai quali difficilmente saremo interessati...) sono raccolti in basso.

I dati sono piacevolmente colorati, a tutto vantaggio della leggibilità.

Possiamo anche specificare un file o una cartella (ad es: duf /home/) e il programma mostrerà solo le informazioni del disco sul quale risiede tale percorso.

Come installare duf su Ubuntu: nelle versioni recenti di Ubuntu, possiamo installare automaticamente duf tramite i repository ufficiali: sudo apt install duf -y.

Se invece il PC monta una generazione meno recente, dobbiamo usare il file duf_x.y.z_linux_amd64.deb offerto fra le Release di GitHub.

» Vedi: duf su GitHub

Dimensione file e cartelle: gdu

gdu è un'alternativa al classico du. E' uno strumento prezioso per capire quali file e cartelle stanno consumando la maggior quantità di spazio su disco

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Oltre ad essere drasticamente più veloce rispetto a du, gdu presenta i dati in modo aggregato per cartelle. Dopo aver selezionato la directory desiderata tramite le frecce di direzione, basta battere Freccia destra per entrare, e Freccia sinistra per tornare indietro.

Per cancellare un file o una directory è sufficiente battere D e confermare, mentre con ? si visualizza la guida rapida. Per uscire, battere Q.

Se lanciato senza parametri, gdu analizza la cartella corrente. Altrimenti, possiamo indicare il ramo di filesystem da analizzare specificandolo direttamente: gdu /, ad esempio, analizza tutto quanto (compresi i dischi esterni).

Come installare gdu su Ubuntu: dgu è disponibile tramite il PPA dell'autore: sudo add-apt-repository ppa:daniel-milde/gdu -y && sudo apt update && sudo apt install gdu -y

» Vedi: gdu su GitHub

Elenco file e cartelle: ll e lll

ll non è propriamente un comando, ma un alias per ls -alF. Lanciare l'uno o l'altro è dunque indifferente: l'unico vantaggio è che ll è più rapido da digitare sulla tastiera

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Ubuntu e molte altre distribuzioni rendono disponibile ll automaticamente: impartendo ll /home visualizziamo dunque i file e le cartelle presenti nel percorso indicato (oppure nel percorso corrente, se non specifichiamo nulla).

Mi capita però di sovente che, per qualche strano motivo, ll non sia disponibile su taluni server. A tale scopo ho preparato lo script lll, che fa la stessa cosa di ll ma aggiunge anche l'opzione -h (per visualizzare la dimensione dei file in kilo/mega/giga byte) e forza l'output colorato

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Come installare lll su Ubuntu: lll è disponibile tramite il pacchetto zzalias:

sudo apt install curl -y && curl -Ls https://turbolab.it/scarica/398?$(date +%s) | sudo bash

» Vedi: zzalias su GitHub

Cambio cartella: zzcd

Per entrare in una cartella si utilizza generalmente cd /home/. Niente da ridire, ma se lavoriamo spesso all'interno di percorsi particolarmente lunghi, la cosa diviene estremamente tediosa. Per far fronte a questa necessità ho preparato zzcd: un semplice script che consente di creare una lista di "percorsi preferiti", comodamente selezionabili tramite interfaccia grafica

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Come installare zzcd su Ubuntu: Per utilizzare zzcd è necessario innanzitutto installare il già citato pacchetto zzalias:

sudo apt install curl -y && curl -Ls https://turbolab.it/scarica/398?$(date +%s) | sudo bash

Ora procediamo alla personalizzazione della lista impartendo zzcd edit. Si aprirà così la lista dei percorsi preferiti all'interno dell'editor nano, da personalizzare secondo le proprie esigenze.

Dopo aver salvato la lista, basta impartire zzcd per visualizzare il menu e selezionare il percorso nel quale spostarci tramite le frecce direzionali.

» Vedi: zzalias su GitHub

Elenco file e cartelle: exa

ll e lll sono già buone semplificazioni rispetto ad ls con i vari parametri. Ma si può fare ancora meglio installando exa

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Il funzionamento generale di exa è simile a ls: lanciandolo senza argomenti viene mostrata la lista dei file e delle cartelle nel percorso corrente. Se invece specifichiamo un percorso, come exa /home/, visualizziamo le informazioni relative a quella destinazione.

Per scoprire i reali benefici di exa è però necessario aggiungere qualche parametro. Per ottenere un risultato simile a quello mostrato nello screenshot qui sopra, in particolare, bisogna impartire:

exa -lFaghH --git

In questo caso la scomodità supera il beneficio, motivo per cui il già citato script lll utilizza exa, con tutti i parametri ottimali, al posto di ls in caso il primo sia stato preventivamente installato.

Come installare exa su Ubuntu: se il sistema monta una versione recente di Ubuntu, possiamo installare automaticamente exa tramite i repository ufficiali: sudo apt install exa -y.

Se invece il PC monta una generazione meno recente, dobbiamo scaricare il file exa-linux-x86_64-vx.y.z.zip offerto fra le Release di GitHub, estrarlo e poi copiarlo manualmente nella cartella /usr/local/bin/.

» Vedi: exa su GitHub

Visualizzazione file di testo: bat

Generalmente, per visualizzare il contenuto di un file di testo da linea di comando, utilizziamo il comando cat mio-file.txt. Ma il comando cat ha alcuni svantaggi, fra i quali il fatto che "spara" tutto il file senza paginazione (molto scomodo per i file lunghissimi) e non utilizza alcun colore. Per migliorare drasticamente le cose, valutiamo di utilizzare bat

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

L'assortimento di funzionalità è notevole. Dalla gestione nativa della paginazione (per avanzare, battere Spazio) all'ottimo syntax highlighting (comodissimo quando si scorrono XML o script PHP chilometrici via SSH!), passando per l'indicazione del numero di riga, sempre visibile sulla sinistra. La quantità di opzioni e spunti d'integrazione è lunghissima, ed è tutto ben documentato sulla pagina GitHub del progetto.

Ah, prima di impazzire: per uscire, basta battere Q.

Come installare bat su Ubuntu: bat è disponibile tramite i repository ufficiali, ma è necessario creare manualmente un collegamento per renderlo disponibile: sudo apt install bat -y && sudo ln -s $(which batcat) /usr/bin/bat

» Vedi: bat su GitHub

Ricerca file: fd

Per ricercare un file per nome in ambiente Linux si utilizza un comando simile a questo: find . -type f -iname '*readme*'. Non c'è nulla di male, ma la sintassi è un po' articolata, e la ricerca può essere parecchio lenta in caso sia necessario attraversare lunghi rami di cartelle e sotto-cartelle. Una buona alternativa è fd

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Il comando precedente diventa ora: fd readme. Molto meglio!

Da notare che, di default, fd ignora i file nascosti e, se presenti, quelli presenti nel file .gitignore. Generalmente è una buona scelta, ma, se il programma non mostra il risultato cercato, è bene ricordare di riprovare aggiungendo -HI, ed impartire dunque qualcosa di simile a fd -HI readme.

Come installare fd su Ubuntu: fd è disponibile tramite i repository ufficiali, ma è necessario creare manualmente un collegamento per renderlo disponibile: sudo apt install fd-find -y && sudo ln -s $(which fdfind) /usr/bin/fd

» Vedi: fd su GitHub

Copia file remoti: rsync e zzmirror

scp è il comando "classico" per copiare file da e verso sistemi remoti

» Leggi anche: Guida SFTP/SCP, con esempi: download e upload file via SSH da linea di comando (Linux Ubuntu/CentOS)

scp va benissimo per trasferire un singolo file oppure piccole cartelle. Ma quando dobbiamo trasferire migliaia di file oppure singoli file molto "pesanti" si rileva assolutamente inadeguato. In tal caso, è decisamente meglio usare rsync, con una sintassi simile a questa:

rsync --archive --compress --delete --partial --progress --verbose /home/cartella-da-copiare utente@mio-server.com:/home/cartella-di-destinazione

Per svolgere questa operazione con maggiore semplicità ho preparato due funzioni, zzmirrorto e zzmirrorfrom, che permettono di raggiungere il medesimo risultato con una sintassi più semplice

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

Come installare zzmirrorto e zzmirrorfrom su Ubuntu: è necessario innanzitutto installare il già citato pacchetto zzalias:

sudo apt install curl -y && curl -Ls https://turbolab.it/scarica/398?$(date +%s) | sudo bash

A questo punto, per caricare la cartella corrente su mio-server.com basterà impartire:

zzmirrorto utente@mio-server.com:/home/cartella-di-destinazione

Per scaricare invece la cartella remota in quella locale:

zzmirrorfrom utente@mio-server.com:/home/cartella-da-copiare

Alcune note importanti:

  1. zzmirrorto e zzmirrorfrom lavorano sempre con la cartella corrente del PC locale. In altre parole: se desidero copiare "da" oppure "in" /home/zane/mia-cartella dovrò prima entrarvi impartendo cd /home/zane/mia-cartella
  2. attenzione al fatto che i comandi fanno un "mirror" della cartella indicata, ovvero eliminano tutti i file della destinazione che non sono presenti nella sorgente!

» Vedi: zzalias su GitHub

Compressione: 7z

Il mondo Linux utilizza soprattutto archivi compressi nei formati .tar.gz e .zip

» Leggi: Guida zip unzip con Linux: come zippare (comprimere, creare) e unzippare (estrarre) archivi .zip da linea di comando

Ma questi formati garantiscono un livello di compressione abbastanza modesto. Chi desiderasse comprimere al massimo dovrebbe provare 7za: la trasposizione da linea di comando del popolare 7-Zip per Windows, che consente di utilizzare l'ottimo formato di compressione .7z, che consente una riduzione degli ingombri drasticamente maggiore rispetto agli altri

Comandi Linux: 10 alternative gestire meglio file terminale linea comando (video)

I comandi principali sono:

  • visualizzazione: 7za l "/percorso/completo/miofile.7z"
  • estrazione: 7za x "/percorso/completo/miofile.7z" -o"/percorso/file/estratti/"
  • creazione archivio 7z: 7za a -t7z -mx=9 -mfb=256 -md=256m -ms=on -sdel "/percorso/completo/miofile.7z" .

Per l'installazione e la guida completa:

» Leggi: File .7z, Linux e linea di comando: come creare/comprimere ed estrarre archivi 7z con 7-Zip per Ubuntu e CentOS