I principali comandi di Linux

Il programma che legge ed esegue l’input dei comandi impartiti dall’utente è la shell il cui ambiente è il principale metodo adottato da sistemisti e non per interagire con il sistema operativo. Infatti occorre ricordare che le interfacce grafiche – comunemente note con l’acronimo GUI (Graphical User Interface) – altro non sono che un front-end dei comandi che è possibile impartire dall’ambiente della shell. Un tipico esempio è il programma Ark uno dei principali programmi utilizzati in ambiente KDE per gestire gli archivi compressi e non il quale si appoggia a programmi da linea di comando come gunzip, tar, rar, unrar ecc per mostrarne graficamente i risultati.

Eseguire un comando da una shell è molto semplice; è sufficiente digitarlo al prompt dei comandi, aggiungere eventuali opzioni e/o argomenti (laddove previsti) quindi premere Invio. La difficoltà, invero, sta nel ricordare l’alto numero di comandi e le loro opzioni, ma aiutandosi con l’help in linea sarà sempre possibile arrivare quanto meno ad un uso basilare del comando.

Nel seguito verranno riportati alcuni comandi principali, un punto di partenza per poi affrontare in un secondo momento i comandi intermedi.

I comandi di base

Generalmente a questa categoria si fanno comprendere i comandi per la gestione di file e directory la maggior parte dei quali accettano più argomenti e contemplano svariate opzioni per i quali un elenco completo sarebbe inutile ancorché fuorviante; solo la pratica con i comandi che si andranno a mostrare permetterà di ricordarne l’ambito applicativo e le principali opzioni. Sarà poi l’help in linea a toglierci dubbi e perplessità su specifiche funzioni.

L’help in linea per qualsiasi comando può essere visualizzato utilizzando il comando man; digitare man man seguito dalla pressione del tasto Invio per visualizzare la guida al comando man e ai manuali di riferimento.

Contenuto e albero delle directory

Per visualizzare il contenuto di una directory viene utilizzato il comando ls il quale, per impostazione predefinita, se lanciato senza alcun argomento o opzione mostra il contenuto della directory di lavoro corrente.

Per visualizzare la directory di lavoro corrente è sufficiente impartire il comando pwd.

Per entrambi è possibile aiutarsi con il manuale online utilizzando man ls e man pwd rispettivamente. Ma mentre l’output su pwd mostra pochissime opzioni, di fatto solo la più utilizzata che poi è il default, non è così per ls per il quale le opzioni sono innumerevoli.

In questo contesto si vuole ricordare l’opzione -l per visualizzare una lista estesa dove compaiono diverse proprietà suddivise in campi, nell’ordine: il tipo di file (d sta per directory, il trattino indica un file regolare), i permessi del file, il numero di hard link, utente e gruppo proprietario, dimensione in byte, tempo di ultima modifica (modification time) e il nome del file.

Aggiungendo l’opzione -a si permette anche la visualizzazione dei file nascosti (quelli che nei sistemi GNU/Linux iniziano con un punto, e.g. .file1). Pertanto il comando ls -la visualizza tutti i file all’interno della directory di lavoro corrente compresi quelli nascosti.

Utilizzando l’opzione -R si abilita ls alla visualizzazione ricorsiva della directory, ovvero vengono visualizzate la directory corrente e il contenuto di tutte le sottodirectory. L’opzione -t elenca prima i file più recenti (modification time).

Per conoscere l’albero delle directory e del relativo contenuto rispetto alla posizione corrente utilizzare il comando tree. L’opzione -L seguita da un numero permette di specificare il numero di livelli da visualizzare. Utilizzare l’opzione -d se si vogliono visualizzare solo le directory e non già il loro contenuto. Ad esempio il comando tree -d -L 2 visualizzerà solo i primi due livelli di sottodirectory senza il loro contenuto.

Per spostarsi tra le directory si può utilizzare il comando cd (acronimo di change directory) seguito dal percorso dove ci si vuole spostare, ad esempio cd /usr/local. A tal proposito è utile sapere che ogni directory anche se non contiene file presenta sempre due elementi identificabili con . e .. e in quanto tali visualizzabili solo con l’opzione -a del comando ls. L’elemento . fa riferimento alla directory stessa mentre l’elemento .. fa riferimento al percorso (directory) contenente la directory corrente pertanto il comando cd .. fa risalire di un livello e cd ../.. di due livelli. Infine la tilde ~ indica la home directory dell’utente che lancia il comando pertanto con cd ~ si viene riportati nella propria home utente indipendentemente da dove ci si trova nel filesystem.

Copia, spostamento, creazione e rimozione

Per copiare file e directory si può utilizzare il comando cp (contrazione di CoPy) per il quale sono necessari due argomenti: percorso con nome del file da copiare, percorso di destinazione con eventuale nuovo nome del file. Se il file di destinazione esiste già con quel nome cp semplicemente lo sovrascriverà, quindi attenzione a dare nomi di file già esistenti e dopo non più recuperabili! Ad esempio il comando cp ~/temp/file1 /altro/percorso copia file1 presente nella cartella temp nella home utente (notare la tilde ~) nel nuovo percorso. Se nello specificare il percorso di destinazione venisse riportato anche un nome, file1 nel percorso di destinazione assumerebbe il nome indicato. Utilizzando l’opzione -p si manterranno tutti gli attributi del file originale come permessi e timestamp. Utilizzare l’opzione -R per copiare ricorsivamente il contenuto della directory e di tutte le sottodirectory e file in esso contenute. Nota: l’opzione -R non copierà i file appartenenti alla categoria dei link simbolici. Infine l’opzione -a permetterà di realizzare una copia di backup di un albero di directory di qualsiasi dimensione. Per ulteriori opzioni si rimanda all’help in linea man cp.

Per rinominare e/o spostare file e directory si può utilizzare il comando mv (contrazione di MoVe). Nella forma mv file1 file2 viene rinominato file1 in file2 nella directory corrente mentre nella forma mv file1 file2 file3 /altro/percorso vengono spostati i tre file nel percorso indicato come secondo argomento. Ad esempio mv ~/temp/fileN . sposta fileN nella directory di lavoro corrente (notare il punto!). Impartire il comando man mv per imparare le altre opzioni che il comando accetta.

Per la rimozione/cancellazione (definitiva!) di un file si può utilizzare il comando rm (contrazione di ReMove), e.g. rm file1 per cancellare file1 dalla directory corrente altrimenti è sufficiente specificare il percorso dove si trova il file terminato dal nome del file. L’opzione -r (o -R) permette di rimuovere ricorsivamente tutto il contenuto di una directory il cui nome e percorso dovrà essere passato come argomento. Nota: il comando rm è irreversibile, una volta impartito non sarà più possibile ritornare indietro e recuperare quanto rimosso! Una directory, solo se vuota, è possibile rimuoverla anche con il comando rmdir; qualsiasi altra cosa contenuta nella cartella da rimuovere come un file o anche una sottodirectory vuota farà fallire il comando rmdir. Per approfondimenti man rm e man rmdir.

Per creare una nuova cartella utilizzare il comando mkdir nomedirectory. Qualora si volesse creare un albero di directory è sufficiente utilizzare l’opzione -p, ad esempio mkdir -p cartella1/cartella2/cartella3 creerà a partire dalla directory corrente la cartella1 che avrà la sottodirectory cartella2 che a sua volta conterrà la cartella cartella3. Il comando man mkdir visualizzerà le ulteriori poche opzioni presenti.

Va ricordato che queste operazioni sono possibili laddove l’utente ha i permessi per eseguirle, altrimenti falliranno a meno di anteporre ad essi il comando sudo (per le distribuzioni che lo abilitano di default, e.g. Ubuntu) e fornire, dopo aver premuto Invio, la password dell’utente che sta lanciando il comando.

Per creare un file è possibile utilizzare anche il comando touch (a meno di utilizzare l’opzione -c), ma più che altro tale comando viene utilizzato per “pizzicare” un file ovvero per modificarne il timestamp senza alterarne il contenuto. Ad esempio touch file1 modifica il timestamp di file1 impostandolo alla data e ora correnti lasciando inalterato il contenuto. L’opzione -d permette di specificare il nuovo timestamp diverso da quello corrente.

Addendum

Alcuni comandi possono essere prolissi nell’output facendo scorrere le informazioni oltre la parte superiore dello schermo. Altre volte si vorrebbe solo leggere un file di testo di grandi dimensioni senza la necessità di utilizzare un editor di testi. In questo caso ci viene in soccorso l’analizzatore di testo less ad esempio passandolo in pipe al comando il cui output risulta molto prolisso. Ad esempio in presenza di un albero di directory profondo il comando tree | less visualizzerà l’albero suddetto pagina dopo pagina utilizzando la barra spaziatrice oppure ritornare indietro pagina per pagina utilizzando il tasto b. Il simbolo | è la pipe che redirige l’output di un comando all’input di un altro e i comandi così costruiti prendono il nome di pipeline.

Per completezza di informazione va ricordato che less ha sostituito more (man more per approfondimenti) il quale ancora oggi è in uso sebbene presenti un numero di opzioni minori di less (confrontare con man less).

Pubblicato
Etichettato come Linux

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *