Shells and Commands Emanuele Leonardi. Le shell Una shell è un programma di interfaccia tra lo utente e il sistema operativo. Linterazione è mediata da.

Slides:



Advertisements
Presentazioni simili
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Advertisements

Introduzione a Linux Dr. Giovanni Stracquadnio
Shell Scripting. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure contenuti.
Installazione e Configurazione di un Sistema di Calcolo Distribuito operante sotto Linux INFN – Laboratori Nazionali Frascati Stage estivi 2006 Matteo.
Giuseppe Fabio Fortugno.
Interfaccia del file system
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dellInformazione Politecnico di Milano © Carlo Brandolese Il Sistema Operativo UNIX.
Corso Linux Base 2. Uso del Sistema. © Corso Linux Base - Uso del Sistema Logging In (1) Una volta partito il sistema lutente esegue la procedura.
Guida Linux Molto rapida…. Due parole sullambiente grafico Potete usare: KDE o GNOME Si sceglie prima di mettere la password. Questione di gusti…
Laboratorio 1: Usare Linux. File system Il file system è la componente del sistema operativo che si occupa della gestione di file e cartelle Con laccount.
Andrea Colombari, Carlo Drioli e Barbara Oliboni
Laboratorio di Informatica di Base Laboratorio di Informatica di Base Laurea in Informatica Multimediale Docente: Andrea Fusiello profs.sci.univr.it/~fusiello.
Uso di Linux.
La shell di Linux Linux ha una varietà di shell differenti:
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME … Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
1 File System ed Input/Output UNIX Implementazione del File System Caratteristiche del File System Unix/Linux System Call relative al File System Linput/output.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
Sistemi Operativi - Shell 1 Il sistema operativo LINUX La shell Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX/LINUX Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Informazioni utili Per avere una distribuzione linux sul proprio pc: 1.
Dip. Automatica e Informatica
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX/LINUX Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Gestione dei processi comando1 comando2 Last-login: … > … > comando1 output comando1 > comando2 output comando2 Esecuzione.
Analisi di Immagini e Dati Biologici
Corso di PHP.
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
Sistemi Operativi – La shell Salvatore Campagna Politecnico di Torino Dipartimento di Automatica.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
Corso Linux Base 2. Uso del Sistema. © Corso Linux Base - Uso del Sistema Logging In (1) Una volta partito il sistema lutente esegue la procedura.
Shell dei comandi – ! Bash &/o Tcsh !
Il Sistema Operativo: il File System
Internet Explorer I preferiti Stampa di pagine web Salvataggio di pagine web Copia di elementi di pagine web in altri applicativi.
Amministrazione della rete: web server Apache
1 Amministrazione del sistema Creazione degli account al sistema. Comandi per la gestione degli utenti File per la gestione degli utenti, password shadow.
Programmazione della shell pt.2
Prompt dei comandi – Windows XP In Windows XP si avvia con Start AccessoriSistema Prompt dei comandi … oppure con Start Esegui cmd.exe.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
MS-DOS è il sistema operativo, Come praticamente tutti i sistemi operativi per i computer del periodo, l'MS- DOS era un sistema operativo mono utente.
Ant Che cos’è Come si utilizza Funzionalità principali
Introduzione a Windows Lezione 2 Riccardo Sama' Copyright  Riccardo Sama'
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
SQL*PLUS Worksheet Permette di:
Il Sistema Operativo Il Sistema Operativo è costituito dall’insieme dei programmi necessari per far funzionare tutto l’hardware del calcolatore e per nascondere.
ROOT Tutorial.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Script di shell (bash).
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Unix (Linux-Mac OS) Alcuni comandi. cd change working directory cd [DIRECTORY] cd entra nella directory specificata. Se non è fornita alcuna directory.
1 PROGRAMMAZIONE IN SHELL The Unix Programming Environment Kernigham - Pike.
I FILE I File sono l’ unità base di informazione nell’interazione tra utente e sistema operativo I File sono l’ unità base di informazione nell’interazione.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Il sistema Linux: principi di progettazione
Basi di Unix: introduzione Kernel il fulcro del sistema. Comunica con l’hardware (processore, memoria, disco fisso) Shell interfaccia tra l’utente e il.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
1 SC per IPC Pipe. 2 Pipe : file speciali utilizzati per connettere due processi con un canale di comunicazione Se B cerca di leggere da una pipe vuota.
Corso di Laboratorio primo modulo Introduzione all'uso di un sistema operativo. Introduzione all'uso della shell (bash). Java – –Introduzione – –Tipi di.
Esempi di Sistemi Operativi: DOS Nel file system di DOS i path names hanno la seguente forma C:\TEMP\DirA\DirB\elab.pdf Si utilizzano due nomi speciali.
Il sistema operativo UNIX Presentazione realizzata da: Deri Claudio,Granata Luca,Brunetti Enrico.
Corso di Politiche Regionali Introduzione a STATA a cura del Dott. Augusto Cerqua 15/10/2012.
I L SO MS DOS … una breve guida…. C OS ’ È UN S ISTEMA OPERATIVO Un sistema operativo (SO) è un insieme di programmi che agisce come intermediario tra.
1 Amministrazione di base del sistema Cristina Moretto Corso Base LinuxTrent
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Transcript della presentazione:

Shells and Commands Emanuele Leonardi

Le shell Una shell è un programma di interfaccia tra lo utente e il sistema operativo. Linterazione è mediata da comandi che possono essere dati o in maniera interattiva o raggruppati in un file di testo, detto script, ed eseguiti come un singolo programma. Esistono molte shell che però si riconducono a 3 famiglie principali: Bourne shell: sh, bash C shell: csh, tcsh Korn shell: ksh, zsh Ogni famiglia è omogenea a livello di script (salvo poche eccezioni) ma cambiano le possibilità di editing dei comandi interattivi (richiamo dei comandi precedenti, completamento automatico dei nomi, etc.).

man man mostra una pagina di documentazione su un comando Unix. In VMS: help Uso: man comando Esempio: > man man E se non conosco comando ? > man -k keyword Esempio: voglio cambiare la mia password, che comando devo usare? > man -k password chpasswd (8) - update password file in batch passwd (1) - update a users password userpasswd (1) - a graphical tool to change password N.B. di solito in fondo alla pagina man esiste la sezione SEE ALSO con una lista di comandi correlati.

ls ls mostra la lista dei file in una directory. In VMS: dir Uso: ls [directory ] D efault: directory corrente. Esempio: > ls /usr/local/doc mtv.htmlmysqluushred xanim.doc Lopzione -l mostra le caratteristiche (tipo, dimensione, data di modifica, ecc.) dei file: > ls -l /usr/local/doc total 64 -rwxr-xr-x 1 root root Aug mtv.html drwxr-xr-x 4 root root 1024 Sep mysql drwxr-xr-x 2 root root 1024 Jul uushred -rw-r--r-- 1 root root Jan xanim.doc

cd / pwd cd cambia la directory di lavoro. In VMS: set def Uso: cd [directory] Default: user home directory. Directory particolari: ˜User home directory ( cd ˜ = cd ) /Root directory del nodo.Directory corrente..Directory madre della directory corrente Per sapere in che directory ci si trova: pwd > cd > pwd /mnt/sda6/home/leonardi

cat / more / less cat visualizza uno o più file di testo. In VMS: type Uso: cat file1 [file2 file3...] I file vengono mostrati sequenzialmente. Utile anche per fare il merging di più file. Esempio: > cat list1.dat list2.data > listona.dat more e less aggiungono a cat funzioni di paginazione (stile type /page in VMS ma con più possibilità) e ricerca. Tasti utili: Avanza di una riga Avanza di una pagina o Mostra i comandi disponibili

ln ln crea un link (puntatore) a un file pre- esistente. Può funzionare in modalità hard (se il file originale viene cancellato il link ne conserva una copia) o soft (se il file originale viene cancellato il link rimane ma dà un errore se si prova ad usarlo). Uso: ln [-s] file link Se si usa il parametro -s il link è soft, altrimenti è hard. Esempio: > ln -s /opt/lsf ˜/bin/lsf > ls -l ˜/bin lrwxr-xr-x 1 leonardi ec 28 lsf -> /opt/lsf

who / which / whereis who mostra gli user loggati sulla macchina. In VMS: show user Esempio: > who root ttyp1 Nov 1 17:39 (:0.0) leonardi ttyp6 Nov 1 17:53 (echosl) which mostra dove si trova un comando. Esempio: > which gnuchess /usr/bin/gnuchess whereis mostra anche la posizione del file man corrispondente. Esempio: > whereis ls ls: /bin/ls /usr/man/man1/ls.1

uname uname mostra le caratteristiche del computer che si sta usando. Opzioni: -n nome del nodo -m architettura -ssistema operativo (default) -rrelease -atutto Esempi: ender:leonardi> uname Linux ender:leonardi> uname -snrm Linux ender i586 ender:leonardi> uname -a Linux ender i586 uname è molto utile negli script!

ps / kill ps mostra i processi attivi sulla macchina. Di default: mostra solo i processi associati alla sessione corrente. Per vedere tutti i processi sulla macchina usare ps -ef (HP, DEC, Solaris) o ps aux (SunOS, Linux, DEC). > ps -ef UID PID PPID STIME TTY S TIME COMM root :07:25 ttyp5 S 0:00.32 tcsh … kill manda un segnale ad un processo. Default: manda al processo il segnale TERM(inate) invitandolo a terminare. > kill 7400 (invita 7400 a terminare) Se il processo 7400 è ancora presente provare con: > kill (uccidi 7400)

Variabili di Ambiente Le Variabili di Ambiente (Environment Variables) permettono di accedere ed eventualmente modificare alcuni parametri che regolano il comportamento di un processo Unix. Alcune variabili utili sono: TERMtipo di terminale usato (xterm,vt100,…) SHELLtipo di shell in uso (sh,csh,ksh,…) USERnome dellaccount in uso HOSTNAME nome dellhost su cui si sta lavorando DISPLAYschermo su cui vengono mandate le finestre grafiche PATHlista delle directory in cui cercare i comandi da eseguire MANPATH lista delle directory in cui cercare i file di documentazione usati da man

printenv / setenv printenv mostra una o più delle variabili di ambiente definite nel processo corrente. Di default mostra la lista completa delle variabili. > printenv TERM xterm Per cambiare il valore di una variabile di ambiente il comando cambia a seconda della shell usata. Per csh, tcsh: > setenv DISPLAY myxterm:0 Per sh, bash, ksh, zsh: > DISPLAY=myxterm:0 > export DISPLAY N.B. tutte le variabili di ambiente di un processo vengono ereditate dai processi che esso genera.

alias Un alias è un nuovo comando definito in funzione dei comandi di sistema. Viene creato con: > alias ll=ls -l sh, bash, ksh, zsh > alias ll ls -l csh, tcsh Una volta creato, un alias può essere utilizzato come qualsiasi altro comando di sistema. > ll /usr/local/doc total 64 -rwxr-xr-x 1 root root Aug mtv.html drwxr-xr-x 4 root root 1024 Sep mysql drwxr-xr-x 2 root root 1024 Jul uushred -rw-r--r-- 1 root root Jan xanim.doc Per eliminare un alias scomodo esiste il comando unalias. > unalias ll

Ridirezione dellI/O Di default linput e loutput di un comando sono collegati al terminale su cui gira la shell. > myMC.exe How many events ? events produced. End > Tutte le shell permettono però di ridirigere lI/O su un file usando > per loutput e < per linput. > echo 100 > events.dat > myMC.exe myMC.log > cat myMC.log How many events ? 100 events produced. End > LI/O può anche essere ridiretto su una pipe. > echo 100 | myMC.exe > myMC.log

Controllo dei Processi I comandi possono essere eseguiti in background, ossia senza tenere bloccata la shell mentre il comando viene eseguito. Per fare questo è sufficiente aggiungere & in fondo alla linea. Il comando jobs mostra una lista dei processi posti in background dalla shell corrente. Un job in background può essere riportato in foreground (ossia in modalità interattiva) con il comando fg. Un job interattivo può essere mandato in background sospendendolo e dando il comando bg (si veda lesempio).

Controllo dei processi: esempio > myMC.exe myMC.log & [1] 1834 > (grazie al & alla fine il comando viene eseguito in background. Il prompt ricompare immediatamente) > jobs [1] RunningmyMC.exe myMC.log > (il comando jobs mostra che il processo sta effettivamente girando in background) > fg 1 myMC.exe myMC.log (con fg il job viene riportato in foreground. Il prompt ricomparirà solo alla fine dellesecuzione del comando) ^Z Suspended > bg [1] myMC.exe myMC.log (il ^Z, i.e. CTRL-Z, sospende il job in foreground e mostra il prompt. Il comando bg mette in background il job sospeso)

Script di login Quando si apre una nuova sessione vengono eseguiti degli script standard che servono per configurare il proprio ambiente di lavoro. Questi script si trovano nella propria home directory e contengono di solito: Settaggi di variabili di ambiente Definizioni di alias Configurazione del comportamento della shell Al momento del login viene eseguito:.profilesh, ksh, bash.zprofilezsh.logincsh, tcsh Quando parte una shell (anche non di login):.bashrcbash.zshrczsh.cshrccsh (e tcsh se non esiste.tcshrc).tcshrctcsh N.B. al login viene prima eseguito il file rc e poi quello di login. P.es. prima.cshrc e poi.login

Esempio:.login # Esempio di file.login # Le righe che iniziano con # sono commenti # Configura le variabili di ambiente setenv PATH.:/bin:/usr/bin:/cern/bin setenv MANPATH /usr/man:/usr/local/man setenv EDITOR emacs # Scegli la stampante da usare in funzione # della macchina su cui ci troviamo switch (uname -n) case hpl3rom1: setenv PRINTER lwl3ps breaksw case trantor: setenv PRINTER babarlj breaksw default: setenv PRINTER siclas breaksw endsw

Esempio:.cshrc # Esempio di file.cshrc # Configura il comportamento della shell set history=20 set savehist=20 set prompt=Emanuele> # Definisci gli alias utili (e nostalgici! ;-) alias dir ls -Al alias up cd..; pwd alias down cd \!*; pwd # Esegui altri script di inizializzazione switch (uname -n) case hpl3rom1: source /l3/script/l3init.csh breaksw case trantor: source \ /afs/infn.it/roma1/project/babar/babar.sh breaksw endsw

Problema: rinominare tutti gli eseguibili della directory corrente. Soluzione: uso del costrutto di iterazione. #!/bin/tcsh # this is a comment foreach i (*) if( -x $i ) then echo "moving $i" mv $i $i{.old} endif end #!/bin/sh # this too for i in *; do if [ -x $i ]; then echo "moving $i" mv $i ${i}.old fi done nelle shell moderne alcuni comandi sono built-in command ( if,foreach,echo ), altri sono eseguibili esterni ( mv ) i built-in command e le sintassi sono molto simili tra le varie shell si possono usare potenti costrutti di iterazione attenzione alla differenza tra ' e " riguardo all'espansione delle variabili di shell Shell Script: un Esempio (1)

Problema: esecuzione condizionata multipla. Soluzione: uso del costrutto switch/case. #!/bin/csh... switch ("$1") case start: echo "let's do it." breaksw case stop: echo stop it!" breaksw default: echo "bad syntax!!" breaksw endsw... #!/bin/sh... case "$1" in start) echo "let's do it. ;; stop) echo stop it!" ;; *) echo "bad syntax!!" esac... Shell Script: un Esempio (2) Esempio: > myscript start lets do it. > myscript stop stop it! > myscript pippo bad syntax!!

find permette la cercare file in un file system in base alle loro proprietà (nome, tipo, attributi, ownership,...). Cerca nella directory corrente (.) e in tutte le sue sottodirectory un file di nome simula.dat. > find. -name simula.dat -print./montecarlo/data/simula.dat./olddata/simula.dat Cerca nellalbero di directory /usr tutti i file con estensione.dat. > find /usr -name \*.dat -print /usr/games/doom.dat /usr/lib/netscape/mime.dat Il backslash ( \ ) è necessarioper impedire che la shell interpreti i caratteri spaciali (in questo caso * ). N.B. Il flag -print in alcuni sistemi è il default ma in altri è necessario. find

Problema: rinominare tutti gli eseguibili di un albero di directory. Soluzione: uso del comando find Mettendo insieme i precedenti esempi: #!/bin/sh BINLIST=`find $1 -perm and ! -type d` for i in ${BINLIST}; do mv $i $i.old done dove la condizione di ricerca e` l'AND ( -and ) tra la presenza dell' execute bit ( -perm ) e dal fatto di non essere una directory (! -type d ). In alternativa si può usare il flag -exec che permette a find di eseguire un comando sui file trovati: > cd somewhere > find. -perm and ! -type d -exec mv {} "{}".old \; il {} sarà sostituito con ciascuno dei file individuati da find. il \; identifica la fine del comando introdotto da -exec. attenzione alle che proteggono {} nel nome composto Shell Script: un Esempio (3)