Appunti corso “Amministrazione Linux”


Modulo 5: Utilizzo in maniera approfondita della shell e dei comandi di Linux (Parte seconda); configurazione dei file system



Download 1.08 Mb.
Page5/11
Date28.01.2017
Size1.08 Mb.
#10196
1   2   3   4   5   6   7   8   9   10   11

Modulo 5: Utilizzo in maniera approfondita della shell e dei comandi di Linux (Parte seconda); configurazione dei file system

La shell Bash; variabili di ambiente, personalizzazione, comandi, history ecc.


Cat /proc/version (per identificare la distribuzione di Linux corrente)

Uname –a (informazioni complete su macchina e kernel)




    • La variabile di ambiente SHELL contiene la shell corrente (echo $SHELL).

    • Per settare una variabile di ambiente in BASH, VAR=valore; senza il comando export il valore rimane visibile solo all’interno della shell corrente (echo $VAR).

    • Se digitiamo VAR=valore; export VAR e lanciamo una nuova /bin/bash ci accorgiamo che con echo $VAR il valore persiste anche nelle shell figlie di quella dove abbiamo settato inizialmente la variabile.

    • Introduzione alla shell; le variabili di ambiente (.bash_profile, PS1=”\h:\w>”, il comando export).

    • Ad esempio posso usare nella variabile d’ambiente PS1 = $USER \h \w per stampare nel prompt lo username, il nome host e la directory corrente.

    • ~ è il simbolo della home directory di un utente: cd ~david equivale a cd /home/david.

    • File di inizializzazione shell utente /home/david/.profile, /home/david/.bash_profile, /home/david/.bash_login, le inizializzazioni per tutti gli utenti si trovano in /etc/profile.

    • In /home/david/.bashrc in genere si trovano le definizioni degli alias per i comandi: alias rm ‘rm –i’, alias mv ‘mv –i’ , per evitare esiti catastrofici di comandi rm dati con leggerezza.

    • /home/david/.bash_history contiene la history dei comandi controllata dalla variabile di ambiente HISTSIZE=1000 per il numero dei comandi da inserire nella history.

    • /home/david/.bash_logout contiene i comandi da eseguire al momento del logout (ad esempio clear per cancellare i comandi rimasti a video).

    • I comandi shell vengono separati dal ; mentre quelli che continuano su più righe sono separati da un ‘\’.

    • I comandi racchiusi tra ` (ALT-96 o apice retroverso) vengono prima risolti dalla shell e poi passati come argomento al comando: es. ls `pwd` mostra i file nella dir corrente in quanto prima viene eseguito il comando pwd, e l’output viene poi passato al comando ls.

Lo script .bashrc viene eseguito quando parte una sottoshell all'interno di una shell (es. comando “su utente”); al momento del login viene eseguito .bash_profile.

Se esiste .bash_profile non viene cercato .profile e viene eseguito .bash_profile (questo vale per la shell BASH).
mkdir -p /home/david/documenti/linux (crea tutta la struttura delle dir)
Esercizio: personalizzare il prompt della shell e aggiungere “/usr/games/fortune” al momento del login di ogni utente.
Comandi shell avanzati (sed, awk, filtri, pipe, sort, tee, 2>&1, ecc.)


    • Esistono 3 stream di default (stdin, stdout, stderr; ogni programma linux in esecuzione in condizioni normali ha a disposizione questi 3 flussi).

    • redirezione input: esempio (dato un file lista): sort listaordinata

    • sort +1 (ordina sul secondo campo)

    • append (sort >archivio)

    • redirezione stderr (esempio sort >& fileoutput); in questo modo si redirige sia lo stdout che stderr in fileoutput.

    • per redirigere solo stderr (sort fileinesistente 2> fileoutput); difatti lo stdout in questo modo va al canale di default, ovvero il video.

    • La pipe serve per connettere l’output di un comando con l’input di un altro per formare comandi complessi tramite l’utilizzo in cascata di comandi elementari (sort +1 lista | nl, per ottenere una lista ordinata e numerata).

    • Cat /etc/passwd | wc –l (conta le righe di /etc/passwd).

    • Pipes e redirezioni possono essere combinati insieme: who | wc –l > utenti.log.

    • Il comando tee copia lo stdin in stdout ed in più scrive dentro un file dato come argomento (utile per mandare dati in pipe e salvarne anche una copia) (es. who | tee utenti | wc –l, conta gli utenti ed in più scrive la lista degli utenti nel file utenti).

    • 2>&1 (redirige lo stderr nello stesso canale dell’stdout, es: wc –l fileinesistente >conteggio 2>&1; in questo modo l’errore finisce nel file di output insieme all’output).

    • es. wc lista 2>&1 | tee conteggio | nl (l’output del comando wc finisce in conteggio insieme all’eventuale stderr e poi viene trasmesso in pipe come input per il comando nl: (quindi se wc fileinesistente 2>&1 | tee conteggio | nl, in conteggio trovo l’errore generato da wc che poi viene mandato in input (l’errore) al comando nl.

    • find . –name README –print | xargs more (fornisce in input al comando more un risultato alla volta proveniente dalla find, ovvero permette di leggere un solo file alla volta).

    • Esercizio: Trovare tutti i file in una directory che siano più nuovi di un certo file e copiarli in un’altra directory (confrontare la soluzione Windows tramite explorer e quella Linux da riga di comando):

find /tmp/source/ -name ‘*.mp3’ –newer lista.txt –exec cp {}/tmp/dest \;




    • Esercizio: comando per stampare solo il numero dei processi in esecuzione dal più grande al più piccolo:

(Soluzione 1)

ps -ax | awk '{ print $1 }' | grep -v PID | sort –nr


(Soluzione 2)

ps -ax | cut –c 1-5 | grep -v PID | sort –nr


Il comando sed (stream editor) può essere utilizzato per fare operazioni globali su di un file (sostituzioni, cancellazioni selettive ecc.)

cat lista | sed ‘s/David/Davide/’


(AWK: linguaggio per la manipolazione di pattern, predecessore del PERL insieme a SED (editor di flusso)).


    • tr ‘A-Z’ ‘a-z’

    • head, tail (tail –f /var/log/messages, per osservare in tempo reale le modifiche al log di sistema).

    • cat lista, tac lista.

    • grep “^D” lista (tutte le righe che iniziano con D maiuscola)

    • grep “e$” lista (tutte le righe che terminano in e)

    • Esempi di pattern per grep (pagina 189)

    • 1,$s/find/replace/g (comando di sostituzione globale in VI)

    • Copia di blocchi in VI: marcare inizio blocco (ma), fine blocco (y’a), copia (p).

    • Cancellazione di 3 righe (3dd), copia di 3 righe (3yy), trova (/), (n) occorrenza successiva.

    • (u): undo, (.) ripete l’ultimo comando eseguito.

    • Per copiare blocchi tra due file in VI: vi primo secondo; nel primo marcare un blocco con (ma, y’a), spostarsi nel secondo con (ESC:n oppure con ESC:e#) ed incollare con p; posso avere più blocchi memorizzati utilizzando mb, y’b ecc.


Esercizio:

Visualizzare la lista dei servizi dal file /etc/services, togliendo le righe che iniziano con il cancelletto e mettendo in ordine alfabetico i servizi e stampando solo servizio e porta separati da un tab.


cat /etc/services | grep -v "\#" | awk '{ print $1 "\t" $2 }' | sort | more
Versione 2 (visualizza solo servizio porta in ordine ascendente ed eliminando ogni altra informazione ed espandendo il tab a 20 caratteri per ragioni di formattazione; con intestazione)

echo –e “Servizio\tPorta”

cat /etc/services | awk '{ if ($1 != "") print $1 "\t" $2 }' | grep -v "^#" | sort +1 -ng | expand -t 20 | sed 's/\/...//'
Esercizio (filesystem, fstab, fsck): creazione di una nuova partizione

Per creare un nuovo filesystem associato ad una nuova partizione su disco già pieno:

1. Partire in single user mode

2. umount /dev/hda7 (file system di / che deve essere ridimensionato)

3. e2fsck /dev/hda7 (prima della resize)

4. parted /dev/hda (utilizzare resize con numero di minor - print ed effettuare il resize della partizione)

5. reboot macchina

6. sempre in single user mode usare fdisk e creare una nuova partizione logica (/dev/hda9 - n - l -w) utilizzando lo spazio liberato

7. reboot macchina

8. mke2fs /dev/hda9 (crea un nuovo filesystem ext2 sulla partizione logica nuova)

9. e2fsck /dev/hda9 oppure fsck.ext2 /dev/hda9

10. vi /etc/fstab e aggiungere

/dev/hda9 /nuovo ext2 defaults 1 2

11. creare il mount point /nuovo

12. provare con mount /nuovo e df -k o df -h

13. controllare /etc/mtab

14. fare il reboot e controllare che il nuovo filesystem sia stato montato


  • Quota, filesystem (fstab, mtab)

  • Link simbolici ed hard links (accennare agli inode, il comando ln per creare link, ln –s crea un link simbolico).





Download 1.08 Mb.

Share with your friends:
1   2   3   4   5   6   7   8   9   10   11




The database is protected by copyright ©ininet.org 2024
send message

    Main page