Commenti sull’Info Age

Diari sull’informatica e dintorni

La Guida Galattica alle Unix Shell: parte 1 — Perchè esistono le shell

Posted by orter su giugno 12, 2007

hacker495.jpg

Piccolo riassunto delle parti componenti questa guida:

Parte 1. Perchè esistono le shell.
Parte 2. I primi esperimenti con i comandi Unix.
Parte 3. Script Warm Up.

E adesso: la guida.

Visto che c’è chi ridacchia sugli Shell Writers, onore vuole che si renda la pariglia sul versante command line only.

Vi sentite veri/e uomini/donne, siete pronti ad andare dove nessuno è mai andato prima? Bene, prenotate una gita al vostro villaggio vacanze preferito, stampate la magnifica “Guida Galattica alle Unix Shell” e leggetela con gusto.

Come prima cosa viene da chiedersi: nell’era delle finestre vibranti perchè qualcuno scrive shell script? La risposta viene da un’osservazione attenta di quello che fanno alcune delle applicazioni finestrate più gettonate, per esempio aptude. Se clikkate sul tasto “Advanced” durante una installazione vi trovate di fronte a veloci linee che scrollano liente sulla vostra finestrina. Quelle linee sono “linee di comando”. Se voi copiaste quelle linee su di una console, riuscireste a scaricare i vostri programmi senza utilizzare le finestre (piroettanti o meno), degustando il piacere di essere anche voi degli script makers!

Le script utilizzano comandi che potete digitare sulla Linux console, quindi una guida, per quanto breve, non può esimersi dall’enumerare i comandi più utili. Ma prima…come si lancia una Linux Console? Da GNOME andate sul menù applicazioni > system > console. Su KDE menu Applicazioni>Accessories>Terminal.

La console KDE può essere settata per essere trasparente, avere vari colori, sfondi, ecc, ecc. Sbizzarritevi, io personalmente la uso così:

Comunque, ecco una guida ai comandi essenziali:

Comandi di Base -Ambiente UNIX

Indice

Introduzione all’uso
Gestione files, directories e dischi
Gestione dei diritti di accesso
Gestione dei processi
Ricerca e gestione dei file

Introduzione all’uso

Unix è un sistema basato su terminali grafici e testuali. Un ambiente Unix ne implementa normalmente 6.
Per navigare tra i terminali occore digitare CTRL+ALT+[Tasto Funzione]. L’accesso è permesso inserendo ID e password.
Esiste un’utente particolare che ha id fisso

root

che amministratore del sistema.
Unix è CASE SENSITIVE, i comandi sono in minuscolo.


Per avere informazioni su di un particolare comando:

man numerocapitolo nomecomando

dove nomecomando è il comando di cui volete spiegazioni e numerosezione è il capitolo che intendete leggere. Oppure:

whatis  nomecomando

apropos  nomecomando

info  nomecomando

Gestione files, directories e dischi

In che directory sono?

pwd

ritorna la directory corrente.


Lista files e directories:

ls -opz nomedirectory

restituisce la lista dei files contenuti nella directory corrente.
Opzioni:
-a mostra files e dir nascoste
-l mosta permessi, proprietari, data di creazione e nomi di file
-b mostra caratteri non stampabili con il loro codice ottale
-i mostra l’inode di partenza
-x mostra il risultato in riga e non in colonna


Cambio directory:

cd nomedirectory

cambia la directory puntando a nomedirectory. Se si vuole tornare alla dircetory che è radice dell’attuale digitare cd ..


Navigazione assistita:

pushd nomedirectory

mette un puntatore alla directory in uno stack

popd

si riposiziona alla directory in cima allo stack


Quanto spazio mi rimane sul disco?:

df

restituisce quanto spazio del disco è occupato e quanto è libero suddiviso per partizioni
Opzioni:
-a mostra anche le partizioni che hanno 0 blocchi
-H mostra i risultati in Kb o megabyte (means human readable, how fun!)
-T mostra il tipo di filesystem


Gestione dei diritti di accesso

Come funzionano?

Digitando:

ls -l

si vedono sull’estrema sinistra questi caratteri:

drwxrwxrwx

per ogni file, directory e link. Il primo carattere è ‘d’ per le directory e ‘l’ per i link. Seguono tre gruppi di caratteri.
Il primo gruppo indica i permessi garantiti al proprietario del file/directory/link. Il secondo gruppo è relativo al gruppo
cui il proprietario appartiene. Il terzo è relativo a tutti gli altri utenti. Il carattere r indica il permesso di
scrittura, il carattere w quello di scrittura ed infine x sta per esecuzione-modifica.


Chi può cambiare i permessi?

Il proprietario del file.


Si può cambiare la proprietà di un file?

Solo root dovrebbe poter cambiare il propietario di un file
Digitando:

chown user_nuovo_proprietario nomefile/nomedirectory

il proprietario del file o della directory viene cambiato. l’opzione -R forza l’istruzione a cambiare il proprietario
di tutti i file contenuti nella directory indicata.


Come cambio i permessi di accesso?

Digitando:

chmod opz u:g:a +:- r:w:x nomefile/nomedirectory

u usato per cambiare i permessi dell’owner, g per quelli del gruppo, a per tutti gli altri (non nel gruppo dell’uetente e diversi dall’utente).
Se si vogliono cambiare i permessi del gruppo e dell’utente bisogna usare il comando due volte.
L’opzione -R induce la variazione di accessi su tutti i file e sottodirectory di quella indicata. Una versione veloce del comando è questa:

chmod opz nnn nomefile/nomedirectory

Il comando in nnn usa valori decimali così gestiti: la prima cifra corrsiponde all’owner, la seconda al gruppo, la terza a tutti gli altri.
Le cifre sono calcolate usando le seguenti bitmap

100 lettura: valore 4

010 scrittura: valore 2

001 esecuzione: valore 1

Quindi 110 (lettura+scrittura) è 4+2=6, 111 (lettura+scrittura+esecuzione) è 4+2+1=7.

Per fare un esempio:

chmod -R 666 foodir

pone gli accessi di lettura scrittura a tutti per tutti i file e le sottodirectory della directory foodir
Mentre:

chmod -R 111 foodir

mette tutto in sola lettura

chmod -R 600 foodir

nasconde a tutti eccetto l’owner.


Come cambio la password?

passwd

e rispondere alle domande.


Gestione dei processi

Chi sta usando questa macchina?

who opz

ritorna la lista degli utenti he stanno usando il sistema. L’opzione -i mostra quando è avvenuto il logon dell’utente, -a informazioni
su tutti i terminali


Chi sono io (nel senso…che utente sto usando)?

whoami

Quali processi stanno girando in macchina?

ps -ely

ritorna la lista di tutti i processi attivi.

ps -elF

ritorna un albero dei processi

ps -aux

ritorna i processi e gli owner.

E’ interessante annotare il campo processid, con il quale si esegue il kill.


Ancora, quali processi stanno girando in macchina?

top

in linux è un ottimo sistema per tenere d’occhio facilmente quali programmi girano. Una volta lanciato
questo gestore di task rimane attivo in attesa di comandi. questa una lista di comandi:

q esce dal programma

> sposta la lista avanti

< sposta la lista indietro

h help

Z cambia i colori

B toglie i grossetti

u mostra solo i processi di un particolare user

f aggiunge o toglie una colonna nella vista (per Linux la scelta è guidata)

o cambia ordine delle colonne (per linux la scelta è guidata)

W salva la configurazione visuale

c mostra i comandi che stanno girando

i mostra le attività in idle
Nota: qualche terminale remoto potrebbe avere problemi di visualizzazione.
Si consiglia Putty .


Come lancio i processi in background?

Digitare

nomecomando &

per lanciare un programma in background.

bg numeroprocesso

per portare un comando in background (il numero processo lo da’ ps o top)


Come porto un processo in foreground?

Digitare

fg numeroprocesso

per portare un comando in foreground da background (il numero processo lo da’ ps o top)


Come comunico con i processi?

Digitare:

kill -HUP numeroprocesso

per riavviarlo. Il numeroprocesso lo da’ ps o top

kill -H numeroprocesso

per chiuderlo. Il numeroprocesso lo da’ ps o top


Cambiare la priorità di un processo

Le priorità del kernel GNU/Linux vanno da -20 a +20. La priporità più elevata è -20, solo il superuser può
settare priorità negative. La più basse è 20. 0 è la priorità di base. Digitare:

renice livello numeroprocesso

per cambiare le priorità. Il livello è un numerico da -20 a +20. Il numeroprocesso fornito da ps. Un formato alternativo è:

kill livello -p processo -g gruppo -u user

per indicare i processi di un gruppo di utenti o un utente.
Esempio:

vi &ps -e | grep vi

una volta letto il PID (=numeroprocesso) eseguire

renice +1 PID

Lanciare un processo ad una certa priorità

Digitare:

nice -n priorità comando opzionicomando [&]

per lanciare il comando nella priorità indicata in priorità .


Ricerca e gestione dei file

Cercare i file

Digitare:

find -name nomefile/nomedirecory

Cercare una stringa dentro ad un file

Digitare:

grep stringa nomefile

Concatenare più file

Digitare:

cat nomefile1 nomefile2 nomefile3 .... nomedistinazione

Visualizzare la coda di un file

Digitare:

tail -n numerorighe nomefile

per vedere le ultime numerorighe del file. Se si usa:

tail nomefile

si vedono le ultime 10 righe


Visualizzare la testa di un file

Digitare:

head -n numerorighe nomefile

per vedere le prima numerorighe del file. Se si usa:

head nomefile

si vedono le ultime 10 righe


Visualizzare un file

Digitare:

less nomefile

oppure:

more nomefile

si vedono le ultime 10 righe


Differenze tra file

Digitare:

diff nomefile1 nomefile2 > filedidifferenze

per avere un file che mostra le differenze tra file. Questo file di differenze si può anche
utilizzare per allineare due file:

patch nomefiledestinazione filedidifferenze

il file nomefiledestinazione viene aggiornato con le differenze.
Per una trattazione più esaustiva ‘read the fine manual’


Contare le righe di un file

Digitare:

wc nomefile1

Come cambio dei caratteri di un file con altri?

Per la variazione massiva di caratteri di un file

tr stacaratteridavariare listacaratteridainserire

per esempio. tr usa come input lo standard input e come output lo standard
output. Quindi per esempio

less prova.txt | tr '.' [:space:] > provaout.txt

Per cancellare un carattere:

less prova.txt | tr -d '.' [:space:] > provaout.txt

Una guida esaustiva e in italiano sulle Unix Scripr la si trova nel famoso (per chi sa cos’è una BBS) www.pluto.it. Non leggetela se siete Lamers (ovvero persone che scrivono sui Blog come esperti quando ancora devono imparare qualcosina, è il contrario di Hackers), siamo di fronte a guida con un manutentore, sicura e vecchio stile, niente blog e niente wiki!

Alla rpossima puntata!

18 Risposte to “La Guida Galattica alle Unix Shell: parte 1 — Perchè esistono le shell”

  1. emiseeAltesty said

    ji [url=http://www.yourrunning.com/user/buy_aciphex ] aciphex generic[/url] gvfcdx, [url=http://www.yourrunning.com/user/buy_acomplia ] buy acomplia[/url] 261kjhj ku624, [url=http://www.yourrunning.com/user/buy_allegra_online ] allegra d[/url] mk8vgvg , [url=http://www.yourrunning.com/user/buy_allopurinol ] allopurinol[/url] 2rddTR$# , [url=http://www.yourrunning.com/user/buy_avapro ] avapro[/url] jjhgyu5, [url=http://www.yourrunning.com/user/buy_adalat ] adalat[/url] 55 , [url=http://www.yourrunning.com/user/buy_amoxil ] amoxil 500mg[/url] 098776 , [url=http://www.yourrunning.com/user/buy_amoxicillin ] amoxicillin dosage[/url] wsxsw , [url=http://www.yourrunning.com/user/buy_albuterol ] albuterol inhaler[/url] gfdfxrtr , [url=http://www.yourrunning.com/user/buy_avandia ] avandia recall[/url] mn409ik, [url=http://www.yourrunning.com/user/buy_asacol ] asacol[/url] gy , [url=http://www.yourrunning.com/user/buy_avodart ] avodart[/url]

  2. Ciao!

    La tua guida Unix è utilissima per chi è alle prime esperienze. E te ne sono grato. Avrei però da chiederti un favore. Io ho istallato la cartella compattata di Firefox e dopo sono riuscito ad aprirla con il mouse e ha creare una cartella normale oops…volevo dire directory. Ora ci sono dentro (usando il terminale) ma ho il problema di lanciare il programma. Non trovo nessun file.exe e non ci sono indicazioni sufficenti nel README.txt (anzi non ce ne sono affatto). Potresti darmi per favore un consiglio o una mano?
    Grazie mille

    Ps: sto usando XUBUNTU (ma non credo serva a qualcosa)
    Ciao!

  3. luca said

    grazie per la guida ma …i comandi non potresti farli un pò più grandi. Non so gli altri ma io li vedo quasi illeggibili

  4. dannomaxx said

    Decente la mini guida sui commands e gli esempi…pero non cerchiamo di passare per Hacker con una guida hobbistica come questa 🙂

    CIT. Lamers (ovvero persone che scrivono sui Blog come esperti quando ancora devono imparare qualcosina, è il contrario di Hackers),

    Ci sono i lamer ok, ma di hacker.. 😉

  5. Hey! Someone in my Myspace group shared this website with us so I came to take a look.
    I’m definitely enjoying the information. I’m bookmarking and will be tweeting
    this to my followers! Wonderful blog and terrific design and style.

  6. Very good information. Lucky me I came across your website by accident (stumbleupon).
    I’ve bookmarked it for later!

  7. This website was… how do you say it? Relevant!! Finally I
    have found something which helped me. Cheers!

  8. Your style is unique compared to other people
    I’ve read stuff from. Thanks for posting when you have the opportunity, Guess I’ll just bookmark this web site.

  9. hcg diets said

    Greetings! I know this is kinda off topic but I was wondering which blog platform
    are you using for this site? I’m getting tired of WordPress because I’ve
    had problems with hackers and I’m looking at alternatives for another platform. I would be great if you could point me in the direction of a good platform.

  10. Hey there! I could have sworn I’ve been to this site before but after checking through some of the post I realized it’s new to me.
    Anyhow, I’m definitely happy I found it and I’ll be bookmarking and checking back frequently!

  11. Highly descriptive article, I liked that bit.
    Will there be a part 2?

  12. Good way of explaining, and good piece of writing to get information
    on the topic of my presentation focus, which i am going to present in institution of higher education.

  13. Heya! I know this is somewhat off-topic however I needed to
    ask. Does operating a well-established website like yours require
    a large amount of work? I’m completely new to writing a blog but I do write in my journal on a daily basis. I’d
    like to start a blog so I will be able to share my own experience and
    views online. Please let me know if you have any
    ideas or tips for brand new aspiring bloggers. Thankyou!

  14. I like the valuable information you provide in your articles.
    I’ll bookmark your weblog and check again here regularly. I’m
    quite sure I’ll learn many new stuff right here! Good luck for the next!

  15. If you desire to improve your knowledge only keep visiting this
    web page and be updated with the hottest information posted here.

  16. It’s hard to come by knowledgeable people in this particular topic, but you seem like you know what you’re talking about!

    Thanks

  17. Inspiring quest there. What happened after? Take care!

  18. Hello! I just wish to give you a huge thumbs up for your excellent info you have here on this post.
    I’ll be returning to your web site for more soon.

Lascia un commento