Cos’è un Terminal File Manager?
In breve, un Terminal File Manager è un programma da terminale che ci consente di navigare fra i file e le cartelle del nostro sistema tramite una TUI (Interfaccia Utente da Terminale).
I Terminal File Manager non devono per forza sostituire interamente i file manager grafici, ma tornano molto comodi in svariate situazioni, sono spesso più veloci e consentono una migliore personalizzazione.
Ecco alcuni esempi di circostanze in cui un Terminal File Manager può tornare utile:
- Si sta esplorando un server tramite connessione SSH
- La maggior parte del nostro lavoro si svolge nel terminale (per esempio, se usi vim)
- Il nostro sistema non ha un’interfaccia grafica
Io mi ritrovo principalmente nelle prime 2 situazioni. Utilizzando vim, nel mio lavoro sono spesso a contatto con il terminale. Inoltre, avendo un raspberry PI a cui mi collego tramite SSH, mi ritrovo ad utilizzare il terminale per vedere i suoi file e fare dei piccoli lavori.
Ci sono molti Terminal File Manager in giro, ecco alcuni fra i più famosi:
Un’introduzione a LF
Il Terminal File Manager che utilizzo di più è lf
. Questo per alcuni semplici motivi:
- Supporta Windows nativamente
- Non contiene molte funzionalità, ma è facilmente estendibile
In particolare il primo punto è un must per me, dato che sono costretto a dover utilizzare sia Windows che Linux.
L’installazione è molto semplice per tutte le piattaforme, soprattutto dato che siete in grado di trovarlo nella maggior parte dei repository, compreso anche Chocolatey per Windows.
Uso di base
lf
si basa su un layout a 3 colonne. La colonna centrale è quella che indica la cartella
corrente, la colonna sinistra mostra la cartella genitore e la colonna a destra mostra una
preview del file o del contenuto della cartella attualmente selezionata.
Per visualizzare un tutorial abbastanza approfondito delle funzionalità di lf, potete
digitare il comando lf -doc
dal terminale.
Ecco alcune caratteristiche interessanti:
- Possibilità di impostare dei marker per tornare velocemente ad una cartella già visitata
- Selezioni multiple con azioni di massa personalizzabili
- Possibilità di eseguire comandi del terminale direttamente dall’interfaccia
- Possibilità di creare comandi e scorciatoie da tastiera personalizzate tramite il file di configurazione
Muoversi fra i file
Per muoversi all’interno del programma possiamo utilizzare sia le freccette direzionali che i movimenti
tipici del programma vim
. La freccia in alto e quella in basso ci permettono di muoverci fra i file
presenti nella cartella corrente (quella nella colonna centrale). La freccia a sinistra ci permette
di andare nella cartella genitore, mentre quella a destra ci farà navigare nella cartella selezionata,
oppure aprirà eventuali file di testo nel nostro editor predefinito di sistema.
Per spostarsi più velocemente fra i file presenti nella cartella, si possono utilizzare anche queste scorciatoie da tastiera:
<control>-u
- Sali di mezza pagina<control>-d
- Scendi di mezza paginagg
- Vai in cima alla cartellaG
- Vai alla fine della cartella
Inoltre, possiamo impostare dei marker per tornare alla cartella che stiamo usando. Per farlo, basta
premere il tasto m
e poi un carattere che vogliamo assegnare alla cartella corrente. Per esempio,
digitando ma
abbiamo impostato il marker a
. Dopodiché, dopo esserci spostati altrove, possiamo
digitare 'a
per tornare nella cartella in cui abbiamo impostato il marker.
Questa specie di segnalibri vengono anche salvati, in modo che non vengano cancellati quando si chiude
il programma, ma si possono sovrascrivere senza difficoltà.
Per impostare dei segnalibri a cartelle più utilizzate, preferisco impostare delle scorciatoie da tastiera nel file di configurazione, come vi mostrerò più avanti.
Come ultima cosa, possiamo spostarci su un file o cartella effettuando una ricerca del nome. Per farlo,
digitiamo /
e poi il testo che vogliamo cercare. Possiamo andare al riscontro successivo premendo n
,
mentre possiamo andare a quello precedente utilizzando N
.
Selezionare i file
Per selezionare i file possiamo utilizzare la barra spaziatrice. Altri comandi correlati alle selezioni sono:
v
- Inverte la selezioneu
- Annulla la selezione
Questi file vengono salvati in una variabile d’ambiente per poter essere utilizzati all’interno di script personalizzati che potremo aggiungere alla configurazione.
Operazioni di base sui file
Ecco come eseguire le principali operazioni che si effettuano generalmente sui file:
y
- Copia i file selezionatid
- Taglia i file selezionatip
- Incolla i file precedentemente copiati o tagliati:delete
- Elimina i file e le cartelle selezionate (chiedendo conferma prima)
Ricordiamo inoltre che possiamo utilizzare qualsiasi comando del terminale inserendo il carattere $
.
Questo ci consente di fare anche cose di questo genere:
$mv *.png ~/Pictures
Modificare la visualizzazione
Per riordinare i file, oppure mostrare i file nascosti, ci sono diverse scorciatoie da tastiera che
iniziano tutte con la lettera z
. Una volta premuta questa lettera, comparirà un piccolo menu che ci
indicherà le varie azioni disponibili.
Configurazione
Il file di configurazione è molto semplice da utilizzare e va personalizzato per poter ottenere alcune funzionalità utili.
La posizione di questo file si può trovare all’inizio della documentazione di lf
e il nome è semplicemente lfrc
senza estensione. Potete trovare degli esempi di file di configurazione
nel repository su github in questa cartella (cercate i file lfrc.example
e lfrc.ps1.example
per chi è su Windows).
Impostare scorciatoie a cartelle
Una cosa che ho trovato utile configurare sono alcune scorciatoie per le cartelle più utilizzate. Si potrebbero anche impostare dei marker, ma creando delle scorciatoie da tastiera è più comodo perché si può visualizzare un’anteprima delle abbreviazioni disponibili:
# Scorciatoia alla cartella delle impostazioni
map gs cd ~/AppData/Local
# Scorciatoie alle cartelle dei progetti e del mio lavoro
map gp cd D:/Progetti
map gl cd D:/Lavoro
Questo ci aiuta a imparare la sintassi per creare scorciatoie da tastiera:
map [scorciatoia] [comando]
Si possono lanciare comandi della shell precedendo il nome del comando con uno di questi caratteri:
$
, %
, !
oppure &
. La differenza sta principalmente nel modo in cui l’output viene mostrato,
ma potete trovare ulteriori informazioni nella documentazione cercando i termini shell
, shell-pipe
,
shell-wait
e shell-async
.
Rinominare più file contemporaneamente
Un’altra funzionalità che mi interessava molto è la possibilità di rinominare più file contemporaneamente utilizzando il mio editor di testo preferito. Per fare questo, si può installare un piccolo programma chiamato Massren. Ora lanciamo un comando per impostare il nostro editor di testo da utilizzare per la rinomina dei file:
massren --config editor nvim
A questo punto, aggiungiamo un nuovo comando nel nostro file di configurazione:
cmd batchrename ${{
$files = $env:fx -replace '"', ''
$files = $files -replace '\n', ','
$files = $files.Split(',')
massren $files
}}
Ora, mentre stiamo utilizzando lf, possiamo selezionare alcuni file e digitare :batchrename
per
rinominarli in massa, oppure possiamo impostare una scorciatoia da tastiera (io ho impostato Bm
).
Ecco il risultato:
Questo ci insegna come possiamo creare nuovi comandi:
cmd [nome-comando] [comando]
Possiamo indicare una sequenza di comandi da far interpretare alla nostra shell utilizzando i blocchi
${{ ... }}
(sempre con le possibili varianti che utilizzano !
, %
e &
).
Comprimere ed estrarre file zip
Su Linux, questa funzionalità è già inclusa e predisposta nel file di configurazione d’esempio. Chi usa Windows, invece, può prendere ispirazione dal codice che mi sono scritto per queste operazioni, che utilizza Powershell:
cmd extract %{{
# Eliminiamo le '"' che circondano il nome del file
$file = $env:f -replace '"', ''
# Se il file è un .zip, allora chiediamo un nome per la cartella di destinazione, ed estraiamolo
if ($file -like "*.zip") {
$outputFolder = Read-Host -Prompt "Select extract location"
Expand-Archive -Path $file -DestinationPath $outputFolder
}
else {
Write-Output "Unknown archive type"
}
}}
cmd compress %{{
# Trasformiamo la variabile contenente i nomi dei file in un Array
$files = $env:fx -replace '"', ''
$files = $files -replace '\n', ','
$files = $files.Split(',')
# Chiediamo di inserire il nome di un archivio e avviamo la compressione
$out = Read-Host -Prompt "Archive name"
if (-not ($out -like "*.zip")) {
$out = $out + ".zip"
}
Compress-Archive -Path $files -DestinationPath $out
}}
Spostare i file nel cestino
Per poter spostare dei file nel cestino dal terminale, ci sono diversi metodi. Se siamo su Linux, possiamo usare il programma trash-cli, mentre se utilizziamo Windows, possiamo installare il modulo Recycle per Powershell, e creare un comando nella nostra configurazione che assomiglia un po’ a questo:
cmd trash %{{
# Trasformiamo la variabile contenente i nomi dei file in un Array
$files = $env:fx -replace '"', ''
$files = $files -replace '\n', ','
$files = $files.Split(',')
Remove-ItemSafely $files
}}
Considerazioni per chi usa Windows
Windows è famoso per non ricevere molto supporto da vari programmi e utilità basate sul terminale.
In effetti, la maggior parte di questi programmi sono pensati per essere utilizzati su sistemi Linux.
Comunque, lf
funziona molto bene su Windows, se si tengono a mente alcune accortezze.
Le variabili che il programma si aspetta di trovare e quelle che lui stesso genera, vanno sempre
utilizzate aggiungendo il prefisso $env:
. Per esempio, lf
genera una variabile $f
che contiene
il nome del file attualmente selezionato. In Windows, al posto di scrivere $f
, scriveremo $env:f
.
Un’altra cosa importante è ricordarsi di utilizzare il giusto file di esempio come punto di partenza della
nostra configurazione. Nel link che vi ho indicato sopra, il file da copiare è quello chiamato
lfrc.ps1.example
, in quanto questo file predispone il programma per l’utilizzo di Powershell.
In conclusione
Personalmente, ho trovato questo programma molto utile e la possibilità di personalizzare i propri strumenti è sempre stato qualcosa che mi affascina. Fate una prova, chissà se vi ritroverete anche voi a passare un po’ più di tempo nel terminale 😉.