Script Shell

  • Creatore Discussione Creatore Discussione Vik27
  • Data di inizio Data di inizio

Vik27

Nuovo Utente
21 Mag 2011
8
0
0
Ciao a tutti!
dovrei svolgere un esercizio con la Bash per cancellare tutti gli utenti il cui login inizia con pao (e.g. paolo, paola, etc..); mi viene richiesto anche di gestire il file /etc/passwd e la home directory.
Io avrei fatto così per la rimozione della home directory:

for u in $(grep 'pa' /etc/passwd | cut -d : -f 1)
do
rm -rf '/home/'$u
done

ma non so come fare a cancellare l'utente dal file passwd.

Grazie a chi vorrò darmi una mano!
 
Allora, grep 'pa' /etc/passwd ritorna tutte le righe che contengono la stringa 'pa' (che poi dovrebbe essere 'pao'). Quindi eventualmente anche una riga che contiene un utente 'pippa'. Per fare in modo che vengano selezionate solo le righe che iniziano con 'pao' dovresti usare grep '^pao' /etc/passwd.

Poi, cut -d : -f 1 seleziona il primo campo che è il nome utente. Il fatto che di solito le home degli utenti siano in /home/<nomeutente> non vuol dire che questa sia la regola. Infatti nel file /etc/passwd c'è un campo specifico (il sesto) per la home dell'utente, quindi sarebbe da usare cut -d : -f 6.

In ultimo per eliminare dal file le righe degli utenti si può usare sed:
sed '/^pao/d' /etc/passwd
 
Grazie Trogo per la esauriente spiegazione!
Sono alle prese anche con awk e spesso mi dà degli errori (magari di sintassi) che non riesco a spiegarmi e perdo un sacco di tempo prima di trovarli.
Dico un'eresia: non esiste un debug o q.cosa che gli assomigli?

Grazie ancora.
 
Di niente, ma prova tutto prima, eh!!

Non sono un esperto di bash, giusto quello che serve per sopravvivere, ma non credo che esista un debugger per awk...
 

Discussioni simili