-Shell dei comandi –
! Bash &/o Tcsh !
[email protected]
Shell BASH
bash (acronimo per bourne again shell): è una shell del progetto GNU usata nei
sistemi operativi Unix e specialmente in Linux. Si tratta di un interprete di
comandi che permette all'utente di comunicare col sistema operativo attraverso
una serie di funzioni predefinite, o di eseguire programmi.
In pratica bash può essere considerata come un processore di macro. Essa è
infatti in grado di eseguire i comandi che le vengono passati o di interpretare un
semplice linguaggio di programmazione che permette di combinare questi
comandi tra di loro per svolgere compiti più complessi. Qualora dovesse
presentarsi la necessità la shell mette a disposizione la possibilità di raccogliere
in file delle serie di comandi creando così script eseguibili contenenti variabili,
funzioni e controlli di flusso come nei più comuni linguaggi di programmazione.
Una delle altre maggiori funzionalità di bash è quella della redirezione dell'input e
dell'output grazie al quale è possibile eseguire più programmi in cascata
passando come input dell'uno l'output dell'altro.
Shell TCSH & CSH
Sono delle shell che svolgono lo stesso ruolo
della shell bash, ma parlano con la
macchina un linguaggio leggermente
diverso. Sono molto simili al linguaggio C ma
svolgono tuttavia le stesse cose. La scelta
della shell è legata a questioni di praticità o
no con un certo linguaggio macchina.
Cosa fa la shell?
Indipendetemente dalla shell che si usa, questa
traduce al computer quello che
volete fargli fare!
Processi sulla macchina

which bash (or shell name):
il direttorio dove si trova la shell.




who:
chi è collegato sulla vostra stessa macchina.
where command-name:
il percorso dove si trova l’eseguibile del programma.
ps ux:
vi ritorna i processi che l’utente sta lanciando.
ps aux:
i processi di tutti gli utenti.
process status
USER: proprietario del processo, tipicamente chi l’ha iniziato.
PID: un processo ha un unico ID. Questi vengono assegnati in
maniera sequenziali quando partono. Quando raggiungono circa il
valore di 30,000 i valori riiniziano da 0.
Process Status
0-5 sono processi di basso livello per il sistema operativo e di solito
non escono mai.
VSZ: total Virtual memory SiZe, in 1K blocks.
RSS: Real Set Size, l’attuale quantità di memoria fisica allocata da
questo processo.
TTY: Treminale associato con questo processo. Un ? Indica che il
processo non è connesso al terminale.
STAT: Codice di stato del
processo.
S - Sleeping,
R - Runnable (on run queue),
N - Low priority task,
Z – Zombie process.
Process Status? Why?
Perché volete sapere lo stato dei processi?
forse perché firefox si è bloccato.
forse perché avete mandato 1.000 processi in
background e non sapete come stopparli (kill).
forse perché il vostro computer sta rallentando e non
sapete cosa sta succedento.
Quando un processo è stoppato o è
zombie, … kill it?
Per killare un processo bisogna digitare sul
terminale kill PID.
Per forzare il kill si usa -9:
> kill -9 PID
Xkill
Se avete una finestra bloccata e non sapete
più come uscirne fuori, basta digitare sul
terminale > xkill
Andate sulla finestra che volete
ammazzare e clickate con il
mouse!
Concatenare un comando per cercare
un processo e ridirigere l’output


ps ux | grep firefox
ps ux | grep emacs
concatena più comandi dando al successivo l’output
del primo.

ps ux > logps.txt
dirige l’output di uscita di un comando nel file
logps.txt
cerca una stringa
Comandi







grep document prova.tex
nl prova.tex
wc prova.tex
du –h prova.tex
mv prova.tex relazione.tex
tar cvf latexdocument.tar latexdocument
tar xvf latexdocument.tar.gz latexdocument
Comandi







tar xvf latexdocument.tar
tar xvzf latexdocument.tar.gz
ls –l
emacs & (emacs prova.tex &)
emacs
Ctrl+z
bg
mi manda un processo in background!
Latex
Quando lanciate latex
NON MANDATELO IN BACKGROUND!
Visualizzare l’ultima volta che un
utente ha effettuato un accesso
last
Per scoprire quando un particolare utente ha
effettuato l’ultimo accesso al sistema,
aggiungete il suo nome utente come
argomento.
Ritornare a casa o all’ultima diretta
visitata
cd
Tornare alla directory “casa” dell’utente.
cd Torna all’ultima directory visitata.
Contare il numero di file presenti in un
direttorio.
ls –l | wc
Chi mi sa spiegare perché?
Trovare i file in un albero delle
directory in base al nome
Per visualizzare tutti i file sul sistema il cui nome è
‘top’ si digita:
> find / -name top
 Per visualizzare tutti i file sul sitema il cui nome è
‘top’ indipendentemente dai caratteri minuscoli o
maiuscoli digitate:
> find / -iname top
 Per visualizzare tutti i file sul sitema contenenti la
string top, domanda?

Trovare le differenze tra files
Per confrontare due files:
> diff file1.txt file2.txt
 Per analizzare due file a fianco sullo
schermo con le eventuali differenze indcate
tra le colonne:
> sdiff file1.txt file2.txt | less

Scrivere stringe sulla shell
Di default l’oupout di log di un programma
eseguito dalla shell è la shell stessa.
Se volete scrivere una stringa tale che vi
compaia su terminale basta digitare:
> echo leggi queto
Sono importanti nella fase in cui noi stiamo eseguendo
una serie di comandi di shell scritti in un file.
File compressi & Archivi





tar (z)cvf latex.tar(.gz) document (crea)
tar (z)xvf latex.tar(.gz) (estrae)
tar (z)tvf latex.tar(.gz) (visualizzare il contenuto)
gzip document (comprime un file)
gunzip document.tar (decomprime)
Esempi di script, .login, .bashrc,
.bashtcsh
ssh
Scarica

Shell dei comandi - Dipartimento di Fisica e Astronomia