Utilizzare la shell Unix su Mac OS

Vuoi iniziare ad usare il terminale Unix in Mac OSX?
Innanzitutto una piccola infarinatura su un sistema Unix. Ma proprio tre cose:
1) In un sistema Unix tutto è un file. É un pò riduttiva e non sarebbe neanche esatto al 100%, ma per adesso va bene così;
2) In Unix ogni utente ha il suo ambiente. Gli utenti sono contenuti in gruppi. L’Utente Che Tutto Può si chiama ROOT;
3) La struttura gerarchica delle cartelle va rispettata così com’è. Solo dalla tua cartella utente in giù fai come ti pare.
Una cosa fondamentale prima di cominciare: abilita l’utente root (l’utente che tutto può).
Ma ricordati: da grandi poteri derivano grandi responsabilità (Firmato l’Uomo Ragno).
Applicazioni -> Utility -> Gestione NetInfo.
Fai clic in basso a sinistra sul lucchettino e scrivi la tua password.
Menu Sicurezza -> Abilita Utente Root.
Scrivi due volte una password. Se te la dimentichi niente paura. Infila il primo cd di Panther, riavvia con C premuto e usa il Reset password. Vale per tutte le password tranne quelle Master di FileVault.
E SI COMINCIA…
Innanzitutto apri il terminale!
Applicazioni -> Utility -> Terminale.
Last login: Fri Apr 29 09:19:20 2005
Welcome to Darwin!
iBook:~ Gianluca$
La prima linea ti dice quando è stato fatto l’ultimo login prima di quello che hai fatto tu…
La seconda ti da il benvenuto.
La terza ti da le seguenti informazioni:
nomehost:dovetirovi chisei-cheshellusi
iBook = nome host
~ = la tua cartella home
Gianluca = il nome del tuo utente
$ = sei un utente (non root) su shell bash
Senza perderci in troppo chiacchiere sappi che ti potrà capitare di vedere al massimo altri due simboli:
% = sei un utente (non root) su shell tcsh
# = sei l’utente root. IN CAMPANA A QUELLO CHE FAI!
LISTA DEI COMANDI e MAN
Penso che nessun sistema operativo sia caritatevole come Unix. C’è un manuale dentro!
Per avere una lista dei comandi digita:
| ls /usr/bin | sort > comandi.txt |
Vai con il finder sulla tua casetta… Sorpresa! Una lista dei comandi!!
Di ogni comando puoi digitare man nomecomando e avrai una versione stampabile del comando!
esempio:
iBook:~ Gianluca$ man ls LS(1) BSD General Commands Manual LS(1) NAME SYNOPSIS DESCRIPTION If no operands are given, the contents of the current directory are dis- The following options are available: -A List all entries except for . and … Always set for the super- -B Force printing of non-printable characters (as defined by -C Force multi-column output; this is the default when output is to -F Display a slash (`/’) immediately after each pathname that is a -G Enable colorized output. This option is equivalent to defining -H Symbolic links on the command line are followed. This option is -L If argument is a symbolic link, list the file or directory the [...] |
per uscire dalla pagine man premi “q”.
COMANDI FONDAMENTALI
faccio una breve lista, per dettagli vedi il man.
GESTIONE DELLE CARTELLE (comandi cd – mkdir – rmdir)
cd Documenti – si sposta nella cartella Documenti;
mkdir Fotografie – crea la cartella Fotografie
rmdir Fotografie – cancella la cartella Fotografie (ottenibile anche con rm -r Fotografie)
cd .. – Torna su di una cartella
cd / – Torna alla cartella principale del Volume
cd ~ – Torna alla cartella utente (anche solo “cd” e basta)
GESTIONE DEI FILES (comandi ls – cat – more – touch – cp – rm – mv)
ls – mostra una lista di files
cat Ciccio – visualizza il contenuto del file Ciccio
more Ciccio – visualizza il contenuto del file Ciccio fermandosi ad ogni cambio pagina
touch Ciccio – se non esiste crea un file vuoto di nome Ciccio
cp Pippo Pluto – crea una copia di Pippo chiamandola Pluto
rm Pippo – cancella Pippo
mv ~/Documenti/Fattura.xls ~/Fatture/Fattura.xls – sposta il file Fattura.xls dalla cartella Documenti alla cartella Fatture (mv serve anche per rinominare un file)
COME SI DIGITA UN COMANDO?
Con pochissime eccezioni la sintassi Unix è sempre:
comando opzioni sorgente destinazione
comando = il comando che si vuole
opzioni = le opzioni che il comando ci offre vanno sempre specificate con un segno meno (- hypen) davanti
sorgente (se esiste) l’oggetto del comando
destinazione (se esiste) il risultato del comando
esempio: rinominami “Pippo” come “Pluto” se Pluto non esiste
| mv -n Pippo Pluto |
comando = mv
opzione = -n (non sovrascrive)
sorgente = Pippo
destinazione = Pluto
Nota bene: non è strano che un comando unix non dica niente se è andato bene. In questo caso non abbiamo output se il comando è corretto. Potremmo avere un errore se il nome del sorgente non è corretto o se (in questo caso grazie alla opzione -n) il file destinazione esistesse già. Se digitassimo “mv Ciccio CIao” al posto di “mv Ciccio Ciao” unix non dice niente. Per lui l’errore non c’è. NOn c’è errore di sintassi. Ma di logica sì (per noi).
NON MI STANCHERO’ MAI DI RIPETERLO: FATE ATTENZIONE PRIMA DI DARE INVIO!
Non ce corre dietro nessuno. Non abbiamo il gong…
DIREZIONE DELL’I/O
questo è molto importante
Normalmente Unix accetta l’input da tastiera e produce l’output (e gli eventuali errori) a video per default.
un classico esempio:
[1]
iBook:~ Gianluca$ ls -l
total 0
drwx—— 29 Gianluca Gianluca 986 29 Apr 10:52 Desktop
drwx—— 13 Gianluca Gianluca 442 29 Apr 11:12 Documents
drwx—— 36 Gianluca Gianluca 1224 12 Mar 15:18 Library
drwx—— 18 Gianluca Gianluca 612 28 Apr 13:55 Movies
drwx—— 46 Gianluca Gianluca 1564 28 Apr 10:56 Music
drwx—— 16 Gianluca Gianluca 544 28 Apr 13:55 Pictures
drwxr-xr-x 5 Gianluca Gianluca 170 8 Apr 18:55 Public
drwxrwxrwx 43 Gianluca Gianluca 1462 27 Apr 09:48 Sites
iBook:~ Gianluca$
[2]
iBook:~ Gianluca$ rmdir Fotografie
rmdir: Fotografie: No such file or directory
iBook:~ Gianluca$
Nel primo caso io ho digitato con la tastiera (input) il comando ls con l’opzione lista lunga (-l) e ho l’output a video. Poi ho provato a cancellare una cartella che non esiste (Fotografie) e ho ricevuto un errore sempre a video.
Ricordi quando hai digitato “ls /usr/bin > comandi.txt”? Hai chiesto la lista della cartella /usr/bin (che contiene i comandi unix), ma non l’hai vista a video. Lui ha direzionato l’output su un file che si chiamava appunto Comandi.txt
Possiamo poi decidere di specificare o l’uotput o l’errore.
Se ad esempio avessimo detto:
iBook:~ Gianluca$ ls Desktop Library Music Public Documents Movies Pictures Sites iBook:~ Gianluca$ rmdir Fotografie 2> errore.txt iBook:~ Gianluca$ |
Abbiamo cancellato la cartella Fotografie. Ma allora perché non ci ha dato erroe, visto che Fotografie non esiste? Perché abbiamo detto che l’errore (2) non va a video, ma va mandato (>) su un file errore.txt
Se infatti digitiamo:
iBook:~ Gianluca$ cat errore.txt rmdir: Fotografie: No such file or directory iBook:~ Gianluca$ |
DIREZIONI
< usa come input il file specificato
> usa come output il file specificato, sovrascrivendolo se esiste
>> usa come output il file specificato, aggiungendo dati già esistenti
STREAM
L’output di un comando infine può essere l’input di un altro che genera a sua volta l’out finale. Uno stream non è un output, quindi non si dirige con “>”, ma con il pipe (|).
Classico esempio se data una cartella voglio solo sapere quali sono i files con estensione .png basta un comando ls con la “wildcard” (carattere Jolly) *:
iBook:~/Sites Gianluca$ ls SITO engoff.png index.html SITO Files Miei engon.png itaoff.png back.png foto00.png itaon.png bandoff.png foto01.png linkoff.png bandon.png foto02.png linkon.png bookoff.png home.png liveoff.png bookon.png home.wav liveon.png casoff.png home_eng_00.html mercoff.png casoff2.png home_ita_00.html mercon.png cason.png homeoff.png nexoff.png cason2.png homeon.png nexon.png dis_ita_00.html idxoff.png preoff.png dis_ita_01.html idxon.png preon.png iBook:~/Sites Gianluca$ ls *.png |
Ma se voglio solo le directory ricoro ad un trucco: chiedo la lista in formato lungo (-l) e mi prendo solo le righe (grep) che rispttano il criterio di ricerca “riga che comincia” (^) “per la lettera d”:
iBook:~/Sites Gianluca$ ls -l | grep ^d drwxr-xr-x 10 Gianluca Gianluca 340 23 Apr 13:04 SITO drwxr-xr-x 11 Gianluca Gianluca 374 24 Apr 16:45 SITO Files Miei |
ls -l mi genera l’output di tutti i files e cartelle, che dato in pasto al comando grep “filtra” solo quelle che corrispondono ai criteri di ricerca.
Autore: Gianluca Cherubini
21 Settembre 2008 a 20:44
salve sono passato da poco a max os e ho gia un problemaccio … aprte la shell mi sono accorto di essere loggato come user e non come root .. non riesco a trovare ” Gestione NetInfo. ” su utility è normale ? uso leopard 10.5.4