-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