La Guida Galattica alle Unix Shell: parte 1 — Perchè esistono le shell
Posted by orter su giugno 12, 2007
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!
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]
luca rivara said
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!
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
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.. 😉
Kashika Vohra said
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.
http://yahoodiary.com said
Very good information. Lucky me I came across your website by accident (stumbleupon).
I’ve bookmarked it for later!
mylinkvault.com said
This website was… how do you say it? Relevant!! Finally I
have found something which helped me. Cheers!
hcg dieters said
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.
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.
wedding photographer in los angeles said
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!
www.aberdeenweddingphotographers.net said
Highly descriptive article, I liked that bit.
Will there be a part 2?
optometristwinnipeg.ca said
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.
edmonton auto Insurance brokers said
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!
buy pinterest followers said
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!
buy pinterest followers said
If you desire to improve your knowledge only keep visiting this
web page and be updated with the hottest information posted here.
buy pinterest followers said
It’s hard to come by knowledgeable people in this particular topic, but you seem like you know what you’re talking about!
Thanks
fat burners said
Inspiring quest there. What happened after? Take care!
term insurance said
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.