Unix: come sopravvivere ● username, password, login,... ● le shell ● le man pages ● i comandi ● i processi ● I/O: stdin, stdout, stderr ● pipes (?)

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

SC che operano su processi
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.
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.
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 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.
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 – La shell Salvatore Campagna Politecnico di Torino Dipartimento di Automatica.
Shell dei comandi – ! Bash &/o Tcsh !
1 Amministrazione del sistema Creazione degli account al sistema. Comandi per la gestione degli utenti File per la gestione degli utenti, password shadow.
Introduzione a Linux Prof. L. Ilardi.  Un sistema di elaborazione è composto da un insieme di componenti fisici (hardware) tra cui la CPU, la memoria.
Unix (Linux-Mac OS) Alcuni comandi. cd change working directory cd [DIRECTORY] cd entra nella directory specificata. Se non è fornita alcuna directory.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 PROGRAMMAZIONE IN SHELL The Unix Programming Environment Kernigham - Pike.
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.
Corso di Laboratorio primo modulo Introduzione all'uso di un sistema operativo. Introduzione all'uso della shell (bash). Java – –Introduzione – –Tipi di.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Per gli approfondimenti sui vari punti affrontati oggi verrete indirizzati alle pagine degli “Appunti di informatica libera” ospitati nel sito:
Corso GNU/Linux – 3 rev.2 Il sistema Shell Comandi base Struttura filesystem Permessi Netstudent
Breve introduzione alla Bourne Again Shell (bash) Parte II ● Francesco Rossi – –
Introduzione a Unix ● la storia ● la struttura – il sistema operativo – il file system – directories, files, inodes,... – i programmi.
1 Corso su Bash GL-COMO 03/ Shell Kernel Shell/ GUI Utente Perché?! ● Velocità/performance ● Richieste di software praticamente nulle ● Operazioni.
1 Alberto Pollastro, !#/bin/bash Novara, GalLUG - Gruppo Utenti Linux Galliate - #!/bin/bash Alberto Pollastro.
1 Amministrazione di base del sistema Cristina Moretto Corso Base LinuxTrent
Amministrazione di reti di calcolatori - Massimo Bertozzi Shell e scripting.
Ambienti di Programmazione per il Software di Base
A cura dell’Ing. Buttolo Marco
Corso GNU/Linux -3 Shell Comandi base Struttura filesystem Permessi
I comandi principali di Linux
I/O redirection AND PIPES
I PROCESSI.
Corso LAMP Linux Apache Mysql Php
Terza Lezione → Navigare nel file System → parte 2
PROGRAMMAZIONE BASH - INTRODUZIONE
SC per IPC Pipe.
I PERMESSI IN LINUX.
I comandi.
Job Application Monitoring (JAM)
I FILES AD ACCESSO SEQUENZIALE
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
Alessandro Brunengo Mirko Corosu INFN – Sezione di Genova
Marco Panella Ambiente Linux Marco Panella
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
File System ed Input/Output
LINUX: struttura generale
Sommario comandi su files e directories
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Metacaratteri Il carattere * indica un tipo ed un numero qualsiasi di caratteri Per copiare tutti i file che iniziano per “hemo” nella directory dir %
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Unix: come sopravvivere ● username, password, login,... ● le shell ● le man pages ● i comandi ● i processi ● I/O: stdin, stdout, stderr ● pipes (?)

login ● Ogni utente è (univocamente) individuato da uno username (>= 8 caratteri significativi) cui è associata una password che deve essere, per quanto possibile, non banale o stupida o facilmente intuibile (fidanzati/e, figli/e, date, animali, etc.: problema oramai scottante... =>) ● Internamente: username (uid, gid) ● uid = user id (1 < uid < 65535) ● gid = group id (1 < gid < 65535)

decreto 'antiterrorismo' ●... impedire l'uso di terminali che non consentano l'identificazione dell'utente;... impedire l'accesso ad utenti che non siano preventivamente identificati... ● dati identificativi: ● nome, cognome, luogo e data di nascita ● estremi documento d'identita' ● documento d'identita' digitalizzato ● data di attivazione

utenti e gruppi ● /etc/passwd => database utenti ● formato => uname:pass:uid:gid:info:home:shell ● password crittate cone algoritmo one-way ● file di testo, leggibile a tutti!!! ● /etc/shadow => database utenti sicuro ● file di testo, ma è chiuso al mondo ● algoritmi di crittazione evoluti ● /etc/group => database gruppi (grname, gid)

/etc/passwd ● uname: la vostra username ● passw: la password crittata ● uid: user id ● gid: group id ● info: in genere nome e cognome ● home: la vostra home directory ● shell: la vostra shell preferita

quando vi collegate: ● il programma 'login' vi chiede prima la username e poi la password; ● se la prima esiste la password viene crittata e quindi confrontata con quella immagazzinata nel file /etc/passwd ● se la password è corretta il sistema fa partire la vostra shell a vostro nome e usa come directory iniziale quella immagazzinata in /etc/passwd

le shell (1) ● interfaccia primaria tra utente e sistema operativo/risorse H/W della macchina ● possono essere usate interattivamente o in batch ● due famiglie fondamentali: ● Bourne shell: sh, ksh, bash, zsh ● C shell: csh, tcsh ● si differenziano per sintassi e possibilità di editing dei comandi (tab completion etc. etc.)

le shell (2) ● quelle consigliate: bash, zsh e tcsh – completamento dei nomi, editing della linea di comando, history, scripting evoluto, etc. etc. ● esempio: completamento dei nomi. Basta digitare le lettere sufficienti ad indentificare univocamente un comando e poi usare [TAB]: la shell si farà carico di completare correttamente il comando – è la feature preferita dai sistemisti pigri e permette di digitare a velocità warp.

sono connesso. ed ora? ● 'pwd': stampa la directory nella quale vi trovate. ● 'ls': elenca i file presenti nella directory corrente, o in quella che gli passate come argomento: ● ls ● ls -l ● ls -la./work ● devo cambiare password: come faccio? ● man -k password; apropos password

le man pages ● la principale (ed a volte unica) fonte di informazione su unix; nelle man pages (quando esistono) c'è sempre (o quasi) tutto quello che vi serve sapere su un comando, o una funzione, o una libreria per la programmazione. ● sintassi: ● man -k : man -k password, man -k copy,... ● man : man ls, man cc, man passwd,...

man pages sections ● 1 – comandi ● 2 – system calls ● 3 – functions ● 4 – devices ● 5 – file di configurazione ● 7 – moduli ● 8 – linux programmer's manual ●...

i comandi ● formato standard: ● cmd [-opzioni] argomento argomento ● in genere esiste un'opzione '-h' (o '--help') per accedere ad una presentazione sintetica (il più delle volte incomprensibile) del comando. ● le opzioni 'corte' possono essere accorpate in ordine casuale: ● ls -l -a -s == ls -las == ls -sla

file e directory ● 'ls' => lista ● 'pwd' => stampa la dir corrente ● 'cd ' => cambia la dir di lavoro ● 'rm ' => cancella un file ● 'cp ' => copia un file ● 'mv ' => rinomina un file ● 'rmdir ' => cancella una dir (solo se vuota)

wildcard - il sottile fascino di unix... ● rm -f *.o *.bak test?.c => rimuove tutti i file con estensione.o e.bak, e tutti i file del tipo test1.c, test2.c,..., testg.c, etc. etc., ignorando in silenzio eventuali errori (tipicamente: non esiste alcun file con estensione.c). ● rm -f *.o *.bak test?.c => apparentemente come prima, tranne che per lo spazio tra il secondo asterisco e '.bak'. Cosa succede in questo caso?

file e directory ● 'chown' => cambia il proprietario di un file ● 'chmod' => cambia i permessi di un file ● rwx – Read, Write, eXecute permission ● ugo – User (= owner), Group, Other ● chmod u+rwx == owner può fare tutto ● chmod go-rwx == gruppo ed altri senza alcun permesso ● chmod ugo=rwx == file aperto a tutti ● 'chgrp' => cambia il gruppo cui appartiene un file

altri comandi ● 'cat ' => stampa il contenuto di un file ● 'more ' => come prima, ma una pagina per volta con funzionalità evolute (scrolling, ricerca di stringhe, etc. etc.) ● 'less ' => less è un'evoluzione di more... ● 'sort ' => ordina le linee di testo (con campi/chiavi letterali/numeriche a scelta) ● 'wc ' => conta (linee, parole, caratteri) di un file

ancora comandi... ● 'vi' => l'editor più difficile del mondo, ma l'unico che troverete dovunque e funzionerà sempre. ● 'ed' => l'editor più scomodo del mondo, ma... ● 'sed' => editor sequenziale: ● sed -i.bck 's/data/for/' *.txt ● 'grep' => manipolatore di regular expression ● 'awk' => che e'? indefinibile, ma serve...

awk: Aho, Kernighan, Weinberger ● If you are like many computer users, you would frequently like to make changes in various text files wherever certain patterns appear, or extract data from parts of certain lines while discarding the rest. To write a program to do this in a language such as C or Pascal is a time-consuming inconvenience that may take many lines of code. The job is easy with awk, especially the GNU implementation: gawk. ● The awk utility interprets a special-purpose programming language that makes it possible to handle simple data- reformatting jobs with just a few lines of code.

... solo awk:

... awk + sort:

... awk + sort + uniq:

I/O (1) ● OGNI processo unix nasce con tre file descriptor aperti automaticamente: ● stdin => standard input ● stdout => standard output ● stderr = standard error ● in genere: ● stdin = tastiera ● stdout = stderr = schermo

I/O (2) ● Il sistema è in grado di associare uno qualsiasi di questi FD (o tutti) a file veri e propri tramite gli operatori di redirezione, >>: ● ls -l >lista_files ● salca <input_data ● salca >result >result <input.2 ● mcgen 2>errors <input_data ● RNDgen random_out; MC data

I/O (3) ● L'ultimo caso citato, quello in cui l'uscita di un programma deve essere passata in ingresso ad un altro programma per un'ulteriore elaborazione, è particolarmente frequente. Così tanto che unix mette a disposizione le pipe, '|': ● RNDgen data ● Lo stdout di un programma viene automaticamente reindirizzato sullo stdin di un altro programma; la sincronizzazione tra i due è assicurata dal SO.

/arp who-has/ => REGEXP ● Regular expression (regexp): modello per effettuare una ricerca testuale (pattern matching) ● Fondamentali quando non dovete cercare parole ma intere classi di espressioni (pensate alle wildcard). ● Quasi un 'linguaggio' (per la scrittura di pattern): ● '.' = qualsiasi carattere, '\w' = alfanumerici (a-z, 0-9) piu' '_', '\d' = cifra, '\s' = spazio,... ● quantificatori: '?' = zero o uno, '+' = uno o piu', '*' = zero o piu', '{n,m}' = tra n ed m occorrenze,...

regexp example (with grep)

i processi (1) ● ogni comando può essere eseguito in background (senza che la shell rimanga in attesa della sua fine per ridarvi il controllo) terminando la linea con &: ● cp work/* /mnt/floppy & ● 'jobs' => lista dei processi in background ● 'fg' => riporta in foreground (interattivo) un processo lanciato con &; [CTRL+Z] bg sospende e manda in background un processo interattivo.

i processi (2) ● 'ps [milioni di flag]' => report process status ● 'ps' => tutti e soli i processi figli della shell corrente ● 'ps aux' => tutti i processi che girano ● 'kill -signal ' => invia il segnale specificato (segnale = modalità di comunicazione tra processi) al processo identificato da (ogni processo è univocamente individuato da un process identifier) ● 'kill ' => uccide (nel senso stretto del termine: 9 = SIGKILL) il processo 3526

i processi (3) ● 'pstree' => un'evoluzione di ps in grado di mostrare tutti i processi e le loro relazioni di parentela (in unix ogni processo tranne init è figlio di qualche altro processo). ● 'pstree -pu' => mostra l'albero con user e pid. ● 'top' => ulteriore evoluzione di ps in grado di mostrare i processi attivi con aggiornamenti periodici