Linux inside

 Se il mio dottore mi dicesse che mi rimangono solo sei minuti da vivere,
 non ci rimuginerei sopra.  Batterei a macchina un po' piu' veloce.
              -- Isaac Asimov

La shell (o terminale), in informatica, è la parte di un sistema operativo che permette agli utenti di interagire con il sistema stesso, impartendo comandi e richiedendo l'avvio di altri programmi. Insieme al kernel costituisce una delle componenti principali di un sistema operativo. Il suo nome (dall'inglese shell, guscio) deriva dal fatto che questa componente viene considerata l'involucro, la parte visibile del sistema ed è dunque definibile come l'interfaccia utente o il programma software che la rende possibile.
more info...

Il Terminale

Il terminale è lo strumento fondamentale nel percorso che stiamo facendo. Conoscere linux significa anche parlare il suo linguaggio e spesso capita di inciampare in problemi che richiedono qualche comando per sistemare le cose.

Impariamo quindi qualcosa di utile sul terminale e su quello che possiamo fare per sapere lo stato del sistema, ma anche per configurarlo.

Dove si trova ?

Su ogni distribuzione Linux e Unix, si cerca come un programma qualsiasi ed è integrata nel cuore sistema.
Su Ubuntu si trova nel menu cercando :
Applicazioni > Accessori > Terminale

Di solito si chiama terminale ma ne esistono tantissime versioni, ad esempio:

  • gnome-terminal (su ubuntu)
  • xfce4-terminal (su xfce)
  • konsole (su kde)
  • xterm (minimale ostica ed efficace: su qualsiasi sistema)

cosa puo' fare ?

Puo' fare tutto e niente.
Detta così sembra immenso e inutile, ma in realtà saper usare il terminale permette all'utente di imparare davvero ad usare il proprio pc.
Il segreto sta nel non avere fretta di imparare tutto, ma di procedere lentamente e leggere il manuale o cercare online ogni volta che non si capisce qualcosa.
Per fare un esempio, possiamo ad esempio aprire un terminale e digitare:

  firefox www.google.com

e premere invio. Se tutto va come deve vedrete che il vostro terminale ha lanciato firefox oppure ha aperto una nuova tab se firefox era già aperto.
Ecco cosa fa il terminale: parla con il vostro sistema e lo comandate voi.

chi lo usa ?

Lo usano tutti ! Se usi linux alla fine vedrai che il mondo è piu' semplice se impari ad usare il terminale, fai le cose piu' in fretta e spesso impari qualcosa di nuovo.

Man mano che lo usi i comandi diventano sempre piu' complessi e così ti rendi conto che ogni comando nuovo che impari ad usare è come un nuovo vocabolo.
Praticamente scopri che stai imparando una nuova linuga.

ok, ma come si usa ?

Si usa scrivendoci comandi dentro, ogni comando fa qualcosa.
Ad esempio ci sono comandi che lanciano altri comandi (come firefox), altri che creano e modificano file, altri ancora che permettono di spegnere il pc. Il limite è solo la fantasia, ecco perchè ci sono così tanti comandi per linux, perchè ognuno puo' crearsi quello che vuole.

e perchè si usa ?

Molti si chiedono, ma perchè devo usare il terminale se ho già l'interfaccia grafica.
Beh, per due motivi principalmente

Il primo è che usando il terminale impari ad usare davvero il pc e ne diventi padrone, fai piu' in fretta le cose e fai esattamente quello che vuoi. Inoltre quando lanci un comando vedi tutto quello che fa e non c'è una clessidra o una barra che si riempie senza sapere che cosa sta facendo sotto..

Il secondo motivo è per sicurezza. Il terminale è disponibile anche quando non c'è grafica (se vuoi provare su linux fai Control+Alt+F1 e Control+Alt+F7 per tornare).
La modalita non grafica è molto utile se succede qualche problema con il tuo pc (ad esempio un aggiornamento finito male). Puoi fare login e sistemare le cose, riavviare il pc e vedere se hai sistemato tutto.

Poi ci sono tanti altri motivi per usare il terminale, ad esempio se diventi bravo lo potrai fare per lavoro. Magari ti pare impossibile, ma io uso il terminale tutti i giorni :)

trucchetti

andando avanti ad usare il terminale scoprirai che esistono dei modi utili per non digitare migliaia di volte quello che hai scritto oppure per completare quello che stai scrivendo, ti butto qui un paio di suggerimenti che tutti usano quando scrivono sul terminale (bash) di default sui sistemi linux.

  1. usa la freccia su per cercare gli ultimi comandi eseguiti
  2. premi il tasto TAB una volta per completare un comando lungo (se c'è solo quello bash capisce da sola)
  3. premi due volte il TAB se vuoi una lista di tutti i comandi
  4. premi Control+R e scrivi il comando che stai cercando, bash lo cercherà negli ultimi comandi che hai digitato
  5. premi Control+a per andare all'inizio del comando
  6. premi Control+e per andare alla fine del comando
  7. premi Control+w per cancellare l'ultima parola

Comandi Base

Vediamo adesso un po' di comandi di base per imparare a non avere paura e per conoscere un po' il nostro sistema Linux
Vedrete che i comandi non sono come sul DOS di windows (che sono pochi, lunghi e fatti male) ma spesso sono corti e molto semplici da capire.

man

Serve a sapere come funziona un comando cosa fa e come si lancia.
Permette di vedere quali opzioni e quali paramentri usare con il comando.
Per leggere il manuale di un comando basta usare digitare:

  man <comando>

ad esempio per sapere il manuale del comando ls:

  man ls

ls

Mostra una lista di file e cartelle.
Se lanciato senza argomenti (senza nessun parametro dopo) si possono vedere i file che ci sono nella directory corrente.

Ad esempio se apro un terminale e lancio il comando ls vedo:

  $ ls 
  Desktop  Docs       Mail   Pics  
  dev      Downloads  Music  Pub   

Adesso proviamo a mettere un parametro.
Se lancio il comando con il parametro -l vedrò una lista piu' dettagliata con tanto di dimensione file e permessi:

  $ ls -l  
  total 116
  drwxr-xr-x   3 samba samba  4096 mar 14 12:55 Desktop
  drwxrwxr-x   7 samba samba  4096 apr  5 11:50 dev
  drwxr-xr-x   7 samba samba  4096 feb  8 19:44 Docs
  drwxr-xr-x   5 samba samba  4096 apr 15 16:01 Downloads
  drwxrwxr-x  12 samba samba  4096 apr 16 13:25 Mail
  drwxrwxr-x 336 samba audio  69632 apr 15 16:00 Music
  drwxr-xr-x   6 samba samba  4096 apr 11 18:56 Pics
  drwxr-xr-x   2 samba samba  4096 dic  4 15:15 Pub

Ecco quindi a cosa servono i parametri, ci permettono di fare la stessa cosa ma in un altro modo. Ad esempio in questo caso possiamo vedere nel dettaglio i file e le directory, visualizzando anche permessi e dimensione dei files.

Approfondisci:ls

echo

echo (eco in italiano) è un comando che ripete quello che si dice. per esempio se noi digitiamo:

  echo ciao mondo
  ciao mondo

Vediamo che il terminale stampa quelo che abbiamo scritto.

Ma ci sono anche altri modi per usare echo, ad esempio per vedere il contenuto di alcune variabili.

  echo $USERNAME
  samba

Ecco che vediamo che il contenuto della variabile USERNAME è “samba” Questo risultato non è scontato, perchè le variabili, come dice la parola stessa, possono cambiare e quindi se provate voi a dare questo comando otterrete un altro risultato.

La base della programmazione si basa su questo e su altri piccoli concetti. Basti pensare adesso che il comando echo per quanto semplice e modesto è un ottimo comando che si puo' aggiungere alla scorta dei comendi base.

Approfondisci:echo

cat

Il comando cat mostra il contenuto di un file ed esce. cat puo' essere utile per file di testo che non dobbiamo modificare o per file di log, dove dobbiamo da leggere tanto e basta.

Ad esempio se vogliamo leggere il file di log : /var/log/messages , basta dare il comando

  cat /var/log/messages
   

se il file esiste leggerete un sacco di cose che succedono sul vostro PC!

top

Un altro comando utile da aggiungere alla scorta dei comandi di emergenza è top

Top funziona un po' come il task manager di windows, fa vedere i programmi in esecuzione e si aggiorna automaticamente ogni 3 secondi. Se lanciamo TOP dal nostro terminale vediamo qualcosa come questo:

Il risultato è enorme, ci sono tante informazioni.. ma non dobbiamo leggerle per forza tutte.

basti sapere che il primo processo è di solito quello che consuma piu' risorse di sistema (il piu' pesante e fastidioso), e gli altri a seguire.

Le prime 4 righe ci informano delle stato del sistema, la RAM, la CPU e lo stato della memoria di sistema.

Se vogliamo uscire da top basta premere il tasto q oppure Control+c

Alcuni trucchi/tasti da usare con top:

  1. h : mostra l'help e dice come usare top
  2. 1 : mostra quante CPU sono attive sul nostro sistema
  3. z : colora i processi mostrando quelli piu' attivi
  4. P : mostra in alto i processi che consumano più CPU
  5. M : mostra in alto i processi che consumano più RAM
  6. c : mostra il percorso completo del comando in esecuzione
  7. d : imposta ogni quanto aggiornare top (default: 3 secondi)
  8. k : kill - termina un programma (richiede il PID )

e molti altri… Approfontisci:top

ps

Il comando ps permette di vedere i processi in corso.

A differenza di top, ps non effettua il check ogni tot secondi, ma gira una volta sola.

ps ha diverse opzioni a seconda di che cosa si vuole fare. Se facciamo girare ps senza parametri otteniamo un piccolo output:

  ps 
  
  PID TTY          TIME CMD
  8528 pts/10   00:00:00 bash
  8585 pts/10   00:00:00 ps

questo output ci dice che nel nostro terminale ci sono solo due processi in esecuzione bash e ps

La prima colonna identifica il PID, ovvero il numero che identifica il processo (Proces IDentifier) Il PID è particolarmente utile ad esempio se per caso dobbiamo terminare un processo sarà necessario sapere il suo ID.

Se vogliamo avare informazioni riguardo a tutto il sistema e i processi in esecuzione possiamo usare ps con qualche parametro:

  ps -e
  
  PID TTY          TIME CMD
  1 ?        00:00:01 init
  2 ?        00:00:00 kthreadd
  3 ?        00:00:12 ksoftirqd/0
  ....
  31315 ?        00:00:00 xterm
  31351 pts/6    00:00:00 bash

Piu' opzioni mettiamo e piu' possiamo personalizzare il nostro comando ps

Approfondisci:ps

alias

il comando alias è un simpatico comando che ci permette di dare un nuovo nome a comandi che già conosciamo. Alias non fa altro che ricordarsi che un certo nome è collegato ad un certo comando.

Se vogliamo sapere quali alias sono già configurati sul nostro pc, basta dare il comando senza parametri:

  alias 
  
  alias ls='ls --color=auto'
  alias la='ls -A'
  alias logall='tail -f /var/log/syslog /var/log/auth.log'
  

Se vogliamo configurare il nostro alias personale possiamo usare lo stesso comando che abbiamo trovato nell'output e modificarlo a nostro piacimento.

Ad esempio, supponiamo di voler creare un comando che si chiama ll.
Il nostro comando ll deve poter funzionare come il comando “ls” ma deve anche essere a colori ed avere l'opzione -l per essere dettagliato.

Ecco come dobbiamo fare:

  alias ll="ls --color=auto -l"

in questo modo è possibile configurare tutti gli alias che vogliamo.

C'è solo un problema, se chiudiamo il terminale tutti gli alias che abbiamo impostato non verranno salvati.

Per ovviare a questo problema dobbiamo usare un file segreto che il nostro terminale carica all'avvio. Questo comando si chiama .bashrc

~/.bashrc

Il file .bashrc è un file di configurazione ed èv nascosto (in unix tutti i file che iniziano con un punto sono nascosti). Questo file viene caricato ogni volta che il terminale (shell) parte lancia un programma che si chiama bash.

Bash è la nostra shell di default ed il suo file di configurazione è ~/.bashrc

Come funziona .bashrc ? Funziona che bash appena parte legge ogni riga di questo file ed esegue un comando per volta. Quindi se noi mettiamo al fondo del nostro file .bashrc un alias allora quel comando alias verrà eseguito ogni volta che apriamo un nuovo terminale.

Per aggiungere un nuovo alias al fondo del file, possiamo usare il comando echo in questo modo:

  echo "alias ll='ls --color=auto -l'" >> ~/.bashrc
  

Che cosa fa questo comando ? procediamo per ordine.

Il comando echo sappiamo che ripete quello che scriviamo dopo. Quello che abbiamo scritto dopo è un comando che abbiamo visto prima.

Poi ci sono dei caratteri strani » e poi abbiamo il nostro file ~/.bashrc

I due caratteri » non fanno altro che usare l'opzione append che esiste su unix. Questa funzione aggiunge al fondo del file quello che viene specificato prima, quindi in questo caso viene inserito al fondo del file il nostro comando

  alias ll='ls --color=auto -l'

Che è esattamente quello che volevamo.

Per finire una chicca: io uso il comando fortune -s ad oggni avvio del terminale. Questo comando mi permette di leggere ogni volta una frase diversa che mi mette di buon umore.

Per farlo basta installare il programma fortune con questo comando

  sudo apt-get install fortunes fortunes-it

e quindi aggiungere al fondo del nostro file .bashrc il comando “fortune -s” in questo modo :

 echo "fortune -s " >> ~/.bashrc

ora se provate ad aprire un nuovo terminale dovreste poter vedere una nuova frase all'apertura del vostro terminale. :)

Tabella Riassuntiva

Comando Cosa fa
man mostra il manuale del programma specificato
ls Lista file e cartelle dove specificato
echo Ripete quello che viene scritto dopo, mostra variabili
ps Stampa i processi in esecuzione, output grande/piccolo a seconda di quali parametri vengono dati
top Mostra ogni TOT secondi quali processi sono in esecuzione e permette di fare qualche azione (quasi come il talskmanager di windows)
alias Ci permette di dare un altro nome a qualsiasi comando
cat Mostra il contenuto di un file ed esce
ifconfig Mostra lo stato delle interfaccie di rete e permette di configurarle
ping Lancia un pacchetto di richiesta ad un device (specificato) e attende una risposta, se risponde allora sono online
dhclient Chiede a tutta la rete circostante se qualcuno gli puo' dare un indirizzo IP per poter navigare

LINK

TNX

2013-04-12 - corso Linux Inside(1)
2013-04-19 - corso Linux Inside(2)
samba

corsi/linux_inside.txt · Ultima modifica: 2013/04/21 10:15 da samba
Creative Commons License Driven by DokuWiki Valid XHTML 1.0