Primi passi con la konsole di linux
Da Wizard linux team wiki.
Questa guida è rivolta a chi da poco si è affacciato sul mondo linux vuole iniziare a familiarizzare con uno strumento indispensabile rappresentato dalla Console (tecnicamente si chiama shell di Bash). Come è ormai è risaputo una delle differenze sostanziali tra linux e windows è proprio la console dei comandi unix, da molti considerata una scocciatura da imparare ma di fondamentale utilità; anche in ambiente windows esiste un interprete dei comandi dos ma è soltanto uno strumento marginale al sistema, in ambiente linux, invece, la console assume un ruolo fondamentale, poiché consente di effettuare operazioni che a volte, graficamente, non è possibile. Un punto che secondo me merita di essere edotto è quello dell'avvio di linux direttamente da shell di Bash, ossia con la sola modalità testuale (LINUX Senza server grafico), infatti linux può essere avviato anche senza la modalità grafica (come una console a tutto schermo) e questo in caso di crash consente , conoscendo opportunamente il sistema, di recuperare dati e sistema stesso, invece in altri sistemi operativi come windows il sistema operativo stesso è l'interfaccia grafica, quindi andando in crash quest'ultima va automaticamente in crash il sistema.
Ora andremmo a vedere i piu' basilari ed importanti comandi unix, indispensabili per muoversi in ambiente linux, cominciamo l'avventura.
Contents |
MUOVERSI NELLA CONSOLE E PERMESSI DEI FILE
Per aprire una Console basta cliccare sul menu' principale/sistema/terminali oppure con ALT+F2 e poi digitando konsole (in ambiente KDE) o terminale (in ambiente Gnome), come potrete vedere la console non è altro che un programma che consente di scrivere comandi; per default quando una console si apre è nella cartella /home/nome_utente. Quando usiamo la console ci troviamo sempre all'interno di una directory del computer, se vogliamo visualizzare il contenuto della directory basta digitare il comando ls e premere invio, se invece vogliamo vedere all'interno di quale directory siamo bisogna digitare si comando pwd, qui sotto c'è lo screenshot della mia console:
come vedete in risposta a ls il sistema scrive una serie di file e cartelle riconoscibili dal diverso colore ad es. quelle in blu sono le cartelle, le immagini sono in fuxia, i file compressi sono in rosso e così via. La risposta al comando pwd è incece:
[zicola@localhost zicola]$ pwd /home/zicola
il comando pwd stampa a monitor il percorso della directory in cui ci troviamo (zicola è il mio nome utente). All'interno della Console possiamo spostarci fra una directory e l'altra tramite il comando cd nome_directory ad esempio se da dove mi trovo voglio spostarmi nella directory immagini digiterò cd immagini/ così se invece voglio andare nella directory root digiterò cd / e così via, posso anche spostarmi in una directory ben precisa scrivendo tutto il percorso ad es. cd /home/zicola/immagini/ , in questo caso è molto utile il completamento automatico, basta scrivere le prime lettere e poi spingere [tab], se possibile viene automaticamente digitato il nome della directory (in altri casi anche il nome del file o del comando), una nota speciale la meritano il “.” (un punto) e “..” (due punti), il punto rappresenta la directory stessa in cui ci troviamo, digitando cd . ci troveremo sempre all'interno della stessa directory senza muoverci, i due punti rappresentano la directory contenente quella in cui ci troviamo ad es. se da /home/nome_utente digitiamo cd .. ci troveremo all'interno della directory /home/.
Ora passiamo alla creazione delle directory, per poter creare una directory basta digitare il comando mkdir nome_directory, ad esempio per creare la directory wlt dove vi trovate digitate mkdir wlt, per poter cancellare una directory vuota basta digitare rmdir nome_directory (es: rmdir wlt), da non confondere con il comando per cancellare un file che invece rm nome_file, (per cancellare il file prova.txt dentro /home/nome_utente digitare dentro la cartella dove si trova il file il comando rm prova.txt) per poter invece cancellare una directory con tutte le sotto cartelle ed i file bisogna digitare rmdir -r nome_directory, ma attenzione a non fare danni, nella console non c'è il cestino, quello che si cancella è perso definitivamente.
Un concetto da sapere è quello dei permessi sui file, infatti in ambiente linux ogni file o cartella appartiene ad un utente, che poi concederà i vari permessi di lettura, scittura, esecuzione (accesso per le directory); tali permessi possono essere per l'utente a cui appartengono, per il suo gruppo o per tutti, i permessi dei file si possono vedere con l'opzione -l del comando ls ad es. se dalla directory / scriviamo ls -l otterremo:
[zicola@localhost /]$ ls -l totale 60 drwxr-xr-x 2 root root 4096 dic 14 22:26 bin/ drwxr-xr-x 3 root root 4096 gen 9 10:28 boot/ drwxr-xr-x 1 root root 0 gen 1 1970 dev/ drwxr-xr-x 74 root root 4096 gen 9 10:28 etc/ drwxr-xr-x 3 root root 4096 gen 5 2004 home/ drwxr-xr-x 2 root root 4096 dic 17 21:04 initrd/ drwxr-xr-x 14 root root 4096 gen 9 10:27 lib/ drwxr-xr-x 2 root root 4096 mar 9 2004 media/ drwxr-xr-x 6 root root 4096 gen 5 2004 mnt/ drwxr-xr-x 2 root root 4096 gen 5 2004 opt/ dr-xr-xr-x 96 root root 0 gen 9 10:27 proc/ drwx------ 13 root root 4096 gen 9 03:19 root/ drwxr-xr-x 2 root root 4096 dic 18 12:58 sbin/ drwxr-xr-x 2 root root 4096 mar 9 2004 srv/ drwxr-xr-x 9 root root 0 gen 9 10:27 sys/ drwxrwxrwt 15 root root 4096 gen 9 10:58 tmp/ drwxr-xr-x 12 root root 4096 dic 14 22:41 usr/ drwxr-xr-x 18 root root 4096 dic 14 22:26 var/
la prima lettera di ogni riga indica se è una directory o un file (“d” per una directory “-” per un file, nel mio esempio non ci sono file), di seguito troviamo 9 lettere da suddividere in tre gruppi che indicano rispettivamnte i permessi del proprietario , del gruppo di utenti a cui appartiene ed infine i permessi per tutti gli utenti, nell'ordine in cui sono elencati, le lettere stanno a significare r per lettura w per scrittura e x (a volte può essere t)per esecuzione, il segno – ci dice che il permesso non è attivo. La terza colonna è contiene il nome del proprietario del file/directory che nel nostro caso è root, es. nella cartella boot (seconda riga) troviamo d che sta per dirci che è una directory, rwx che sta a significare che l'utente root può leggere scrivere ed eseguire questa directory/file, r-x sta a significare che il gruppo di utenti a cui appartiene root può soltanto leggere ed eseguire il contenuto della directory (r ed x), r-x sta a significare che tutti possono soltanto leggere ed eseguire questa directory/file.
ESECUZIONE PROGRAMMI
Per poter eseguire un programma da console basta scriverne il nome, se volete aprire mozilla ad es scrivete mozilla, la console si metterà in attesa fino a che non terminerà il programma mozilla, potrete chiudere il programma mozilla con il mouse o semplicemente permendo [ctrl+c], liberando così la console. Non Stancherò mai di ricordare a tutti l'utilizzo del tabulatore che autocompleta i comandi o i percorsi, è molto utile se dovete trovare un comando o un programma che non ricordate bene, inserendo infatti l'iniziale del comando e premendo due volte il tabulatore il sistema vi elencherà tutti i comando che iniziano per quella lettere, o se invece state scrivendo un percorso vi elencherà tutti i file o cartelle che iniziano per quella lettera nel path (percorso) che state scrivendo.
MOUNT E PERIFERICHE RIMOVIBILI (a cura di maverik)
Vi rimando a Come funziona il mount
GESTIONE DEI PROCESSI
Un' altra componente da conoscere è la gestione dei processi, avrete certamente notato che facendo partire un processo da console la stessa rimane bloccata fino al termine dello stesso. Volendo possiamo far partire un processo senza che la console riamanga bloccata, per farlo bisogna semplicemente mettere il carattere & dopo il nome del programma, ad es:
[zicola@localhost zicola]$ mozilla & [1] 2849 [zicola@localhost zicola]$
potrete notare che oltre a far partire il programma mozilla, la console ci restituisce due numeri e poi ritorna in attesa di input, pur lasciando il programma mozilla in esecuzione, nello stesso modo potremmo lanciare altri 10-100-1000 processi. I due numeri restituiti dalla console sono l'identificativo di JOB il primo e l'identificativo di PID il secondo. Il job equivale al modo in cui la console da cui è stato lanciato, chiama il programma, infatti se noi digitiamo:
zicola@localhost zicola]$ jobs [1]+ Running mozilla & [zicola@localhost zicola]$
il comando jobs ci restituisce la lista dei job lanciati dalla console in uso, nel mio caso vi è il job [1] attivo (valore running); il PID (secondo numero dell'esempio a inizio paragrafo) identifica il processo a livello di sistema, è il nome con cui il nostro sistema linux chiama il processo, è quindi indipendente dalla Console da cui è stato lanciato. Ricapitolando, il job (primo numero) è il modo con cui la console chiama il processo, è un riferimento valido solo all'interno della console stessa, se apriamo un 'altra console e digitiamo jobs non ci restituirà alcun valore per processi in esecuzione, il PID (secondo numero nel mio caso 2849) è il numero che identifica il processo a livello di sistema e valido in qualsiasi altra console, tanto e vero che questo identificativo si usa per uccidere il processo con il comando kill, digitando:
[zicola@localhost zicola]$ kill -9 2849
termineremo il processo numero 2849 (nel mio caso equivalente a mozilla), questo strumento è molto utile nei rari casi in cui si blocca un programma. Digitando invece:
[zicola@localhost zicola]$ xkill
noterete che la forma del puntatore del mouse cambierà, se cliccate su una finestra la stessa verrà terminata, ad esempio si blocca l'applicazione openoffice.org, apro un terminale digito xkill e clicco sulla finestra di openoffice, lo stesso si chiude. Molto utile rispetto a [CTRL]+[ALT]+[CANC] vero? Se invece ci dimenticassimo di mettere & alla fine del comando come possiamo rimediare? Semplicemnte premendo [CTRL]+[Z] la console ritornerà funzionante restituendoci questa schermata:
[zicola@localhost zicola]$ mozilla [1]+ Stopped mozilla [zicola@localhost zicola]$
n pratica abbiamo temporaneamente stoppato il programma mozilla, per tornare a farlo funzionare lasciandoci libera la console andremmo a digitare:
[zicola@localhost zicola]$ bg 1 [1]+ mozilla & [zicola@localhost zicola]$
bg sta per background, ed 1 è il numero di job del processo, se invice di bg scrivessimo fg (foreground) numero di job otterremo che il programma mozilla si libera dallo stopped e la console si blocca fino alla chiusura del programma, in poche parole come se lo avessimo lanciato senza &.
Per poter vedere i processi attivi sul vostro computer esiste il comando ps se invece si scrive ps -a il computer darà la lista dei processi attivi per il nome utente che lo ha lanciato, ovviamente per ogni processo attivo viene anche visualizzato il numero di PID.
Un ulteriore strumento utilissimo per la gestione dei processi sui device è il comando fuser, può succedere infatti che un device (cdrom, HD, SCheda Audio, ecc...) per qualche motivo strano o per qualche bug rimangano bloccato, in questi rari casi è utile riccorrere al comando:
[zicola@localhost zicola]$ fuser -a /dev/dispositivo /dev/disposito: 2338
dove /dev/dispositovo sarà il device, come ad esempio il cdrom o disco rigido(/dev/hdX), il dispositivo audio (dsp) e così via, in questo modo tramide il comando kill possiamo sbloccare il dispositivo e riprenderne il controllo.
GESTIONE DEI COMANDI LINUX
Sotto linux gli output dei vari comandi possono essere riutilizzati automaticamente da altri comandi e addirittura salvati in file per poi essere riutilizzati. Per far si che output sia scritto all'interno di un file bisogna utilizzare l'opzione “>” digitando:
pwd > prova
otterremo all'interno della directory in cui eravamo un file di nome prova con scritto il percorso della directory, se invece non vogliamo correre il rischio che un file venga sovrascritto digiteremo >> al posto >in questo modo se il file è esistente il contenuto viene semplicemente aggiunto; per poter visualizzare il contenuto di un file basta digitare il comando more nel mio caso
more prova
Gli output dei comandi possono essere riutilizzati da altri comandi, questo è possibile utilizzando il segno “|” chiamato pipe, basta digitare piu comandi separati da pipe per far si che uno utilizzi i dati dell'altro, da non confondere con “;” utilizzato semplicemente per digitare piu comandi sulla stessa riga.
Una opzione importante del comando ls e -d, che abinata all'utilizzo di “*” consente di fare ricerche all'interno di directory, ad esempio con:
zicola@localhost zicola]$ ls -d /home/zicola/m* /home/zicola/mario.jpg /home/zicola/menu
n questo modo il computer mi farà vedere tutti i file che iniziano per m nella directory /home/zicola/; se invece l'asterisco lo metto all'inizio (...ola/*m) il computer mi farà vedere tutti i file che finiscono per m; nel caso inserissimo il carattere “?” al posto di * il computer lo interpreterebbe come un singolo carattere e non una serie di caratteri.
Un particolare riferimento lo meritano i comandi sleep e cp, il primo seguito da un numero fa dormire il computer per i il numero di secondi scritto, ad esempio con
ls ; sleep 20 ; mozilla
il sistema fa vedere il contenuto della cartella, aspetta per 20 secondi poi lancia l'applicazione mozilla, il comando cp invece consente di copiare un file da una directory all'altra infatti con
cp prova /home/zicola/Documnets
copierò il file prova creato in precedenza nella directory Documnets.
Da conoscere anche il comando su, che non sta per in alto ma per super utente, precedentemente accennato da maverick, digitando su [INVIO] il computer chiderà la password di root e se inserita correttamente diventerete root ossia il super utente, ma attenzione in questa modalità pagherete cari i vostri errori, una volta finito con root senza chiudere la console potete digitare exit per tornare al vostro utente normale.
Per avere aiuto dal vostro sistema esiste il comando man che se seguita dal nome del comando vi dirà come si usa e tutte le opzioni, se invece non è seguito da niente vi darà tutti i manuali presenti sul pc.

