Comandi di base
In questo capitolo si forniscono le nozioni pratichefondamentali per l’utilizzo di un qualsiasi sistema operativo Unix-compatibile. Come ambiente concreto di riferimento si utilizzerà una qualsiasi distribuzione Linux (es. RedHat o Knoppix).
NOTA: Unix è case-sensitive ovvero la differenza tra maiuscole e minuscole è sempre importante al contrario di DOS/Windows (che sono dunque case-insensitive). Comandi, pasword, nomi di file e di utenti etc. sono dunque soggetti a questa regola. |
Login & logout
In ambiente Unix ad ogni utente è assegnata una coppia nome utente / password. Dopo la fase di avvio il sistema propone la procedura di login: se un certo utente inserisce le esatte credenziali può avere accesso alla shell.
Il login può essere eseguito in ambienti diversi, grafici o testuali da locale o da remoto ma hanno tutti lo stesso scopo: verificare che l'utente abbia i requisiti per accedere al sistema o ad un suo servizio e metterlo in condizione di interagire con la macchina.
Il concetto fondamentale è che una volta effettuato il login, l’utente fisico impersona l’utente unix ed è soggetto alle eventuali limitazioni imposta a tale utente dell’amministratore del sistema.
Il logout è esattamente l'opposto del login: chiude la shell aperta con il precedente login e tutti i successivi programmi lanciati dall'utente, e fa in modo che l'utente debba ripetere il login per riaccedere al sistema.
La shell bash
Come si è già visto ciò che permette a un utente di interagire con il sistema operativo è la shell, che si occupa di interpretare ed eseguire i comandi dati dall’utente. Dal punto di vista pratico, il funzionamento di un sistema Unix dipende molto dalla shell utilizzata, di conseguenza, la scelta della shell è molto importante. La shell diffusa per il sistema GNU/Linux è bash (Bourne Again SHell).
Tra i compiti base svolti da una qualunque shell si hanno i seguenti:
- mostra l’invito, o prompt, all’inserimento dei comandi.
- interpreta la riga di comando data dall’utente
- mette a disposizione alcuni comandi interni
- mette in esecuzione i programmi esterni
- è in grado di interpretare ed eseguire dei file script di shell ( semplici programmi )
La shell bash in offre le seguenti funzioni avanzate:
- Possibilità di editare la command line: con i tasti freccia ‘destra’ e ‘sinistra’ è possibile tornare indietro nella linea di comando e modificarne il contenuto
- Autocompletamento dei comandi: premendo il tasto ‘tab’ è possibile ottenere il completamento automatico dei comandi e dei nomi dei file (ovviamente se non ci sono ambiguità)
- History dei comandi inseriti: premendo i tasti freccia ‘alto’ e ‘basso’ è possibile scorrere lo storico dei comandi inseriti
- Caratteri jolly per i nomi di file/directory: come in DOS/Windows il carattere ‘*’ rappresenta il carattere jolly. Ad esempio ‘a*’ rappresenta tutti i nomi di file o directory che iniziano per ‘a’.
Il prompt riporta in ogni momento il nome dell’utente corrente seguito da un carattere @ e dal nome del sistema; dopo uno spazio è invece riportata la directory corrente:
[utente@server1 /]$
Il carattere $ finale rappresenta il fatto che è stato fatto il login con un normale utente (dal nome ‘utente’).
L’interazione tra utente e shell funziona essenzialmente nel seguente modo: l’utente inserisce un comando/programma seguito dalle eventuali opzioni e preme il tasto ‘invio’; la bash manda in esecuzione il comando/programma e ne stampa l’output sul terminale.
Ad esempio è possibile cancellare lo schermocon il seguente comando:
L’output del comando clear è semplicemente quello di pulire lo schermo. Il comando clear è molto semplice e non ha bisogno di ulteriori specifiche; in generale però è necessario specificare argomenti e/o opzioni. In ambiente Unix la convenzione (quasi sempre rispettata) è la seguente:[utente@server1 /]$ clear
[utente@server1 /]$ <comando> <opzioni> <argomenti>
Le opzioni sono i modificatori del comportamento standard del programma mentre gli argomentirappresentano l’oggetto o gli oggetti sui quali il programma deve operare. Ad esempio:
[utente@server1 /]$ ls –a /archivio
visualizza (comando ls) tutti i file (opzione –a) della directory ‘/archivio’ (argomento).
Ovviamente ogni comando ha opzioni e argomenti di default. Ad esempio il semplice comando:
[utente@server1 prova]$ ls
visualizza tutti i file meno quelli nascosti della directory corrente (in questo caso prova)
Ottenere aiuto
Il successo di Unix è da attribuirsi anche alla grande quantità di documentazione interna presente di default. Quasi tutti i programmi permetto di stampare una schermata d’aiuto specificando:
[utente@server1 prova]$ <comando> -h
Di seguito vengono riportati inoltre alcuni comandi per richiamare manuali ed info di vario genere presenti in locale:
man <comando> |
E' la fonte più rapida e semplice per apprendere delle informazioni riguardanti comandi, file di configurazioni, funzioni di sistema e altro. |
info <command> |
Info è un lettore di ipertesti GNU. Molti programmi hanno la loro documentazione anche in questo formato. |
whatis <keyword> |
Cerca la keyword specificata all'interno del database whatis (contiene una breve descrizione di tutti i comandi nel sistema). Equivalente a man –f. |
apropos <stringa> |
Come whatis, ma cerca stringhe e non parole complete, di conseguenza può dare risultati più verbosi. Equivalente a man –k. |