Shell BASH. Variabili Redirezione
|
|
|
- Francesco Masi
- 9 anni fa
- Visualizzazioni
Transcript
1 Shell BASH Variabili Redirezione
2 Variabili Scrittura/definizione: a=3 (senza spazi) Lettura: ${a} o semplicemente $a Esempi: > a=3 > echo $a 3 > echo $aa > echo ${a}a 3a > a=ciao pippo bash: pippo: command not found > echo ecco: $a ecco: 3 > echo 'ecco: $a' ecco: $a 2
3 Variabili predefinite PATH percorso di ricerca eseguibili USER nome utente HOME directory home dell'utente PS1 il prompt HOSTNAME nome computer SHELL la shell corrente... Per vederle tutte, digitare set. 3
4 Redirezione I programmi dispongono di 3 canali di comunicazione: standard input (codice numerico 0), per l'input standard output (1), per l'output standard error (2), per i messaggi d'errore Normalmente: standard input = tastiera standard output = standard error = schermo 4
5 Redirezione comando > nomefile redirige lo standard output sul file; se il file non esiste, viene creato; altrimenti, viene sovrascritto comando 2> nomefile redirige lo standard error sul file comando < nomefile redirige lo standard input sul file Esempi: > echo ciao > prova.txt > cat prova.txt ciao > echho ciao bash: echho: command not found > echho ciao 2> /dev/null 5
6 Redirezione comando >> nomefile redirezione in append comando (codicea)>&(codiceb) redirige il canale A sul canale B esempio: comando > file 2>&1 Le redirezioni si possono combinare comando > file1 < file2 2> file3 6
7 Pipe (tubo) comando1 comando2 L'output di comando1 diventa l'input di comando2 I due comandi vengono eseguiti in parallelo 7
8 Comandi concatenabili cat, wc, sort less, uniq 8
9 Comando cat cat [nome_file]* Scrive su standard output il contenuto di tutti i file, nell'ordine in cui sono specificati Senza nomi di file, scrive su standard output tutto quello che riceve da standard input finché standard input non viene chiuso da tastiera, standard input si chiude con Ctrl+d 9
10 Comando wc (word count) wc [ l] [ w] [ c] [nome_file]* Conta le linee [ l], le parole [ w] oppure i caratteri [ c] dei file passati come argomenti Senza opzioni, conta tutti e tre Senza nomi di file, conta quello che riceve da standard input 10
11 Comando sort sort [ n] [ k num_col] [nome_file]* Ordina le righe dei file passati come argomento scrive il risultato su standard output non modifica i file originali opzione n: ordinamento numerico (invece che alfabetico) opzione k num_col: ordina in base alla colonna num_col Senza nomi di file, ordina quello che riceve da standard input 11
12 Comando uniq uniq Elimina le righe duplicate consecutive Legge da standard input e scrive su standard output 12
13 Comando less less [nome_file] Mostra il contenuto di un file, una pagina alla volta E' interattivo e ha decine di opzioni Senza nome file, legge da standard input E' un pager 13
14 Esercizi 1) Elencare i file della directory corrente in ordine alfabetico 2) Contare i file della directory corrente che contengono una z nel nome 3) Scrivere nel file elenco l'elenco dei file nella directory corrente, in ordine alfabetico 4) Creare un file che si chiami come l'utente corrente 5) Creare un file che si chiami come l'host corrente, e che contenga il nome dell'host corrente 14
15 Command substitution Il pattern $(comando) viene sostituito con l'output del comando Esempi: $(ls) equivale a * $(echo ciao) equivale a ciao $(cat pippo) equivale all'intero contenuto del file pippo a=$(ls) assegna ad a l'elenco dei file nella dir corrente touch $(date) crea un file chiamato come la data attuale 15
16 Le sostituzioni Variabili: ${variabile} (parameter expansion) Caratteri jolly: *? (filename expansion) Command substitution: $(comando) Vengono eseguite in quest'ordine esercizio: come si verifica in che ordine vengono eseguite? 16
17 Word splitting Dopo aver effettuato parameter expansion o command substitution, la shell effettua la suddivisione in parole La variabile IFS (internal field separator) definisce i separatori di default, IFS= <space><tab><newline> Come effetto collaterale, il word splitting sostituisce i newline con spazi In una directory con molti file, confrontare l'output di ls con quello di echo $(ls) 17
18 Word splitting Consideriamo il programma C printargs: #include <stdio.h> int main(int argc, char *argv[]) { int i; for (i=0; i<argc ;i++) printf("argv[%d] = \" %s \" \n", i, argv[i]); > printargs prova questo argv[0] = printargs argv[1] = prova argv[2] = questo > printargs prova questo argv[0] = printargs argv[1] = prova questo } return 0; > printargs $(echo prova questo ) argv[0] = printargs argv[1] = prova argv[2] = questo 18
19 Word splitting > temp=$ifs > IFS= v > printargs $(echo prova questo ) argv[0] = printargs argv[1] = pro argv[2] = a questo > printargs prova questo argv[0] = printargs argv[1] = prova questo > IFS=$temp 19
20 Esercizi 1) Assegnare alla variabile x il numero di righe di un file a vostra scelta 2) Assegnare alla variabile x l'elenco dei file che cominciano con un punto 3) Per ogni parola contenuta nel file pippo.txt, creare un file con nome uguale a quella parola 20
21 Variabili predefinite negli script $1...$9 parametri da riga di comando $# numero di parametri ricevuti $* tutti i parametri in una stringa singola $@ tutti i parametri in stringhe separate 21
22 Differenza tra $* e $@ file prova: #!/bin/bash for x in $* ; do echo "ecco $x" done echo qui for x in "$@"; do echo "ecco $x" done > prova ecco qui ecco 1 ecco 2 ecco 3 22
23 Esercizio 1 Scrivere uno script bis che prende un comando come argomento e lo esegue due volte Esempio: bis ls l esegue due volte ls l 23
24 Esercizio 2 Scrivere uno script report che prende come argomento il nome di una directory ed esamina tutti i file.txt in quella directory, producendo un output come il seguente: > report /home/mfaella /home/mfaella/a.txt: 23 righe e 368 caratteri /home/mfaella/b.txt: 25 righe e 1657 caratteri 24
25 Riferimenti Capitolo 5 di [Introduction to Linux] (redirezione) Capitolo 3.2 di [Bash Guide for Beginners] (variabili) 25
Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set
PATH Shell: variabili di sistema HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set Shell: variabili di sistema Per visualizzare il
Per visualizzare il valore di tutte le variabili d ambiente si usa il comando env
Tipi di Shell sh Bourne shell csh C shell ksh Korn shell bash Bourne Again (Bash) shell tcsh TENEX C shell zsh Z shell rc rc shell es es shell à csh e bash sono le più comuni. Per cambiare il tipo di shell
Esercitazione 1 la shell
Esercitazione 1 la shell Obiettivi Prendere confidenza con i comandi per la gestione del file system Utilizzare gli strumenti visti a lezione per creare tre semplici script bash File system 1/2 1. Verificare
- comando sort: con chiavi di ordinamento -
- comando sort: con chiavi di ordinamento - 1 - sort: chiavi di ordinamento - Tramite l'opzione -k è possibile definire una chiave di ordinamento su una porzione della linea contenuta nel file Specificando
CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS
CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS Comandi da terminale Il comando sleep fa attendere un comando prima dell'esecuzione. Prova il comando: $ sleep 3s && echo Ciao Mondo! $ Comandi da terminale
Come si accede a BASH Tasti utili: Ctrl-Alt-F1, Ctrl-Alt-F7. Il Primo comando : exit (CASE SENSITIVE!!) Si può uscire con CTRL-D
Come si accede a BASH Tasti utili: Ctrl-Alt-F1, Ctrl-Alt-F7 Il Primo comando : exit (CASE SENSITIVE!!) Si può uscire con CTRL-D Il secondo comando: ls Opzioni: ls l, ls a, ls R ls --full-time Parametri:
Il sistema operativo LINUX Script di Shell
Il sistema operativo LINUX Script di Shell Giorgio Di Natale Stefano Di Carlo Bartolomeo Montrucchio Politecnico di Torino Dip. Automatica e
Esempio di domande sul file system
Esempio di domande sul file system Si supponga che un file system usi blocchi di 4 Kbyte, e che un puntatore ad un blocco occupi 4 byte. Se l INODE di un file utilizza 12 blocchi, un blocco indiretto ed
Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013
Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013 Comandi di ricerca 1 Sommario Comandi shell di ricerca: grep find 2 - comando di ricerca: grep - 3 file passwd, ricordiamo che Le righe di
Linux e la shell Bash
DEI DEI-- Politecnico di dibari Linux e la shell Bash Esercitazione conclusiva G. Piscitelli - M. Ruta - A. Cinquepalmi Testi di riferimento: Linux e la shell Bash http://sisinflab.poliba.it/ruta/linux/linux
Lab. di Sistemi Operativi - Esercitazione - Comandi Shell
Lab. di Sistemi Operativi - Esercitazione - Comandi Shell 1 - Esercizi Comandi Unix - 2 Esercizio n 0 0a) creare una cartella EsercitazioneLSO-1 nella directory di lavoro 0b) creare un file testo chiamato
Lezione 3: Programmazione della Shell di Unix
Lezione 3: Programmazione della Shell di Unix Laboratorio di Elementi di Architettura e Sistemi Operativi 2 Marzo 202 Parte : Soluzione degli esercizi Statistiche Ho ricevuto 2 soluzioni Tutte le soluzioni
Esempio 1. Creare uno script (file comandi) che abbia la sintassi:
Esempi shell 1 Esempio 1 Creare uno script (file comandi) che abbia la sintassi:./ps_monitor.sh [N] Lo script: in caso di assenza dell argomento, deve mostrare i processi di tu@ gli utena (compresi quelli
Linux - La Shell Bash
DEI DEI -- Politecnico di di Bari Bari Linux - La Shell Bash I link Hard link e soft link Il comando ln Redirezione dell I/O Concatenamento di comandi: la pipeline Visualizzazione ed diting di file Filtri
Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.
Il sistema operativo LINUX Esercitazione 3 Esercizio 1 Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica Mostrare una lista
I Metacaratteri della Shell Unix
I Metacaratteri della Shell Unix La shell Unix riconosce alcuni caratteri speciali, chiamati metacaratteri, che possono comparire nei comandi. Quando l utente invia un comando, la shell lo scandisce alla
Esecuzione di script
Shell Script Gli shell script sono programmi interpretati dalla shell, scritti in un linguaggio i cui costrutti atomici sono i comandi Unix. I comandi possono essere combinati in sequenza o mediante i
Lezione 5: Controllo del flusso e costrutti avanzati
Lezione 5: Controllo del flusso e costrutti avanzati Laboratorio di Elementi di Architettura e Sistemi Operativi 20 Marzo 2013 Parte 1: Il valore di uscita di un processo Il valore di uscita di un processo
Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori
Formattazione avanzata Modificatori di o in output Modificatori di o in input Stream predefiniti I/O Avanzato e File 2 Formattazione dell output Formattazione avanzata L output (su schermo o su file) viene
Formattazione avanzata. Modificatori di formato in output Modificatori di formato in input Stream predefiniti
I/O Avanzato e File Formattazione avanzata Modificatori di formato in output Modificatori di formato in input Stream predefiniti 2 Formattazione avanzata Formattazione dell output L output (su schermo
