Avanti Indietro Indice

6. Lezione 6 - Lavorare con i comandi

Fino ad ora avete visto svariati comandi e i loro misteriosi argomenti e opzioni. In questa lezione, proveremo a dissipare alcuni di questi misteri. Questa lezione introdurrà i seguenti comandi.

6.1 Cosa sono i "comandi?"

I comandi possono essere di uno di questi 4 tipi differenti:

  1. Un programma eseguibile come tutti quei file che vediamo in /usr/bin. All'interno di questa categoria, i programmi possono essere binari compilati come i programmi scritti in C e in C++, o programmi scritti in linguaggi di scripting come la shell, Perl, Python, Ruby, ecc.
  2. Un comando costruito dentro la stessa shell. La bash fornisce un certo numero di comandi interni chiamati comandi incorporati della shell. Per esempio, il comando cd è un comando incorporato della shell.
  3. Una funzione di shell. Questi sono script di shell in miniatura incorporati dentro l'ambiente. Nelle lezioni successive affronteremo la configurazione dell'ambiente e la scrittura delle funzioni di shell, ma per ora basta sapere che esistono.
  4. Un alias. Comandi che possiamo definire da noi stessi, formati da altri comandi. Questo sarà affrontato in una successiva lezione.

6.2 Identificare comandi

Spesso è utile sapere esattamente quale dei 4 tipi di comandi si sta usando e Linux fornisce un paio di modi per scoprirlo.

type

Il comando type è un comando incorporato della shell che mostra il tipo di comando che la shell eseguirà, dato un determinato nome di comando. Funziona in questo modo:

type comando

dove "comando" è il nome del comando che si vuole esaminare. Qui ci sono alcuni esempi:

[io@linuxbox io]$ type type
type è un comando interno di shell

[io@linuxbox io]$ type ls
ls ha `ls --color=tty` come alias

[io@linuxbox io]$ type cp
cp è /bin/cp

Qui vediamo il risultato di tre comandi differenti. Notare quello per ls (preso da un sistema Fedora) e come il comando ls sia in effetti un alias per il comando ls con l'opzione "-- color=tty" aggiunta. Ora sappiamo il perché l'output di ls è mostrato a colori!

which

Qualche volta c'è più di una versione di un programma eseguibile intallata su di un sistema. Mentre questo non è molto comune su sistemi desktop, non è inusuale su grandi server. Per determinare l'esatta posizione di un dato eseguibile, si usa il comando which:

  [io@linuxbox io]$ which ls
  /bin/ls

Il comando which funziona solo per programmi eseguibili, non per i comandi incorporati né per alias che sono sostituti di programmi eseguibili effettivi.

6.3 Ottenere documentazione su di un comando

Con queste nozioni su cosa è un comando, ora possiamo cercare la documentazione disponibile per ogni genere di comando.

help

bash ha una funzione di aiuto in linea disponibile per ogni comando incorporato della shell. Per usarla, digitare "help" seguito dal nome del comando incorporato della shell. Opzionalmente, si può aggiungere l'opzione -m per cambiare il formato di uscita. Per esempio:

  [io@linuxbox io]$ help -m cd
  NAME
        cd - Change the shell working directory.
  SYNOPSIS
        cd [-L|-P] [dir]
  DESCRIPTION
        Change the shell working directory.
        Change the current directory to DIR. The default DIR is the value of the
        HOME shell variable.
        The variable CDPATH defines the search path for the directory containing
        DIR. Alternative directory names in CDPATH are separated by a colon (:).
        A null directory name is the same as the current directory. If DIR begins
        with a slash (/), then CDPATH is not used.
        If the directory is not found, and the shell option `cdable_vars' is set,
        the word is assumed to be a variable name. If that variable has a value,
        its value is used for DIR.
        Options:
             -L        force symbolic links to be followed
             -P        use the physical directory structure without following symbolic
             links
        The default is to follow symbolic links, as if `-L' were specified.
        Exit Status:
        Returns 0 if the directory is changed; non-zero otherwise.
  SEE ALSO
        bash(1)
  IMPLEMENTATION
        GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
        Copyright (C) 2009 Free Software Foundation, Inc.

Un nota sulla notazione: Quando le parentesi quadre appaiono nella descrizione della sintassi di un comando, indicano elementi opzionali. Un carattere di barra verticale indica elementi mutualmente esclusivi. Nel caso del comando cd visto sopra:

cd [-L|-P] [dir]

Questa notazione dice che il comando cd può essere seguito, opzionalmente, o da un'opzione "-L" o da una "-P", e può anche essere seguito opzionalmente dall'argomento "dir".

--help

Molti programmi eseguibili supportano una opzione "--help" che mostra una descrizione della sintassi del comando supportata e le opzioni. Per esempio:

  [io@linuxbox io]$ mkdir --help
  Uso: mkdir [OPZIONE]... DIRECTORY...
  Crea la/le DIRECTORY, se ancora non esiste.
      -Z, --context=CONTEXT (SELinux) imposta il contesto di sicurezza a CONTEXT
  Gli argomenti obbligatori per le opzioni lunghe valgono anche per quelle brevi.
      -m, --mode=MODO   imposta i permessi (come in chmod), non a=rwx - umask
      -p, --parents     nessun errore se esiste, crea la directory genitrice se 
                        necessario
      -v, --verbose     stampa un messaggio per ogni directory creata
      --help            mostra questo aiuto ed esce
      --version         stampa le informazioni sulla versione ed esce  

Alcuni programmi non supportano l'opzione "--help", ma si può comunque provare. Spesso termina con un messaggio di errore che mostra un'informazione simile sull'uso del comando.

man

La maggior parte dei programmi eseguibili destinati per l'uso dalla riga di comando forniscono una parte di documentazione formale chiamata manuale o man page. Uno speciale programma di paginazione chiamato man è usato per vedere questa documentazione. Questo programma è usato nel modo seguente:

man programma
dove "programma" è il nome del comando da visualizzare. Le man page variano qualcosa nel formato ma generalmente contengono un titolo, un sommario della sintassi del comando, una descrizione dello scopo del comando, e un elenco delle opzioni del comando con la descrizione di ognuna di esse. Le man page, comunque, usualmente non includono esempi, e vengono intese come un manuale di consultazione, non come un tutorial. Come esempio, proviamo a visualizzare la man page del comando ls:

  [io@linuxbox io]$ man ls

Sulla maggior parte dei sistemi Linux, man usa less per visualizzare la pagina di manuale, così tutti i comandi familiari di less funzionano mentre si stà visualizzando la pagina.

README e altri file di documentazione

Molti dei pacchetti di software installati nel sistema hanno i file di documentazione che si trovano nella directory /usr/share/doc. La maggior parte di questi file sono memorizzati in formato di testo piano (semplice) e possono essere visualizzati con il browser web. Si possono incontrare alcuni file che terminano con l'estensione ".gz". Questo indica che sono stati compressi con il programma di compressione gzip. Il pacchetto gzip include una versione speciale di less chiamata zless che visualizzerà il contenuto dei file di testo compressi con gzip.


Avanti Indietro Indice