Utilizzare la shell Unix su Mac OS

applematrix

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
ls – list directory contents

SYNOPSIS
ls [-ABCFGHLPRTWZabcdfghiklmnopqrstuwx1] [file …]

DESCRIPTION
For each operand that names a file of a type other than directory, ls
displays its name as well as any requested, associated information. For
each operand that names a file of type directory, ls displays the names
of files contained within that directory, as well as any requested, asso-
ciated information.

If no operands are given, the contents of the current directory are dis-
played. If more than one operand is given, non-directory operands are
displayed first; directory and non-directory operands are sorted sepa-
rately and in lexicographical order.

The following options are available:

-A List all entries except for . and … Always set for the super-
user.

-B Force printing of non-printable characters (as defined by
ctype(3) and current locale settings) in file names as \xxx,
where xxx is the numeric value of the character in octal.

-C Force multi-column output; this is the default when output is to
a terminal.

-F Display a slash (`/’) immediately after each pathname that is a
directory, an asterisk (`*’) after each that is executable, an at
sign (`@’) after each symbolic link, an equals sign (`=’) after
each socket, a percent sign (`%’) after each whiteout, and a ver-
tical bar (`|’) after each that is a FIFO.

-G Enable colorized output. This option is equivalent to defining
CLICOLOR in the environment. (See below.)

-H Symbolic links on the command line are followed. This option is
assumed if none of the -F, -d, or -l options are specified.

-L If argument is a symbolic link, list the file or directory the
link references rather than the link itself. This option cancels

[…]

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
back.png cason.png home.png linkoff.png nexon.png
bandoff.png cason2.png homeoff.png linkon.png preoff.png
bandon.png engoff.png homeon.png liveoff.png preon.png
bookoff.png engon.png idxoff.png liveon.png
bookon.png foto00.png idxon.png mercoff.png
casoff.png foto01.png itaoff.png mercon.png
casoff2.png foto02.png itaon.png nexoff.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

Torna alla HomePage

3 risposte a “Utilizzare la shell Unix su Mac OS

  1. 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

  2. Complimenti per la guida merita proprio di finire tra i miei seganblibri di firefox
    potresti anche farne un pdf

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...