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
Verificare lo Spazio su disco: duf
duf
è un comando alternativo a df
per visualizzare la capacità dei dischi, lo spazio libero e quello occupato
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
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
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
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
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
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
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
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
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:
zzmirrorto
ezzmirrorfrom
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 impartendocd /home/zane/mia-cartella
- 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
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
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: