[versione stampabile]

"Primi passi con Linux"

Breve guida all'utilizzo della prima sessione di lavoro Linux.

Prerequisiti

  1. Un sistema Linux funzionante
  2. Un "account" utente per l'accesso a tale sistema
  3. La "password" per tale "account"

Entrare nel sistema (login)

L'accesso ad un sistema Linux richiede il "login" che è l'operazione con la quale si specifica al sistema il proprio "account" utente e la propria "password". Se il sistema sul quale state lavorando è stato appena installato l'account da utilizzare è "root" mentre alla richiesta di password bastera premere [INVIO] oppure specificare la password che vi è stata chiesta durante l'installazione.

L'account "root" e l'equivalente di "administrator" in Windows NT, ovvero, l'account che ha pieni poteri sull'intero sistema. E buona norma, per motivi di sicurezza, evitare l'utilizzo di tale account per operazioni che non lo necessitano.

Attenzione: il "case" delle lettere ha importanza. Assicurative che il "led" della tastiera con la dicitura Caps Lock sia spento prima di digitare i vostri dati. Per spegnerlo premere sul tasto corrispondente (lo trovate sulla sinistra, il primo tasto della terza fila).

In Linux il login può essere effettuato tramite interfaccia a caratteri o in modalità grafica (XDM). In modalità a caratteri dopo il login il sistema mostra una serie di messaggi di "fortune", ovvero una serie di aforismi sul mondo del computer molto simpatici; in modalità grafica, invece, il sistema avvia tutte le applicazioni che avete scelto di default.

Se trovate il login di Linux un operazione fastidiosa è possibile configurare il sistema in modo tale che entri direttamente con un determinato account utente. Ovviamente ciò non è consigliabile su un sistema diverso da quello casalingo.

Di solito sotto DOS il prompt e "C:>", sotto Linux le cose possono essere molto più complicate. Il prompt più semplice di solito termina con il simbolo "$" (per gli utenti standard), oppure con "#" (per l'utente root).

Il prompt in Linux è una cosa molto personale. Alcuni riportano addirittura l'attuale fase lunare, altri quanto tempo manca al termine dell'orario di lavoro. Il prompt di solito indica anche in che directory ci si trova all'avvio. Per gli utenti normali questa è nel percorso /home/NOMEUTENTE Se l'account è agx, la home directory sarà /home/agx . A questa regola fà eccezione root che ha "casa" in /root .

Attenzione. Per navigare all'interno del "file system" bisogna avere le giuste "permission" (permessi). Un utente non può uscire al di fuori di /home/NOMEUTENTE perchè non na ha il diritto. Può, comunque, all'interno della propria "casa" fare qualsiasi cosa vuole anche creare altre sotto-directory.

Se siete entrati come root per andare alla radice del file system digitare il comando : cd /


La Console di Linux

A questo punto sarete già stati presi dall'orrore perchè pensate che Linux sia molto simile all'DOS. Be vi sbagliate di molto. La vostra distribuzione non ha evidentemente configurato "xdm" che è un programma che fa partire direttamente la parte grafica di Linux (X-Window) e che mostra una graziosa dialog box per il login. Sul mio sistema la dialog box è accompagnata da una pixmap del "diavolo della tasmania" (@19xx Warner Bros) che si mangia Windows ...

Se avete effettuato il login tramite terminale dovete sapere supito che Linux è dotato di molte "console virtuali". Cioè potete avere più schermi, dove girano programmi diversi, dove girano utenti diversi. Una delle mie prime esperienze in tal senso fu quella di creare 8 utenti fittizzi con cui divertirmi a scambiare messaggi tra di loro. Non male se pensate che con Windoze dove buttare via tutto quello che state facendo per rifare il login con un utente diverso...

Per cambiare da una console virtuale all'altra basta premere il tasto [ALT] accompagnato da un tasto funzione. La console di partenza, nel caso vi capita di perdervi, si otttiene premendo [ALT] + [F1] . Le distribuzioni attuali di solito pre-configurano il sistema in modo da avere disponibile 6 console virtuali ( da F1 fino ad F6 ), ma ovviamente c'è anche ci ne usa 32 !

Questo richiede un po di spiegazione. In Linux potete passare dall'ambiente grafico X-Window ad un qualsiasi terminale, similmente come spiegato prima, premendo [CTRL][ALT][F1]. Non state usando Windoze, qui il sistema non lo dovete MAI riavviare .... Esistono inoltre dei programmi, come Quake, che fanno uso di una libreria che accede direttamente all'hardware VGA della scheda video e che fanno uso della virtual console nr. 8 . Quindi se state giocando a QUAKE potete tornare al terminale iniziale premendo [ALT]+[F1] oppure ritornare a X-Window con [ALT]+[F7] . Quindi per ritornare a giocare a Quake premere [ALT]+[F8] da una console virtuale oppure [CTRL]+[ALT]+[F8] da X-Window .
Non dovete riavviare il sistema ... :-)

Le altre console, anche se attualmente non configurate per accettare il login, possono comunque essere utilizzate per visualizzare dei risultati. Per rendervene conto digidate il comando: ls > /dev/tty12 quindi premete [ALT]+[F12] per passare alla console virtuale nr.12, noterete che è stato visualizzato il contenuto della directory corrente. Premere [ALT]+[F1] per tornare indietro.


Hot Keys

Alcune combinazioni di tasti possono essere molto utili in Linux, eccone alcune:
  • History - con l'uso delle frecce [SU] e [GIU] e possibile ottenere la lista di tutti i comandi precedentemente digidati.
  • Backscrolling - lo scrolling dello schermo indietro o in avanti si ottiene premendo [SHIFT] + [PAGINA SU] o [PAGINA GIU]. Questo permette di vedere testo che precedentemente era sullo schermo.
  • Resettare lo schermo - un inconveniente della console e la visualizzazione di spazzatura sullo schermo. Questo di solito succede quando con il comando "cat" si cerca di visualizzare un file binario. La console interpreta i codice del file binario come comandi della tastiera e si imposta in strane modalità visualizzando caratteri strani. Per fissare tale incoveniente si usa il comando reset se tale comando non è presente sul vostro sistema si può fare ugualmente con la pressione della seguente combinazione di tasti: [e][c][h][o] [SPAZIO] [CTRL]+[V] [ESC] [c] [INVIO]

Ecco altri hot keys:
  • [CTRL]+[c] - interrompre il programma in esecuzione
  • [CTRL]+[d] - segnala la fine dell'operazione di input
  • [CTRL]+[u] oppure [CTRL]+[x] - cancella la linea attuale
  • [CTRL]+[z] - mette il programma in pausa
  • [TAB] - QUESTO E' IL TASTO PIU' USATO. Completa automaticamente il percorso o il nome del file digidato da tastiera.
  • [CTRL]+[t] - Inverte le due lettere dove si trova il cursore, utilissimo se quando si sbaglia per la troppa fretta. Esempio: 'dorò diventa 'door'
  • [Shift]+[Scrollock] - visualizza informazioni sulla memoria
  • [AltGr]+[ScrollLock] - visualizza lo stato dei registri
  • [Ctrl]+[ScrollLock] - visualizza lo stato del sistema
  • [AltGr]+[Fn] - Passa alla console virtualw "n"+12
  • [Alt]+[RightArrow] - Passa alla console virtuale successiva
  • [Alt]+[LeftArrow] - Passa alla console virtuale precedente
  • [AltGr]+[PrintScreen] - Passa all'ultima console virtuale

Utilizzo del mouse

Se è attivo il "daemon" (demone,servizio) "gpm" è possibile effettuare operazioni di "cut & paste" di testo tra le varie control virtuali. Premere il tasto sinistro del mouse e tracinarlo per selezionare il testo da copiare, quindi posizionarsi sul punto "x" e premere il tasto destro per incollare il testo.


"Al lupo, al lupo"

Ci sono molti modi per ricevere aiuto circa un determinato comando.
Provate con :
  • nome_comando -h
  • nome_comando --help
  • help
  • help nome_comando
  • dhelp cerca all'interno della documentazione Debian
  • dhelp cerca nella documentazione RedHat
  • man nome_comando visualizza la pagine di manuale
  • apropos nome_comando cerca un determinato argomento
  • whatis nome_comando ricerca nel manuale della guida per una parola
  • info consultazione dei documenti relativi a prodotti GNU
I comandi di base sono di solito documentati tramite l'uso di "man", se lo avete lanciato premete il tasto [q] per chiudere la pagina.


Il File System UNIX

Prima di spiegare i comandi per l'utilizzo del file system è necessarrio introdurre prima i concetti sui quali si basa il file sistem Unix rispetto al classico DOS.
  • nello scrivere un percorso (path) si usa la slash ("/") [come quando scrivete un indirizzo internet] e non la back-slash ("\")
  • sotto DOS i nomi dei file sono nella forma 8.3 ( PROVATES.TXT ); in Linux si possono usare nomi di file lunghi più di 255 caratteri e con più caratteri punto (".") all'interno del nome. Es: Questo_e.un.nome-di.file-molto_lungo
  • caratteri maiuscoli e minuscoli rendono due file differenti anche se hanno lo stesso nome. Quindi NOMEFILE.tar.gz è nomefile.tar.gz sono differenti.
  • i nomi dei file non sono collegati in alcun modo ad estensioni particolari. Ad esempio un file eseguibile non deve avere estensione .COM, .EXE o .BAT ma per essere eseguito deve avere solo le giuste "permission". In Linux i file eseguiti sono marcati con un asterisco ("*") dai programmi che visualizzano l'elenco di una directory.
  • sotto DOS i file di backup terminano con l'estensione .BAK, in Linux invece terminano con una tilde ('~').
  • in Linux un nome di file che inizia con un punto (".") e considerato "hidden" (nascosto/invisibile)
  • il passaggio dei parametri in DOS avviene mediante l'uso della slash ("/") mentre in linux si usa il segno meno ("-") singolo o doppio ("--"). E da notare che alcuni famosi programmi DOS (PKZIP e ARJ) usano già questa sintassi Unix.

Struttura delle directory

Il dos/windows automaticamente monta tutte le unità (floppy, hard-disk, cd-rom) usando le lettere dell'alfabeto c:, d:, ecc. In Linux il disco principale contenente il 'ROOT FileSystem' viene montato sotto la root directory, cioe '/'. Gli altri file system, come cdrom e connessioni di rete possono essere "montati" in qualsiasi parte dello stesso, anche se lo standard dice che dovrebbero stare in una sottocartella del percorso "/mnt".

Guardando sotto "/" noterete una serie di cartelle di difficile interpretazione, tutto però ha una logica ben precisa. Linux è uno Unix ed è stato quindi creato come sistema multiutente. Le directory di primo livello /bin, /sbin, /root contengono i programmi necessari all avvio del sistema in modalita singola utente (solo amministratore). Le directory di secondo livello /usr/bin, /usr/sbin contengono tutti i programmi che possono essere eseguiti dagli utenti dalla macchina e non solo dall'amministratore. Gli utenti hanno una loro cartella personale sotto il percorso /home dove possono fare tutto quello che vogliono. Infatti l'utente "pluto" può compilare ed usare una sua versione dei programmi in /home/pluto/bin da /home/pluto/src. Infine /usr/local / e usata per preparare software da usare localmente.


Gestione delle Directory

Questi sono alcuni dei comandi per la gestione delle directory:
  • ls - elenca i file contenuti in una directory, cioè DIR
  • cd - come in DOS serve a cambiare la directory corrente
  • md - crea una sottodirectory, come MKDIR in DOS
  • rd - rimuove una sottodirectory, come RMDIR in DOS
  • cp - copia file o sottodirectory, come COPY in DOS
  • mv - muove o rinomina una sottodirectory, come MOVE in DOS
  • rm - rimuove file o sottodirectory, come DEL in DOS
  • pwd - restituisce il nome della directory corrente
  • du - dà indicazione sullo spazio usato dai file
  • df - dà indicazione sullo spazio libero sui dischi
Ecco alcune delle wildcard usate nei comandi Linux che manipolano files o directory:
  • ";" Permette di inserire più comandi in successione sulla stessa riga. Esempiople: ls /bin ; ls /sbin ; ls /tmp
  • "&" Esegue un comando in background. Esempio: httpd &
  • "|" pipe
  • "#" commento
  • "\" indica alla shell che il comando che si sta scrivendo continua alla riga successiva.
  • "$" indica una variabile di sistema. Esempio: $PATH=/bin:/sbin
  • "?" wildcard (un carattere qualsiasi ma solo in quella posizione) Esempio: /bin/c?t
  • "*" wildcard (qualsiasi carattere tranne i file nascosti) Esempi: "ls gcc*" o "ls *.rpm" o "ls lib*.so.*"
  • ".*" wildcard (come '*' ma include anche i file nascosti)
  • "[]" wildcard (solo i caratteri specificati ed in quella posizione) Esempio: "ls [Cc]at", cerca per i files "Cat" e "cat"

Il comando "ls" ha la seguente sintassi: ls [opzioni][path_name]
Le opzioni principali sono:
  • "-a" elenca tutti i file includendo sottodirectory e file nascosti
  • "-d" mostra solo le directory
  • "-k" mostra le dimensioni in kilobyte
  • "-l" visualizza informazioni addizionali come le permission, le dimensioni e le date
  • "-o" utilizza colori diversi per i file e le directory
  • "-R" recurse subdirectory, come DIR /S in DOS
  • "-S" ordina i file secondo le dimensioni
  • "-t" ordina i file secondo la data di modifica
  • "-X" ordina i file per estensione
  • Se il risultato del comando "ls" supera le dimensioni dello schermo, è possibile usare la sintassi (equivalente a DIR /P in DOS):" ls | more " per visualizzare il risultato una pagina alla volta.


    Il comando cd funziona come in DOS, tranne che in Linux si hanno due possibilità di utilizzo particolari:
  • "cd -" Annulla l'ultimo comando "cd" ritornando alla precedente directory !
  • "cd ~" Posiziona la shell nella home directory dell'utente attuale.


  • Completamento automatico del Path

    Se la shell che state utilizzando è bash vi potrà tornare molto utile la feature del "completamento automatico del path" (Path Completion). In pratica mentre nella shell si sta digitando il nome di un percorso o di un file, la pressione del tasto [TAB] provoca il completamento automatico.
    Se ciò non è possibile perchè il nome digidato corrisponde a più di una combinazione verrà emesso un segnale di beep dopodichè un'ulteriore pressione del tasto [TAB] provoca la visualizzazione di tutti i file che corrispondono alla stringa sinora digidata. Molto spesso l'autore utilizza questa feature per visualizzare il contenuto di una directory. Ad esempio se sto cercando di visualizzare un file di cui non ricordo il nome nella mia home directory.
    Posso digitare: cat /home/agx e quindi premere due volte [TAB] per ottenere tutti i file della directory senza dover richiamare prima il comando ls. Posso poi digitare il nome del file desiderato senza dover riscrivere il comando 'cat'.


    Il comando md è usato per creare directory. La sintassi è md

    Il comando rd , invece, rimuove una directory che deve essere già stata svuotata da tutti i file. La sintassi è rm

    Il comando du visualizza lo spazio usato dalla directory, non quanto spazio è libero.
    La sintassi è : du [-a] [-s] [-m]
  • "-a" visualizza l'uso dello spazio per tutti i file del percorso specificato
  • "-s" visualizza l'uso dello spazio totale solo per il percorso specificato
  • "-m" visualizza le informazioni in Megabytes

  • Il comando df visualizza lo spazio libero sui dischi del sistema.
    Esempio: df -h


    Permessi Utente

    Lanciando il comando "ls -al" noterete che visualizza le directory ed i file in un formato esteso rispetto allo standard, questo include informazioni sulle permission e l'ownership.

    Ecco come appare:
    	drwxr-xr-x   2 dosuser  dos           256 Apr 28 15:40 ./
    	drwxr-xr-x  15 dosuser  dos           928 Apr 28 14:50 ../
    	-rw-r--r--   1 dosuser  dos            20 Apr 28 16:05 .bash_history
    	-rw-r--r--   1 dosuser  dos          6993 Oct  5 16:01 _bhist
    	-rw-r--r--   1 dosuser  dos          1150 Apr 28 15:55 _blogin
    	-rw-r--r--   1 dosuser  dos            40 Dec 30  1996 _blogout
    	-rw-r--r--   1 dosuser  dos          1131 Dec 31  1996 _inputrc
    	-rwxr-xr-x   1 dosuser  dos           220 Nov  8  1996 man2txt.sh*
    
    Il primo campo sono le permission. Sono nella forma: 'drwxrwxrwx', quando uno di questi flag non è presente è indicato con '-'. Il flag 'r' indica che il file è leggibile. 'w' che è scrivibile ed 'x' che è eseguibile.

    Il primo flag 'd' indica se il file è una directory. Diversamente '-' indica un file normale mentre 'l' signiifca che il file è un link ad un'altro file.
    La prima serie di 'rwx' sono riferite alle permissione che ha l'owner' (il padrone) del file che è il nome indicato nella terza colonna (dosuser).
    La seconda serie di 'rwx' sono le permission che ha il gruppo sul file. Il gruppo è indicato alla 4a colonna (dos).
    La terza serie di 'rwx' sono le permission che hanno tutti gli altri utenti su quel file.

    Un utente che crea un file con permission '-rw-------', sarà l'unico ad avere accesso a quel file.
    E' da notare che le permission per la directory './' corrispondo alle permission che ha la directory corrente.
    Ricordatevi anche che i file nascosti sono quelli che iniziano con un punto, e che per essere visualizzati bisogna usare l'opzione -a con il comando "ls".


    Come vengono applicate le permission ?

    Le permission assegnate ad un file dipendono innanzitutto dalle permission della directory dove è situato il file. Un file pubblico ("-rwxrwxrwx") non può essere visto da tutti se le permission della directory sono "-rwx------".
    Un utente per accedere ad i file di una directory deve avere i permessi di [ lettura (r) ed ] esecuzione (x) su di essa e di lettura (r) ed esecuzione (x) sul file.


    Link Simbolici

    Unix ha un tipo di file che non esiste in DOS: il link simbolico. In pratica si tratta di un puntatore ad un file o a una directory; semplicisticamente potremmo dire che un link simbolico è molto simile agli "shortcuts" di Windows però può essere utilizzato direttamente nei comandi.
    Esempi di link simbolici sono /dev/modem .

    Per creare un link simbolico si usa: ln -sf
    Esempio: ln -s /usr/doc/g77/DOC g77manual.txt


    Comandi per la gestione dei file

    Questi sono i comandi per la gestione dei file :
  • cp - COPY
  • rm - cancella un file, i.e. DEL
  • rm -R - con l'opzione -R funziona come il comando DOS "DELTREE"
  • mv - muove/rinomina un file
  • cat - visualizza un file, come TYPE
  • more - visualizza un file ma una pagina per volta
  • less - come "more"

  • Il comando di copia, cp ha la seguente sintassi :
    cp [options] [source_file] [target_file]

    Le opzioni più usate sono:
    "-i" chiede conferma prima di sovrascrivere un file
    "-r" copia anche le sottocartelle (ricorsivamente)
    "-a" si comporta allo stesso modo di XCOPY
    "-f" sovrascrive file già esistenti senza chiedere conferma


    Il comando di rimozione, rm ha la seguente sintassi:
    rm [options] [list of file to delete]

    Utili opzioni sono:
    "-i" chiede conferma prima di cancellare un file
    "-r" rimuove un'intera directory
    "-R" rimuove una directory e tutte le sottocartelle


    Il comando mv ha la seguente sintassi :
    mv [options] [old_file_or_dir_name] [[new_directory_name]/[new_file_name]]

    Il comando cat semplicemente visualizza tutti i file elencati sulla linea di comando, ed è per questo usato per "concatenare" diversi file, ad esempio: cat pippo pluto paperino > topolinia
    L'opzione "-n" di cat è usata per numerare le righe mentre vengono visualizzate.

    "more" e "less" visualizzano una pagina per volta il file specificato sulla riga di comando oppure inviato tramite pipe.
    Esempi: cat pippo | more equivalente di more pippo

    Utili tasti da tenere in mente sono:
    [INVIO] per avanzare di una riga
    [SPAZIO] per avanzare di una pagina
    [p] per tornare indietro di una pagina
    [q] per uscire dal programma.



    Eseguire programmi .... pardon, processi


    Eseguire programmi

    Per eseguire un programma basta digitare il suo nome e premere INVIO. Se la directory dove è incluso il programma non è presente all'interno del PATH di ricerca il programma non sarà eseguito anche se si trova nella directory attuale. Per ovviare a ciò indicare il nome del percorso del programma oppure ./nome_programma se si trova nella directory attuale.


    Concatenare Programmi

    Su una stessa riga possono essere eseguiti più programmi, basta separarli con ";".
    Esempio: ls /bin ; ls /root

    Se una linea di comando è troppo lunga per stare su una sola riga, si puo usare il carattere "\" per "andare a capo". Il sistema visualizzare il prompt "continue>" per indicare che è possibile continuare a digitare il comando precedente.

    Se si vuole eseguire un programma solo se il programma precedente è terminato con successo basta separarli con i caratteri "&&".
    Esempio: cp /etc/passwd /tmp/grabbed_passwd_file && cat /tmp/grabbed_passwd_file


    Eseguire processi in background

    Per eseguire un processo in background basta aggiungere il simbolo "&" alla fine della riga di comando.
    Esempio: pppd &

    La shell ritornera un codice del tipo:
    [1] 123
    che identifica il numero assegnato a tale "job" (cioè 1 ) e il numero del PID (123) assegnato al processo.

    Eseguire processi in background è molto utile, si può formattare un disco, zippare molti files oppure lanciare una stampa molto grande allo stesso tempo, sempre avendo il prompt dei comandi a piena disposizione.



    Fermare un processo

    Basta premere CTRL + C


    Monitorare i processi

    Per vedere la lista dei processi utenti basta usare il comando ps
    Per poter vedere TUTTI i processi del sistema si usa la sintassi: ps -ax



    Jobs, Backgrounds and Foreground

    I processi che girano in background sono chiamati job, forse per un antica eridità del VMS.
    Alcune cose utili da sapere:
  • Per sospendere un processo che gira in foreground: CTRL-Z
  • Per riavviare un processo sospeso, ma in background: bg
  • Per vedere la lista dei jobs attivi: jobs
  • Per portare un processo in foreground: fg

  • Killing is my bussiness ...

    Alcuni processi non possono essere fermati con CTRL + C e vanno quindi "killati"(uccisi)
    Per uccidere un processo si usa la sintassi: kill

    Molto spesso se un processo non ne vuole sapere di "morire" si può mandargli direttamente altri tipi di segnale, la sequenza che di solito si usa è :
    kill -15
    kill -9



    Shutting Down the system

    Reboot Veloce

    Basta premere CTRL+ALT+CANC se si è in modalita testo. Altrimenti uscire prima dall'X-Window con CTRL+ALT+BACKSPACE
    La sintassi correttà per fermare o riavviare il sistema è :
    shutdown [-h|-r] NOW
    Con l'opzione "-h" si ferma il sistema, mentre con "-r" si effettua un reboot.


    Uscita temporanea

    Si puo lasciare accessa la macchina, Linux spegnerà autoticamente il monitor e renderà lo schermo nero. Però dovrete uscire dai terminali nei quali siete entrati usando il comando "exit" oppure "logout".


    Cambiare utente al volo

    In ogni momento è possibile lavorare con un nuovo utente per mezzo del comando su
    Per usarlo digitare: su nome_nuovo_utente
    quando avete finito usate "exit" per ritornare all'utente precedente.
    Ovviamente potete fare il l ogin con più utenti diversi !



    Questo e' tutto per ora. Per una guida completa di Linux cercate in rete gli 'Appunti Linux', e' il miglior manuale possibile (oltre 2000 pagine).

    Lì 22 febbraio 1999, questo testo è nato grazie al contributo di Davide Alberani e di "DavideDaNapoli".

    Linkare documenti di questo sito è permesso ed è cosa gradita.
    'Bad Penguin' è un marchio depositato di Antonio Gallo in uso dal 1996. L'utilizzo del nome, del logo e dei contenuti del sito, se non diversamente indicato, deve essere concordato con l'autore. Linkare documenti di questo sito è cosa gradita.