Gli esploratori della riga di comando sicuramente conoscono (e se non lo conoscono, è bene che lo imparino) uno dei più importanti e “antichi” comandi Unix: man. Con questo comando è possibile esplorare l’utilizzo della maggior parte dei comandi Unix, come spiega anche il nome stesso, dato che le lettere che lo compongono sono la prima parte della parola “Manual”, cioè “manuale”.
Il comando man ha una sintassi molto facile: si scrive e poi si fa seguire dal nome del comando della shell di cui ci interessa conoscere le istruzioni. Ad esempio:
man ls
Il risultato è una lunga spiegazione: ne presentiamo solo una brevissima parte per dare un’idea:
LS(1) BSD General Commands Manual LS(1)
NAME
ls -- list directory contents
SYNOPSIS
ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]
DESCRIPTION
For each operand that names a file of a type other than directory, ls displays its name as well as any requested, associated information. For each operand that names a file of type directory, ls displays the names of files contained within that directory, as well as any requested, associated information.
Il testo è estremamente lungo, sono in tutto 16.952 caratteri spazi inclusi per la versione BSD del manuale di ls aggiornata al 19 maggio 2002. E non può essere diveramente, dato che il comando, seppure all’apparenza semplice (dopotutto il suo lavoro è mostrare il contenuto di una directory) in realtà è estremamente complesso, così come la maggior parte dei comandi Unix, in cui la semplicità è tutt’altro che un limite.
In questo caso, oltre ad essere Posix, il comando deve anche garantire una retrocompatibilità con cinquant’anni di script e software sviluppato su piattaforma Unix, come chiosa il manuale stesso: “To maintain backward compatibility, the relationships between the many options are quite complex.”
Che man a sua volta sia un comando complesso, basato sulla documentazione alle volte lunghissima, con pochi esempi, molto sintetica, destinata a chi già “se ne intende” e che richiede comunque un discreto studio per capire il funzionamento di un comando poco noto oppure di una opzione di un tipo particolare e poco usato, è cosa nota. Ma oggi c’è una soluzione sufficientemente interessante da aprire nuovi spiragli.
Una comunità di volontari si è messa al lavoro per creare TLDR, cioè una serie di “man pages” semplificate e più orientate a un uso semplice e diretto del sistema Unix (o Linux) che sta in questo caso nella pancia del Mac. Lo scopo della comunità è quindi quello di riscrivere in maniera sintetica e facile i manuali di tutti i comandi, fornendo una descrizione che permetta anche a chi se ne intende meno di trovare subito le istruzioni che servono. Un esempio? Prendiamo il nostro ls:
:~ antonio$ tldr ls
ls
List directory contents.
- List files one per line:
ls -1
- List all files, including hidden files:
ls -a
- Long format list (permissions, ownership, size and modification date) of all files:
ls -la
- Long format list with size displayed using human readable units (KB, MB, GB):
ls -lh
- Long format list sorted by size (descending):
ls -lS
- Long format list of all files, sorted by modification date (oldest first):
ls -ltr
E la stessa cosa si applica a tantissimi altri comandi, incluso lo stesso man oppure tldr, che poi vuol dire in gergo internettiano “TL;DR”, cioè “Too Long; Didn’t Read” oppure “Too Lazy; Didn’t Read”, cioè “Troppo lungo (oppure ”troppo pigro“); non l’ho letto”. Cosa meglio dunque di una versione più sintetica e facile?
:~ antonio$ tldr tldr
tldr
Simplified man pages.
- Get typical usages of a command (hint: this is how you got here!):
tldr command
- Update the local cache of tldr pages:
tldr --update
Tra l’altro, il manuale semplificato di tldr contiene anche l’altra informazione utile da sapere quando si scaricano programmi differenti per la riga di comandi rispetto a quelli presenti nella dotazione di base di macOS, magari tramite Homebrew: con il comando tldr –update è possibile infatti fare l’aggiornamento diretto dal repository su Github del database che contiene i manuali semplificati per tldr.
L’homepage della community che si occupa di sviluppare questo software è questa, mentre qui si trova il repository su GitHub. Il client per riga di comando può essere scaricato direttamente dal sito o si possomo usare vari gestori di pacchetti (dopotutto è un software che può essere utilizzato su tutti gli *nix, Unix e Linux) compreso client per Android e iOS. Ma su Mac, dove effettivamente ha la sua maggiore utilità, il modo più semplice per installarlo è ricorrere a Homebrew:
:~ antonio$ brew install tldr