Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Guida ai comandi Unix: dalla visualizzazione utenti connessi al gestione file e directory, Dispense di Informatica

Una panoramica sui comandi unix utilizzati per visualizzare gli utenti connessi al sistema, gestire calendari, directory e file. Verranno descritte le opzioni e gli esempi per il calendario, la gestione di file e directory (copiare, rinominare, creare, cancellare, spostare), la redirezione standard input/output/error e la pipeline. Inoltre, verranno trattati i permessi di un file e i comandi find e grep.

Tipologia: Dispense

2023/2024

Caricato il 27/01/2024

alex-zecchini
alex-zecchini 🇮🇹

14 documenti

1 / 18

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SISTEMA OPERATIVO LINUX
Introduzione
Il sistema operativo Linux è un sistema multiuser, multitasking e multithreading. Ciò vuol dire che il sistema è multiutente, più
programmi possono essere eseguiti contemporaneamente e più copie (istanze) dello stesso programma possono essere
eseguite nello stesso momento. Uno dei modi di sfruttare la multiutenza del sistema è utilizzare il protocollo SSH, un protocollo
di rete che permette di eseguire il login remoto sulla macchina. Per utilizzare SSH occorre un client, come per esempio
PuTTY, che, una volta specificato l'indirizzo IP del server, stabilisce la connessione e presenta all'utente la schermata di
accesso, in cui vengono richieste la propria username e password (processo di autenticazione al sistema). Se le credenziali
sono corrette, il sistema permette l'accesso e all'utente viene presentato il prompt (la shell bash). Il sistema è quindi pronto ad
accettare a questo punto le richieste dell'utente. La shell bash è l'interprete dei comandi standard dei sistemi Unix. Nei sistemi
Unix, c'è un utente, il superuser, che ha permessi amministrativi e può eseguire qualunque tipo di attività nel sistema. Tale
utente si chiama root ed è l'equivalente dell'utente Administrator dei sistemi Microsoft Windows.
Alcuni comandi:
who → Visualizza la lista degli utenti connessi al sistema
cal → Visualizza il calendario
date → Visualizza data e ora del server
pwd → Stampa la directory nella quale ci si trova (print working directory)
passwd → Permette di modificare la propria password di accesso. Viene richiesta la vecchia e poi la nuova
(due volte, per conferma). Per evidenti ragioni di sicurezza, sullo schermo non vengono
visualizzati i caratteri digitati. Il sistema, tuttavia, memorizza ogni carattere digitato.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Anteprima parziale del testo

Scarica Guida ai comandi Unix: dalla visualizzazione utenti connessi al gestione file e directory e più Dispense in PDF di Informatica solo su Docsity!

SISTEMA OPERATIVO LINUX

Introduzione

Il sistema operativo Linux è un sistema multiuser, multitasking e multithreading. Ciò vuol dire che il sistema è multiutente, più programmi possono essere eseguiti contemporaneamente e più copie (istanze) dello stesso programma possono essere eseguite nello stesso momento. Uno dei modi di sfruttare la multiutenza del sistema è utilizzare il protocollo SSH, un protocollo di rete che permette di eseguire il login remoto sulla macchina. Per utilizzare SSH occorre un client, come per esempio PuTTY, che, una volta specificato l'indirizzo IP del server, stabilisce la connessione e presenta all'utente la schermata di accesso, in cui vengono richieste la propria username e password (processo di autenticazione al sistema). Se le credenziali sono corrette, il sistema permette l'accesso e all'utente viene presentato il prompt (la shell bash). Il sistema è quindi pronto ad accettare a questo punto le richieste dell'utente. La shell bash è l'interprete dei comandi standard dei sistemi Unix. Nei sistemi Unix, c'è un utente, il superuser, che ha permessi amministrativi e può eseguire qualunque tipo di attività nel sistema. Tale utente si chiama root ed è l'equivalente dell'utente Administrator dei sistemi Microsoft Windows. Alcuni comandi: who → Visualizza la lista degli utenti connessi al sistema cal → Visualizza il calendario date → Visualizza data e ora del server pwd → Stampa la directory nella quale ci si trova (print working directory) passwd → Permette di modificare la propria password di accesso. Viene richiesta la vecchia e poi la nuova (due volte, per conferma). Per evidenti ragioni di sicurezza, sullo schermo non vengono visualizzati i caratteri digitati. Il sistema, tuttavia, memorizza ogni carattere digitato.

logout → Si disconnette dal sistema (processo opposto al login) L’operazione di logout deve essere effettuata ogni volta che ci si vuole disconnettere dal sistema in modo corretto. Terminata quindi la sessione di lavoro con PuTTY, il comando logout permette la disconnessione dal sistema e chiude in automatico PuTTY. Se si utilizza il carattere ";" si possono anche scrivere più comandi insieme. date ; cal → Mostra prima la data e l'ora, poi il calendario Spesso i comandi hanno anche delle opzioni. Per esempio: cal 2050 → Visualizza il calendario del 2050 cal 12 2014 → Visualizza il calendario di Dicembre 2014. Si può lavorare con i propri file e cartelle conoscendo i comandi per la loro gestione. Occorre osservare che i sistemi Unix sono case-sensitive, ovvero distinguono fra lettere maiuscole e minuscole. Quindi, per esempio, alunni, Alunni, ALunni ecc... sono file (o directory) differenti. L'unità disco locale si indica con / (slash) ed è anche chiamata root directory; per esempio /home indica che home è sottocartella del disco locale. Esistono nomi speciali per la directory corrente (indicata con .) e per la directory che contiene quella corrente (indicata con ..) Per gestire file e directory (cartelle) si utilizzano alcuni comandi che permettono di copiare, rinominare, creare, cancellare, spostare. ls → Visualizza la lista di file e cartelle presenti nella cartella corrente

ls -l file2 → Visualizza tutte le proprietà di file ls -a -l → Visualizza la lista di file e directory in formato lungo, compresi quelli nascosti ls -al → Equivalente al precedente, con le opzioni riunite La lista in formato lungo (con l'opzione -l) permette di evidenziare, oltre al nome, anche la dimensione, l'utente proprietario e il relativo gruppo, i permessi, la data e l'ora di ultima modifica.

Programmazione HTML/PHP client-server

Dopo il login ci si trova nella propria cartella indicata con il nome completo /home/nomeutente. Il sistema è stato configurato in modo che le proprie pagine web siano visibili all'indirizzo: http://server_ip_address/nomeutente dove server_ip_address è l’indirizzo IP del server. Ogni file .html (oppure .htm) e .php deve essere salvato all'interno di una cartella di nome www presente nella propria home directory. Se tale cartella non esiste va preliminarmente creata con mkdir e poi bisogna posizionarsi al suo interno con il comando cd Dunque, se si crea un file di nome test.html nella cartella /home/nomeutente/www lo si può visualizzare all'indirizzo: http://server_ip_address/nomeutente/test.html I file .html oppure .php possono essere creati con qualunque editor di testo presente nel sistema. Si possono per esempio utilizzare gli editor mcedit oppure nano, simili al BloccoNote per Windows.

Con mcedit: mcedit test.html → Apre l'editor mcedit e assegna il nome test.html al file. Per salvare ogni modifica utilizzare il tasto funzione F2. Per uscire da mcedit doppio ESC oppure il tasto funzione F10. Con nano: nano test.html → Apre l'editor nano e assegna il nome test.html al file. Per salvare ogni modifica CTRL-O, per uscire CTRL-X Entrambi gli editor supportano il "syntax highlighting", ovvero utilizzano i colori nella scrittura dei tag HTML.

Altri comandi

Creare un file con struttura tabellare, costituito da cognome, nome e interesse principale. Una colonna (campo) è distinta da un'altra mediante il carattere "@" Per esempio, creare un file di nome alunni, le cui righe sono del tipo: Martinelli@Francesca@Musica Albasini@Andrea@Sport e così via. Il comando cut estrae sottoparti delle righe di un file. Per estrarre una o più colonne si utilizza l'opzione -f con il numero di campi che si vuole estrarre. Se il carattere delimitatore non è la tabulazione, bisogna anche specificare l'opzione -d per specificare quale delimitatore si usa. Il comando cut realizza in pratica l'operatore di proiezione sui campi voluti. Per esempio:

sort -t'@' -k4 -n -r alunni L'opzione n sta per NUMERIC e intende che si vuole un ordinamento basato sui numeri e non sui caratteri. Anche qui, come in altri comandi Unix, le opzioni possono essere riunite. Il comando precedente può quindi essere scritto sort -t'@' -k4 -nr alunni. L'ordine delle opzioni utilizzate nel comando non è importante. I comandi head (testa) e tail (coda) visualizzano rispettivamente le righe iniziali e finali di un file. Per esempio: head nomefile → Visualizza le prime righe del file (default=prime 10 righe). Se ce ne sono di meno visualizza tutto il file. Se si usa l'opzione -n si può decidere quante visualizzarne. head -5 nomefile → Visualizza le prime 5 righe del file Il comando opposto è tail che visualizza le ultime righe del file. Il default è anche qui 10. Però, a differenza di head, con tail si possono usare sia + che - tail -5 nomefile → Le ultime 5 righe tail -n +10 nomefile → A partire dalla decima riga in giù

Redirezione standard input/output/error

Lo standard output rappresenta la periferica predefinita per l'output di un comando e generalmente è il monitor. Analogamente la periferica di input standard è la tastiera. Infine, quando un comando restituisce errore il messaggio di errore viene

visualizzato sullo schermo. Ecco perchè lo standard error è anch'esso il monitor. Questo comportamento può essere modificato con la redirezione. I caratteri speciali utilizzati sono i seguenti:

→ Redirezione output

→ Redirezione output in modalità append (coda) < → Redirezione input & → Redirezione output ed error Nella modalità append, detta anche in coda, vuol dire che il file verso il quale si redirige non viene sovrascritto, ma accodato a quello precedente. Seguono alcuni esempi di redirezione. who → Elenco degli utenti connessi, visualizzazione sullo schermo (standard output) who > connessi → Non viene visualizzato nulla sul video. Viene però creato un file di nome connessi che contiene il risultato del comando who (redirezione output) Se si scrive nuovamente who > connessi, il file connessi che esiste già viene perduto perchè sovrascritto e ne viene creato uno nuovo. Se si vuole conservare anche il contenuto precedente, bisogna usare la modalità append who >> connessi Scrive in coda a quello precedente, mantenendo il file già creato precedentemente.

La stampa della directory corrente (pwd) La lista di file e cartelle in formato lungo dei file (ls -l) La lista degli utenti connessi (who)

Pipeline (leggi: paiplain)

Una pipeline viene creata mediante il carattere pipe | (sopra il backslash ) Una pipeline permette di fare in modo che l'output di un comando diventi input di un altro. Per esempio, concateniamo con una pipeline i comandi noti who e wc con l'opzione -l wc → conta caratteri, linee (righe) e parole in un file. Con le opzioni -c -l e -w si contano rispettivamente solo i caratteri oppure solo le linee oppure solo le parole. (c = CHAR = CARATTERE, l = LINEA = RIGA, w = WORD = PAROLA) Per parole si intendono tutte le stringhe di caratteri separate dal punto oppure da spazi oppure dal carattere di tabulazione oppure da un ritorno a capo. Per esempio: wc -l nomefile → conta le righe del file nomefile Se volessi conteggiare i caratteri, devo ricordare che vengono contati anche i ritorni a capo e lo spazio. Un ritorno a capo nei sistemi Unix equivale a 1 carattere. In Windows invece il ritorno a capo è costituito da 2 caratteri.

Altri esempi di redirezioni e pipeline: who | wc -l → L'output di who diventa input per wc e quindi il comando restituisce il numero degli utenti connessi al sistema. Naturalmente pipeline e redirezioni possono essere combinate come si vuole. who | wc -l > numero_connessi → Sullo schermo non si vede nulla, viene creato un file che si chiama numero_connessi che contiene il numero degli utenti connessi al sistema. Supponiamo per esempio di voler estrarre dal comando date solamente l'orario attuale e di volerlo scrivere nel file orario. Tenendo presente che il comando cut possiede l'opzione -c di estrazione dei soli caratteri: → date | cut -c12-19 > orario L'estrazione specificata con -c riguarda i caratteri dal 12° al 19° (corrispondenti al solo orario)

Permessi di un file

Si utilizza il comando ls -l per visualizzare la lista di file e directory in formato lungo. In particolare si visualizzano i permessi. Per esempio, un file potrebbe avere i permessi: -rw-r--r-- Si tratta di 10 caratteri, da pensare come 1+3+3+3. Il primo carattere rappresenta il tipo di file. Se è un trattino si tratta di un

carattere - (l'assenza del permesso) Per esempio la sequenza rwx rw- r-- corrisponde a 111 110 100 che in ottale corrisponde a 764. Quindi, il comando chmod 764 nomefile: → Assegna tutti i permessi al proprietario → Permessi di lettura e scrittura al gruppo → Sola lettura per tutti gli altri chmod 666 numeri → Rende leggibile e scrivibile da tutti il file che si chiama numeri, a patto che la cartella sia anch'essa scrivibile. La sintassi del comando chmod nella notazione letterale è: chmod tipoutente opzione permesso nomefile Per comprendere l'utilizzo della notazione letterale, ricordiamo che gli utenti di un sistema Unix possono anche essere individuati con lettere. tipoutente può essere: u → UTENTE PROPRIETARIO g → GRUPPO o → OTHERS (tutti gli altri) a → ALL (tutti, il tipo di utente predefinito) opzione può essere:

  • → Aggiunge un permesso
  • → Toglie un permesso = → Sostituisce i permessi esistenti con i nuovi Esempi di utilizzo dei permessi *chmod u=rx .prg → Il comando consente all'utente proprietario di tutti i file con estensione prg di leggere ed eseguire il file. Il permesso di scrittura eventualmente esistente viene eliminato; inoltre non vengono cambiati i permessi esistenti per gli altri utenti e il cambiamento non riguarda gli altri file presenti nella directory corrente. chmod +r miofile → Attribuisce a tutti il permesso di lettura su miofile. Gli eventuali altri permessi esistenti non vengono cambiati. La lettura del file da parte di altri utenti deve essere resa possibile assegnando il permesso x (execute) alla directory che contiene il file. chmod +rx. → Concede a tutti gli utenti il permesso di lettura e ricerca all'interno della directory corrente, indicata nei sistemi Unix con il carattere. chmod g-w miofile → Toglie ai membri del gruppo la possibilità di modificare miofile. chmod 444 miofile → Consente la sola lettura di miofile a tutti gli utenti. Nel caso siano necessari cambiamenti al file, basta ripristinare temporaneamente il permesso di scrittura per il proprietario: chmod u+w miofile oppure

Il comando grep ( Get Regular Expression Program ) è uno dei più potenti comandi Unix. Esso ricerca una stringa all'interno di uno o più file e restituisce le linee nelle quali è stata trovata. Il comando grep realizza in pratica l'operazione di selezione delle righe, cosi come il comando cut realizza l'operazione di proiezione sui campi. La sintassi del comando grep è la seguente: grep opzioni espressione nomefile nomefile sta ad indicare un singolo file oppure un gruppo di file rappresentati mediante i caratteri jolly * e? Le principali opzioni del comando grep sono: -i → Ignora la differenza tra caratteri maiuscoli e minuscoli; -n → Visualizza anche il numero di linea che contiene la stringa cercata all'interno del file; -l → Produce solo i nomi dei file che contengono in qualche riga la stringa cercata, ma non le righe stesse. Questa opzione è utile quando la ricerca riguarda più file e si vuole conoscere solo il nome dei file che contengono la stringa cercata; -L → Produce solo i nomi dei file che NON contengono la stringa cercata; -v → Visualizza le righe che NON contengono la stringa richiesta; -c → Per sapere solo il numero totale di righe che contengono la parola cercata La ricerca può riguardare una stringa oppure più propriamente una espressione. Con questo termine si intende una stringa che contiene al suo interno anche metacaratteri, che verranno poi espansi dal comando grep. L'espressione viene delimitata all'inizio e alla fine con un apice. Ciò non è obbligatorio per le ricerche che riguardano espressioni senza spazi bianchi e senza metacaratteri. Nella sua forma più semplice, grep ricerca una parola all'interno di uno o più file.

Per esempio: *grep importo .dat → Cerca la stringa "importo" all'interno di tutti i file con estensione .dat grep numeri ???.txt → Cerca la stringa "numeri", all'interno di tutti i file con estensione txt ma con nome di 3 caratteri Alcuni dei metacaratteri (caratteri con significato speciale) utilizzati da grep sono: [] → Racchiudono un insieme di caratteri, ciascuno dei quali può comparire in quella posizione all'interno della stringa da cercare. Se i caratteri sono in sequenza, si può usare il segno - per indicare il range (intervallo)

. → Significa qualsiasi carattere \ → Toglie il significato al metacarattere (funziona come un ESCAPE) ^ → Indica la ricerca a partire dal primo carattere di ogni riga $ → Indica la ricerca a partire dalla fine della riga Esempi di utilizzo dei metacaratteri grep '[12]A' classi → Cerca le corrispondenze con 1A,2A ma non con 3A grep '[1-3]B' classi → Cerca le corrispondenze con 1B,2B,3B ma non con 4B o 5B