Logo del sito

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.

Schermata di base del programma lf

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 pagina
  • gg - Vai in cima alla cartella
  • G - Vai alla fine della cartella

Dimostrazione di come spostarsi fra i file

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 selezione
  • u - Annulla la selezione

Dimostrazione di come selezionare i file

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 selezionati
  • d - Taglia i file selezionati
  • p - 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:

1$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:

1# Scorciatoia alla cartella delle impostazioni
2map gs cd ~/AppData/Local
3# Scorciatoie alle cartelle dei progetti e del mio lavoro
4map gp cd D:/Progetti
5map gl cd D:/Lavoro

Questo ci aiuta a imparare la sintassi per creare scorciatoie da tastiera:

1map [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:

1massren --config editor nvim

A questo punto, aggiungiamo un nuovo comando nel nostro file di configurazione:

1cmd batchrename ${{
2 $files = $env:fx -replace '"', ''
3 $files = $files -replace '\n', ','
4 $files = $files.Split(',')
5 massren $files
6}}

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:

Dimostrazione di come utilizzare massren

Questo ci insegna come possiamo creare nuovi comandi:

1cmd [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:

1cmd extract %{{
2 # Eliminiamo le '"' che circondano il nome del file
3 $file = $env:f -replace '"', ''
4
5 # Se il file è un .zip, allora chiediamo un nome per la cartella di destinazione, ed estraiamolo
6 if ($file -like "*.zip") {
7 $outputFolder = Read-Host -Prompt "Select extract location"
8 Expand-Archive -Path $file -DestinationPath $outputFolder
9 }
10 else {
11 Write-Output "Unknown archive type"
12 }
13}}
14
15
16cmd compress %{{
17 # Trasformiamo la variabile contenente i nomi dei file in un Array
18 $files = $env:fx -replace '"', ''
19 $files = $files -replace '\n', ','
20 $files = $files.Split(',')
21
22 # Chiediamo di inserire il nome di un archivio e avviamo la compressione
23 $out = Read-Host -Prompt "Archive name"
24 if (-not ($out -like "*.zip")) {
25 $out = $out + ".zip"
26 }
27 Compress-Archive -Path $files -DestinationPath $out
28}}

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:

1cmd trash %{{
2 # Trasformiamo la variabile contenente i nomi dei file in un Array
3 $files = $env:fx -replace '"', ''
4 $files = $files -replace '\n', ','
5 $files = $files.Split(',')
6
7 Remove-ItemSafely $files
8}}

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 😉.