La Shell continua. comando. Shell. per ogni comando da eseguire la shell crea una shell figlia dedicata all esecuzione del comando

Documenti analoghi
La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

Comandi principali di Linux (1)

E' un interprete di comandi: legge ciascuna linea di comando, la interpreta e la esegue

Lezione 3: Programmazione della Shell di Unix

Il sistema operativo UNIX/Linux. Le shell Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

SHELL: File e Filesystem

Lab. di Sistemi Operativi

Bash: history list (I)

Lezione 1: Introduzione alla Shell di Unix

Introduzione all'uso del sistema operativo Ubuntu

Codice Corso: UNX010. Durata: 3 giorni

Il terminale per tutti

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

Uso del terminale in ambiente UNIX

SHELL. La shell esegue il contenuto di uno o più file di inizializzazione poi inizia un ciclo durante il quale attende ed esegue i comandi dell utente

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

File System I parte. File System

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

01 Terminale e file system

GLUG Govonis. Corso Avanzato GNU / Linux. Lezione del Shell

Introduzione a Unix. Barbara Guidi. Corso Informatica I /2013. Università di Pisa. Introduzione al calcolatore Introduzione a Unix Esercitazione

Il sistema operativo LINUX La shell

Shell: csh e tcsh. Di shell non ne esiste una sola... Per il momento... Funzioni della shell. In cosa si differenziano?

File System. File system gerarchico. Proteggere la propria home directory ... / = Root nodi interni: directory foglie: directory vuote o file

File System e Interprete Comandi

Shell. Una shell di comandi ci consente, dunque, di eseguire tutte le operazioni di cui abbiamo bisogno!

Laboratorio di Informatica Generale I UD Prima esercitazione

GNU/Linux 101. intro to system administration. Manifatture KNOS 22 Gennaio This work is licensed under a

Se state utilizzando la shell bash, ovvero la shell di riferimento per questo manuale, il terminale visualizzerà il seguente output:

Laboratorio. Sistemi Operativi: Linux/Windows. Giovanni Da San Martino

Linux e la shell Bash

La Shell: esecuzione dei comandi

Esercitazione GNU/Linux n. 2

Shell BASH. Variabili Redirezione

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Shell di Linux e Comandi Utente

ORGANIZZAZIONE del FILE SYSTEM SISTEMA OPERATIVO UNIX FILE SYSTEM. FILE astrazione unificante del sistema operativo

Introduzione all uso dei laboratori aka Linux basics. October 23, 2013

Guida Linux. Molto rapida

Corso di Laboratorio di Sistemi Operativi

Linguistica Computazionale: esercitazioni

Mirko Mariotti. March 9, 2009

Usare Python in Linux

Senza Soluzioni. Può un altro utente non appartenente al gruppo di mgiorgio, eseguire gli stessi comandi?

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Laboratorio di Sistemi Operativi

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

14. Introduzione a Linux

L interfaccia command line di Ubuntu è il Terminale che usa un sistema command line detto bash.

Terza lezione: Directory e File system di Linux

Esecuzione di script

Corso di avvicinamento al Software Libero. Lunedi 23 Gennaio

Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.

SOMMARIO. Ambiente Linux. Come nasce UNIX. Cronologia di UNIX 1. Storia dei sistemi *NIX Caratteristiche di Linux

GLI SCRIPT DI SHELL. Shell

- comando sort: con chiavi di ordinamento -

Corso di Sistemi Operativi I/II. Introduzione a Linux. Il File System. Ruggero Donida Labati

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Esempio 1. Creare uno script (file comandi) che abbia la sintassi:

I comandi del DOS. Come si fornisce un comando al DOS

Il DOS diagramma di flusso. I comandi del DOS. I comandi: vista funzionale. Parametri. Opzioni. I comandi: sintassi

Info Architettura, JVM Installazione JDK (Windows, Linux) Hello world!

Linux. Linux. Paolo Zatelli. Dipartimento di Ingegneria Civile ed Ambientale Università di Trento. Paolo Zatelli Università di Trento 1 / 24

Introduzione ai sistemi UNIX/Linux. Introduzione ai sistemi UNIX/Linux

Interfaccia a Linea di Comando di Windows (Prompt dei comandi) Dott. Ing. Giuseppe Serano

Introduzione al calcolatore Introduzione a Unix Esercitazione. Introduzione a Unix. Programmazione 1 e Laboratorio a.a. 2013/2014. Introduzione a Unix

PROGRAMMAZIONE CONSUNTIVA Codice Mod. RQ 23.2 Pag 1/5. Sistemi e Reti (articolazione Telecomunicazione) Classe

14 - INTRODUZIONE AL SISTEMA OPERATIVO LINUX

Introduzione ai Sistemi Operativi. A cura di Massimo Scolaro Mob :

cambiare utente mediante il comando su verificare chi siete e su che dir state lavorando Chi siete e che dir? (Inserisci la risposta)

Introduzione ai sistemi UNIX/Linux

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

WebDisk. TeamPortal - WebDisk

Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica. Ing. Domenico De Guglielmo Vanessa Gardellin & Sara Lioba Volpi

Installazione Java Standard Edition (SDK)

Il sistema operativo UNIX/Linux. Soluzione di problemi mediante script Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Il software del PC. Il BIOS

Shell. Laboratorio di Programmazione. Una shell indica all utente la propria disponibilità ad accettare comandi visualizzando un messaggio (prompt)

Materiale di approfondimento sulla shell di Unix (Videolezioni 11 e 30)

Corso di Laboratorio di Sistemi Operativi

Laboratorio Multimediale Lezione n. 1

Corso ForTIC C2 LEZIONE n. 8. Cos'è la shell Le variabili d'ambiente L'uso della shell per la realizzazione di semplici script

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

fare hard link fra file system diversi e su directory.

Laboratorio di Internet I Il sistema operativo Linux

Controllo di flusso negli script: if-then-else

I Metacaratteri della Shell Unix

UNIX. UNIX: history. shell come interprete. Unix shell. The layers of a UNIX system.

I File Batch. Definizione di File Batch

Le Interfacce Grafiche

Laboratorio in C su Processi e POSIX IPC (Inter Process Communications) Dalla nona lezione di laboratorio in avanti

Il software di sistema

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica

Introduzione alla. Alessandra Giordani Lunedì 27 febbraio

Classpath e Esercizi su RMI

Alcuni concetti base

Corso GNU/Linux 3. rev.2

Shell scripting. Turing completi approccio procedurale non tipati (l'unico tipo disponibile è la stringa) interpretati

Corso Linux ARCES. Lezione 3: Lavorare con la Shell

Comandi Linux. e altro su Linux ;)

Transcript:

La Shell continua Shell Unix - Linux comandi ogni comando richiede al nucleo l esecuzione di una particolare azione i comandi esistono nel file system come files binari, generalmente eseguibili da tutti gli utenti (/bin) possibilità di realizzare nuovi comandi: programmazione in shell comando Shell Shell (esecuzione comando) per ogni comando da eseguire la shell crea una shell figlia dedicata all esecuzione del comando 1

Shell Unix - Linux I/O comando Standard Input tastiera comando Standard Output Standard Error video Navigazione nelle directory comandi principali Linux - Unix consentono di navigare la gerarchia di directory costituita dal filesystem. Il file system è organizzato come un albero rovesciato. / radice (root) ramo etc home bin dev nodo users web bash README foglie 2

Navigazione nelle directory comandi principali all atto del login, l utente può cominciare a operare all interno di uno specifico direttorio (la sua home). In seguito è possibile cambiare direttorio. È possibile visualizzare il percorso completo attraverso il comando pwd (print working directory) Essendo i file organizzati in gerarchie di direttori, il sistema operativo mette a disposizione dei comandi per muoversi all interno di essi Navigazione nelle directory nomi relativi e assoluti ogni utente può specificare un file attraverso: - nome relativo: è riferito alla posizione dell utente nel file system (direttorio corrente) - nome assoluto: è riferito alla radice della gerarchia ( / ) nomi particolari. è il direttorio corrente (visualizzato da pwd).. è il direttorio padre 3

Navigazione nelle directory comandi principali Nome assoluto: /home/web/readme Nome relativo:../web/readme / radice (root) ramo etc home bin dev nodo dir corrente users web bash README foglie Comandi per la gestione del FS cd, rm, cp, mv, mkdir, rmdir Unix consente di navigare la gerarchia di direttori costituita dal file system. Abbiamo già visto il comando pwd, che consente di visualizzare il direttorio in cui ci si trova. È possibile spostarsi da un direttorio a un altro attraverso il comando cd Es: cd.. 4

cd cd modifica la dir corrente. Ad esempio: $pwd /home/users $cd.. / radice (root) $pwd /home/ etc home bin dev $pwd /home/users $cd../.. $pwd / users web bash README sintassi cd [nuova_dir]. nuova_dir può essere: Il comando cd il direttorio destinazione si può esprimere con il nome relativo oppure assoluto se l argomento non viene specificato, il nuovo direttorio è la home directory dell utente per spostarsi all interno di un determinato direttorio bisogna avere per tale direttorio i diritti di esecuzione 5

cd cd serve per muoversi attraverso le directory. Esempio: albero delle directory: /home/antonio/documenti/personali/fattura10.txt posizione corrente: /home/antonio per portarsi nella directory dove si trova il documento fattura 10, digitare il seguente comando: cd documenti/personali. Per portarsi nella propria directory home digitare il comando cd mentre per portarsi nel primo livello dell'albero delle directory digitare cd / mentre con cd.. si va alla directory superiore. creazione di un direttorio: mkdir <nomedir> eliminazione di un direttorio : rmdir <nomedir> modifica delle dir per creare un direttorio è necessario avere i diritti di scrittura nel direttorio all interno del quale lo si vuole inserire per eliminare un direttorio è necessario avere i diritti di scrittura di tale direttorio 6

$pwd /home/users $ mkdir nadja $ cd nadja $ pwd / radice (root) /home/users/nadja etc home bin dev nuova dir Esempio di mkdir users web bash nadja README Esplorazione ricorsiva - R specifica l esecuzione del comando ls a tutti i direttori di un sottoalbero: ls -R 7

file di testo lettura è necessario avere i diritti di lettura per visualizzare il contenuto di un file di testo cat [<nomefile>...]: visualizza l intero file more [<nomefile>...]: visualizza per videate altri comandi: grep <stringa> [<nomefile>...] (ricerca di una stringa in un file), wc [-lwc] [<nomefile>...] (conto di righe / parole / caratteri) Esempio lettura file di testo nadja@lab3-linux:~$ cat quasimodo ciascuno sta solo sul cuor della terra trafitto da un raggio di sole: ed è subito sera nadja@lab3-linux:~$ wc quasimodo 3 17 87 quasimodo nadja@lab3-linux:~$ grep sera quasimodo ed è subito sera 8

Cancellazione, copia e spostamento file è necessario avere i diritti di scrittura per modificare o eliminare il file rm <nomefile>: elimina il file cp <nomefile> <nomefile1> : copia file mv <nomefile>: sposta file e quindi rinomina Esempi nadja@lab3-linux:~$ cp quasimodo sera nadja@lab3-linux:~$ ls quasimodo sera nadja@lab3-linux:~$ mv quasimodo poesia nadja@lab3-linux:~$ ls poesia sera nadja@lab3-linux:~$ rm poesia nadja@lab3-linux:~$ ls sera 9

Startup Durante le operazioni di inizializzazione, la shell personalizza l ambiente di uso eseguendo uno o più script di inizializzazione, contenuti in file di pathname prefissato (startup files) che si trovano, tipicamente, alcuni nella home directory dell'utente, altri in directory generali e sono definiti dall'amministratore del sistema Nota: il meccanismo è diverso per ogni shell, e può essere diverso a seconda delle modalità di esecuzione della shell (shell di login oppure no, shell interattiva oppure no,...) Esempi di Shell Shell Comando Chi Complessità(lc) rc rc B. Rakitzis 1,00 Bourne Shell sh S.R. Bourne 1,17 C-Shell csh UCB 2,03 Bourne Again Shell bash GNU, LINUX 3,36 Zsh zsh P. Falstad 3,53 Korn Shell ksh David Korn(AT&T) 3,73 Tcsh tcsh 5,27 Come riconosco la shell? $ echo $SHELL Come cambio la shell? $sh.. ^D per uscire 10

Startup file di configurazione della shell:.profile" shells di Unix : c-shell, bourne Shell, Korn Shell e Bash, normalmente quando un nuovo utente viene creato il sistema si preoccupa di creare un ".profile" nella home directory dell'utente a meno che il file suddetto non esista già, in questo caso si utilizzerà il file esistente. Startup Bash I primi comandi vengono eseguiti dai files: $HOME/.bash_profile Normalmente questo file contiene il comando per l'esecuzione di un altro file profile: $HOME/.bashrc # include.bashrc if it exists if [ -f ~/.bashrc ]; then source ~/.bashrc fi 11

.profile esempio file di configurazione : # commands common to all logins export OPENWINHOME=/usr/openwin export MINICOM="-c on" export MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X1 1/man:/usr/openwin/man export HOSTNAME="`cat /etc/hostname`" export LESSOPEN=" lesspipe.sh %s" export LD_LIBRARY_PATH=/usr/X11/lib/Mesa-2.1/lib export SHADERS=/usr/BMRT2.3.4/shaders export POVINI=/usr/povray3/povray.ini PATH="$PATH:/usr/X11/bin:/usr/andrew/bin:$OPENWINHOME/bin: /usr/games:/usr/:."less=-mm.profile #PS1='`hostname`:`pwd`# ' if [ "$SHELL" = "/bin/pdksh" -o "$SHELL" = "/bin/ksh" ]; then PS1="! $ " elif [ "$SHELL" = "/bin/zsh" ]; then PS1="%m:%~%# " elif [ "$SHELL" = "/bin/ash" ]; then PS1="$ " else PS1='\h:\w\$ ' fi PS2='> '... alias ll='ls -l' 12

.bash_profile PATH=.:$HOME/bin:/usr/local/bin:/usr/bin :/bin:/usr/bin/x11:/usr/games PS1='ciao > ' TERM=vt100 export # commands common to all logins export OPENWINHOME=/usr/openwin il comando "export" serve a rendere visibile a tutti i nostri processi una variabile d'ambiente precedentemente definita da un comando "set" oppure definita direttamente dal comando "export", infatti come nell' ms-dos io potrei definire una variabile d'ambiente con il comando "set" ma se non la esportassi essa rimarrebbe confinata esclusivamente ai processi che vengono generati in quella sessione, invece con il comando "export" rendiamo il risultato del comando "set" disponibile per tutti i processi. 13

export stesso risultato sia in questo caso : export OPENWINHOME=/usr/openwin che in quest'altro : set OPENWINHOME=/usr/openwin export OPENWINHOME Naturalmente agendo nel primo caso risparmio un istruzione. Per interrogare poi la variabile o per utilizzarla all'interno di programmi o scripts è sufficiente aggiungere una "$" al nome della variabile stessa (es. "cd $HOME/work" equivale a "cd /users/nadja/work") Shell: variabili d ambiente Visualizzare le variabili di ambiente digitando al prompt della shell: set Viene visualizzato elenco di variabili di ambiente della bash. Ognuna di queste variabili contribuisce a personalizzare l'ambiente. PATH definisce ciò che viene chiamato il percorso di default. Per il vostro account può somigliare a quanto segue: PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin: /bin:/usr/x11r6/bin:/home/pippo/bin indica dove trovare i programmi. 14

Variabili d ambiente Analizziamo le variabili d'ambiente che sono d interesse in questo momento: export MANPATH=/usr/local/man:/usr/man/preformat:/usr /man:/usr/x11/man:/usr/openwin/man "MANPATH" serve ad informare la Shell dove si trovano i files che il comando "man" deve interpretare per fornirci l'aiuto richiesto, salta subito agli occhi la caratteristica del carattere di congiunzione delle directoryes, a differenza dell' ms-dos nella Shell si utilizza il carattere ":" al posto del carattere ";". PATH="$PATH:/usr/X11/bin:/usr/andrew/bin:$OPEN WINHOME/bin:/usr/games:/:.".profile if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then TERM=linux fi In questa fase si interroga la variabile TERM (notare come in fase di utilizzo si antepone il carattere "$" al nome della variabile) per vedere se è già stato definito il tipo di terminale utilizzato, se non è stato definito si definisce come terminale la console del sistema (in questo caso Linux). 15

.profile #PS1='`hostname`:`pwd`# ' if [ "$SHELL" = "/bin/pdksh" -o "$SHELL" = "/bin/ksh" ]; then PS1="! $ " elif [ "$SHELL" = "/bin/zsh" ]; then PS1="%m:%~%# " elif [ "$SHELL" = "/bin/ash" ]; then PS1="$ " else PS1='\h:\w\$ ' fi PS2='> ' export PATH TERM PS1 PS2 ALIAS alias Crea oppure rimuove il pseudonimo di un comando. Attenzione quando si termina la sessione di lavoro vengono eliminati anche gli alias, per mantenerli è necessario inserirli nel profile della console. 16

History Ripetizione veloce su linea di comando ripetere un comando digitato prima: premere il tasto con la freccietta in su. In questa maniera accedete alla history dei comandi. Se l'history dei comandi digitati è troppo lunga e/o vi ricordate le prime lettere del comando potete richiamarlo direttamente anteponendo ad esso il punto esclamativo. History Ad esempio se avete digitato il comando: % ls -lr grep fortune sort +4n per trovare i file "fortune" ordinati per grandezza e lo volete richiamare, è sufficiente dare il comando: %!ls oppure %!l Questa funzionalità é particolarmente utile quando si devono riscrivere comandi molto lunghi. In pratica quando gli si passa qualcosa del tipo "!nome" la shell interpreta il comando "Esegui l'ultimo comando digitato, che si trova nella history, che inizia con nome". 17

History Se poi il problema è la cattiva digitazione di un comando è possibile correggere l'errore senza stare a riscriverlo. % ls -lr grap fortune sort +4n con il comando '^ra^re' viene sostituita la stringa 'ra' con 're' e viene eseguito automaticamente il comando che ne risulta. % ls -lr grap fortune sort +4n bash: grap: command not found % ^ra^re ls -lr grep fortune sort +4n./fortune-0.2/debian:./fortune-0.2:./fortune.it-1.51: -rw-r--r-- 1 8044 users 429 Oct 26 1998 fortune.lsm -rw-r--r-- 1 8044 users 514 Oct 24 1998 fortune.6... History La Bash mette a disposizione un utile meccanismo di ricerca che fa la stessa cosa ma in modo più veloce: basterà premere i tasti CTRL+R e il vostro prompt di sistema diventerà il seguente: (reverse-i-search)`': A questo punto sarà sufficiente digitare le iniziali del comando ricercato o di parole presenti nello stesso. Per esempio, se usate spesso il comando: mount -t ext2 /dev/hda5 /mnt/hd/dati/personali/foglietti_elettronici sarà sufficiente premere CTRL+R e quindi scrivere la parola "dati" (per esempio): vi apparirà l'intero comando scritto sopra, che potrete riutilizzare semplicemente premendo INVIO. 18