Sei sulla pagina 1di 26

SHELL BASH - GUIDA Livello Principiante

Lo scopo di questo tutorial quello di consentire a un principiante a familiarizzarsi con la riga di comando.
Questo piccolo tutorial vi aiuter a familiarizzare con la Shell come un software e non come un linguaggio di
programmazione. Cercheremo di essere abbastanza breve in ogni capitolo (spiegazioni concise e chiare),
tuttavia questo tutorial pu essere piuttosto lungo, quindi l'idea di creare diversi capitoli. Non necessario
passare attraverso il tutorial dall'inizio alla fine. possibile passare direttamente al capitolo che si desidera.

1. Cosa la shell
2. Come accedere alla linea di comando
3. Le console virtuali

1. Esempio: Accedere alla console 3 dall'interfaccia grafica

4. Connessione dentro una console virtuale

1. Esempio
5. Il prompt di comandi della shell dopo la connessione
6. Tornare Tornare alla modalit grafica da una console virtuale
7. L'ambiente shell
8. Variabili d'ambiente per conoscere

1. Esempio di visualizzazione
9. File di configurazione
10. Perch usare la linea di comando
11. Nozioni di comando

1. Esempio: il comando ls
12. Dove si trovano i comandi

1. Esempio: ricercare l'esistenza del comando iptables con which


13. La documentazione (le pagine "man")

1. Esempio
14. La struttura di una pagina man
15. Qualche regole per capire SYNOPSYS e/o OPZIONI
16. Comandi base
17. Eseguire un comando
1. Esempio: Avvio di firefox dalla linea di comando

18. Cambiare identit (cambiare utente)


19. La radice
20. Le directory "." e ".."
21. Dove sono (posizione nella struttura)
22. Il pathname assoluto
1. Esempio

23. Il pathname relativo


1. Esempio: La directory corrente
2. Esempio: La parent directory..

24. Come si sposta nella struttura


25. Cronologia
26. Completamento dei comandi
1. Esempio: Comando tail utilizzando il percorso assoluto
2. ls /u + TAB + b + TAB + ta + TAB + TAB + i + TAB
27. Edizione dei file (vi,vim)
1. Passo I: Vivamente consigliato
2. Passo II: Apertura di un file
3. Passo III: Modifica di un file
4. Passo IV: Fine della modifica di un file
5. Passo V: Salvare le modifiche e uscire
28. Gli alias
29. Le ridirezioni e pipeline
1. Le ridirezioni
2. Esempi di ridirezione
3. i Pipeline
4. Esempio di pipeline

30. I metacaratteri della Shell


31. Astuzie
32. Midnight Commander (alias mc)
33. Errore: Command not found
1. Esempio: Ls al posto di ls

34. Errore: No such file or directory


35. Errore: permesso negato
36. Suggerimenti di Scrittura
1. Esempio: Rimozione della radice a causa di un semplice spazio
2. Un altro esempio con lo spazio bianco

37. Eseguire uno script


Cosa la shell
Per avere una risposta pi esatta vedi questo sito SHELL. La shell un programma che si trova nella
directory /bin. Si distinguono pi di una shell:

La /bin/sh shell BourneLa /bin/bash Bourne Again SHellLa /bin/csh C shell La /bin/ksh Korn shellLa /bin/tcsh shell
migliorataLa /bin/zsh/ Z shell

Il resto di questo tutorial riguarda solo la shell bash che la shell di default per le distribuzioni GNU/Linux.
La shell permette di eseguire i comandi, esplorare il sistema, creare, modificare ed eliminare file, ecc.

Come accedere alla linea di comando


Per accedere alla linea di comando, possibile utilizzare un terminale (Xterm, Kterm, Gterm) o Konsole.
Kterm un terminale emulatore multilingue basato su Xterm. Le principali differenze tra kterm e xterm
sono la possibilit di trattare testo multilingue codificato in ISO2022 e la visualizzazione di un testo colorato
(Vedi man kterm). Sono disponibili due possibilit: Utilizzare il menu Desktop, Gnome, Kde, ecc., (questo
il metodo raccomandato). Utilizzare il menu avviare un programma. Nella finestra aperta, digita il nome
del terminale e convalidare. La finestra avviare un programma pu essere aperta con ALT + F2. Utilizzare
le console virtuale (ce ne sono 6).

Le console virtuali
La console virtuale (tty1 a tty6) una schermata nera dove appare un prompt dei comandi, nella forma
login: Dall'interfaccia grafica, possibile accedere ad una console virtuale utilizzando la combinazione di
tasti CTRL + ALT + FN, N essendo una cifra da 1 a 6.

Esempio: Accedere alla console 3 dall'interfaccia grafica

CTRL + ALT + F3. Una volta dentro la console virtuale, la navigazione tra le diverse console virtuale si fa
con la combinazione dei tasti ALT + FN, N essendo una cifra da 1 a 6

Connessione dentro una console virtuale


Al prompt login, digitare il login dell'utente, e convalidare premendo Entra. Si visualizzer cos il prompt
Password. Digitare la password dell'utente e convalidare. La password non si visualizza sulla schermata
per ragioni di sicurezza. Il fatto di non vedere la schermata di ci che si digita, non deve preoccuparci:

Se la password valida, il prompt di comandi deve visualizzarsi, come in seguito, indicando che la
connessione riuscita:
Esempio

Il prompt di comandi della shell dopo la connessione


Il prompt di comandi della shell ha generalmente la forma seguente: nome@computer ~ $; Nome -
rappresenta il login dell'utente connesso; Computer - rappresenta il nome del computer; ~ indica la
directory personale /home/utente; $ significa che si connesso come utente. Se al poste di $ si
visualizzer il simbolo #, allora si connesso come superutente (root). Tieni presente che i sistemi
Gnu/Linux utilizzano per convenzione # per root e $ per un utente diverso di root. Questo comportamento
pu essere cambiato modificando la variabile d'ambiente PS1, ma fortemente NON raccomandato.

Tornare Tornare alla modalit grafica da una console


virtuale
Per Tornare alla modalit grafica da una console virtuale, utilizza la combinazione dei tasti ALT + F7.

L'ambiente shell
Dopo la connessione, l'utente connesso al suo ambiente. Ci significa che la shell mette a sua
disposizione delle variabili d'ambiente, cio un contenitore memoria in cui sono memorizzati i dati. Per
visualizzare il contenuto di una variabile d'ambiente, pu essere usato il comando echo
$NOME_VARIABILE. Il nome delle variabili d'ambiente convenzionalmente in maiuscole, sensibile alle
maiuscole (case sensitive).

Variabili d'ambiente per conoscere


HOME, USER, GROUPS, UID, PWD, SHELL, PATH, HOSTNAME: HOME: contiene la directory d'utente;
USER: contiene il login d'utente; PWD: contiene la directory corrente; SHELL: contiene il nome della shell
di connessione; PATH: contiene l'elenco delle directory dove si trovano i comandi che l'utente pu
eseguire; HOSTNAME: contiene il nome del computer; HISTSIZE: contiene la dimensione massima dei
comandi eseguiti contenuti nel file cronologia; PS1: contiene le impostazioni di visualizzazione del prompt.

Esempio di visualizzazione

Il comando set permette di visualizzare le variabili e il loro contenuto:

File di configurazione
Quando ci si collega ad una console virtuale o si apre un terminale in modalit grafica, la shell utilizza le
informazioni contenute in alcuni file (.bashrc, .bash_profile, ecc.):
Il comportamento della shell pu essere cambiato modificando questi file. Il file .bashrc per esempio
utilizzato nel capitolo sugli alias. Per quanto riguarda la configurazione della shell bisogna aspettare un po'.
Potrai imparare a farlo nel corso del tempo, quindi non essere impaziente.

Perch usare la linea di comando


Molte soluzioni sono date in linea di comando, non perch GNU/Linux non abbia un'interfaccia grafica, ma
per alcuni compiti, utilizzare la linea di comando molto pi pratico e pi potente del famoso mouse.

Nozioni di comando
Un comando un file eseguibile. L'esecuzione di un comando pu essere differente secondo il caso. I
comandi usati in questo capitolo sono riportati a titolo di esempio, quindi non ostinarsi a capirli se si ha
problemi con alcuni di essi. I comandi di base sono descritte pi avanti.

Esempio: il comando ls

Il comando ls visualizza il contenuto di una directory. Vedi man ls per ulteriori informazione. Senza
argomento e senza opzione:

Senza argomento e con una o pi opzione(i):

Con argomento:
Con argomento con una o pi opzione(i):

Dove si trovano i comandi


I comandi che si pu eseguire dal terminale si trovano in alcune directory sul vostro sistema. La variabile
PATH (in italiano: "percorso") contiene un elenco di directory che contengono i comandi disponibili. Per
accedere a tutti i comandi si deve essere generalmente root. Per trovare la posizione di un comando, si
usa "whereis" (in italiano "dove "):

O "which" (in italiano "quale - chi - cosa"):


La differenza tra whereis e which: Whereis la ricerca i file eseguibili, le sorgenti e le pagine di manuale di
un comando; Which la ricerca nella variabile PATH i file eseguibili.

Esempio: ricercare l'esistenza del comando iptables con which

L'utente yogi ricerca se il comando iptables esiste sul sistema, il risultato per lui NO:

Verificando come root:

In realt il comando iptables esiste sul sistema in /sbin. La directory /sbin non trovandosi nel PATH
dell'utente yogi, which invia un risultato negativo. Brevemente, whereis pi rassicurante.
La documentazione (le pagine "man")
Accedere alla documentazione in linea di comando: man comando; man N comando. N il numero della
pagine man (si vede in alto a destra). Generalmente nella parte SEE ALSO di una pagine di "man", si trova
un elenco di comandi raccomandati per consultare avendo rapporto diretto con il comando il quale si legge
il manuale.

Esempio

Esecuzione del comando man crontab:

Il prompt sparisce e la pagina man sar visualizzata:

vedi la parte SEE ALSO e noti le pagine raccomandate ci significa che si pu digitare: man 5 crontab
man 8 cron Il tasto Q per uscire dalla pagina man e tornare al prompt:
Per ottenere una descrizione di un comando, si usa l'opzione "-f": man -f comando; whatis comando. Per
trovare le voci che contengono nella loro presentazione di una parola chiave, l'opzione "-k": man -k
comando.

La struttura di una pagina man

COMMAND(1) Manuale dell'utente Linux COMMAND(1)NAME comando - sintesi delle azioni del
comandoSYNOPSYS <sintassi completa del comando>DESCRIPTION Delle spiegazione concernenti l'esecuzione del
comandoOPTIONS Elenco delle opzioni disponibile e ci che fannoFILES I file usati dal comando SEE ALSO
comandi_cugini(1), comandi_fratelli(5), etc.BUGS I bug esistenti nel comandoAUTHOR Il nome dell'autore

Qualche regole per capire SYNOPSYS e/o OPZIONI

- Testo isolato, senza [] (parentesi quadrati<ital/>), {}(<ital>parentesi graffe<ital/>) , <>(<ital>I parentesi uncinate o angolari o
chevron<ital/>), a digitare come tale
- Testo tra parentesi quadrati [] facoltativo- Testo tra parentesi graffe {} contiene le scelte da fare. le scelte sono separate
da | (<ital>pipe) o da virgula , comando -{a|b} ci comando -a o comando -b ma non comando -ab- Testo tra parentesi
uncinate <> deve essere sostituito col testo appropriato.- I parentesi (...), usati per i parametri tale i nomi dei file- I parentesi
quadrati [] e I parentesi uncinate <> possono essere combinati [<nome_file>] - facoltativo ma se gli usi devi scrivere il
nome del file- I parentesi quadrati [] e I parentesi graffe {} possono essere combinati [--opzione={a|b|c}]

Comandi base
cat - Legge (concatena) uno o pi file, visualizzazione sull'uscita standardcd - ChangeDirectory, cambia
directorychmod - CHangeMODe - cambia il mode di accesso (permissioni di accesso) di uno o pi filechown -
CHangeOWNer - cambia il proprietario di uno o pi filecp - copiare dei filecrontab - pianificazione dei compiti (task)cut
- Rimuove le specifiche parti del testo di ogni riga di un filedate -Visualizza la data nel formato richiestodd -
DevicetoDevice - copia byte per byte tutto o parte del contenuto di un dispositivo (di solito di stoccaggio) ad un altro
dispositivo.df - visualizzare la quantit di spazio libero su tutti i file systemdu - DiksUsage - l'uso del discoecho -
Visualizza il testo nello standard output (sullo schermo)exit - ferma l'esecuzione della shellfind - ricerca di filefsck -
FileSystemChecK - verifica l'integrit dei file sistemagrep - ricerca in uno o pi file le righe che corrispondono ad un
modellogroupadd- Aggiungere un gruppo di utentigunzip - decomprimere i filegzip - comprimere i filehead - visualizza le
prime righe (di default 10) di un filehelp - visualizza una guida sui comandi interni di bashkill - inviare un segnale ad un
processoless - programma di visualizzazione allo schermoln - creazione di linkls - elencare il contenuto delle
directoryman - visualizza le pagine di manualemkdir - MaKeDIRectory - creare una directorymkfs - MaKeFileSystem -
crare un file sistemamore - programma di visualizzazione allo schermomount - montare un sistema di filemv -
spostare, rinominare un fileps - visualizza i processi in esecuzionepwd - Print name of current/working directory -
visualizza il percorso completo della directory correnterm - eliminazione di filermdir -Remove empty directories -
Eliminazione di una cartella vuotatail - visualizza le ultime 10 righe di un filetar - creazione di archivisu - Substitute
User identity ou Switch User - prendere l'identit di un utenteuname - Visualizza delle informazioni sul sistema.useradd -
aggiungere un utentewhereis - individuare un comando

Eseguire un comando
Ci sono tanti modi per eseguire un comando: Utilizzando semplicemente il suo nome; Utilizzando il
percorso assoluto; Utilizzando il percorso relativo; Utilizzare alias (utile per i comandi utilizzati di frequente e
che sono a lungo). Un comando pu essere eseguito in background utilizzando la e commerciale (&) dopo
il nome del comando. L'esecuzione di un comando in background permette di ripristinare la mano alla shell
dopo l'esecuzione.

Esempio: Avvio di firefox dalla linea di comando

Cambiare identit (cambiare utente)


Dalla shell puoi prendere l'identit di un altro utente esistente sul sistema, compreso l'utente root. Puoi
utilizzare il comando su o su -. Vedi Utilizzare il comando su per ulteriori informazioni:
La radice
Nei sistemi della famiglia Unix, la radice rappresenta il top della struttura di directory. rappresentata dalla
/ (slash) e significa "root" (radice in italiano). Tutte le directory sul sistema sono legati alla radice,
direttamente o indirettamente.

Le directory "." e ".."


. indica la directory corrente. .. indica la parent directory:
Dove sono (posizione nella struttura)
Molto importante, quando si connessi in una shell, sapere dove questa si trovi all'interno della struttura.
Il comando pwd (PrintWorkingDirectory) visualizza la tua posizione nella struttura:

Il pathname assoluto
Il pathname (percorso) assoluto rappresenta la struttura intera dei file, partendo dalla radice.

Esempio

Il file b.txt si trova in /home/user/doc/text. Sei in /home/user/ascii. Il pathname assoluto a b.txt


/home/user/doc/text/b.txt:
Qualunque sia la tua posizione nella struttura utilizzare il percorso assoluto il modo pi sicuro per
accedere al file desiderato.

Il pathname relativo
Il pathname per accedere ad un file la struttura riferito alla tua posizione nella shell. Usiamo le notazioni .
e/o .. . permette di scendere nella struttura della directory corrente; .. permette di salire nella struttura per
raggiungere un'altra directory.

Esempio: La directory corrente

Il file b.txt si trova in /home/user/doc/text. Siamo in /home/user. Il percorso relativi verso b.txt
./doc/text/b.txt:

Esempio: La parent directory..

Il file b.txt si trova in /home/user/doc/text. Siamo in /home/user/ascii. Il percorso relativi verso b.txt
../doc/text/b.txt:
La directory ascii si trova in /home/yogi quindi scrivendo .. utilizzer la parent directory /home/yogi come
punto di partenza poi in seguito vado doc/text (si noti che non /doc/text - che avr legato doc della
radice /).

Come si sposta nella struttura


Per spostarsi nella struttura utilizzi il comando cd (cd /percorso/verso/directory). Con pwd puoi verificare
la tua nuova posizione nella radice:

Cronologia
I comandi eseguiti sono registrati nella cronologia. La variabile HISTSIZE contiene il numero massimo di
comandi per la registrazione. possibile accedere alla cronologia con il comando history:

history [n] | less

n l'opzione n consente di visualizzare i n ultimi comandi (facoltativo) less il comando "less" consente di
navigare attraverso cronologia le frecce alto e basso consente di navigare attraverso cronologia !n
consente di eseguire il comando corrispondente al numero "n" nell'elenco senza bisogna digitarlo.

Completamento dei comandi


Digitare un comando in un terminale non sempre una cosa facile. Nonostante questo, non preoccuparti.
La shell permette il completamento dei comandi.

Esempio: Comando tail utilizzando il percorso assoluto

Presuppone che devo entrare in /usr/bin/tail. Il completamento ci permette di realizzare risparmi per
quanto riguarda la scrittura del comando e, al tempo stesso la sicurezza della sintassi. Il completamento si
ottiene utilizzando il tasto TAB. Cominciamo con il primo carattere: Digito /u e premo TAB; La shell
completa e scrive /usr/; A questo momento aggiungo b quindo ho /usr/b; Premo un'altra volta TAB e avr
/usr/bin/; Aggiungo ta, ora ho /usr/bin/ta; Premo 2 volte TAB; La shell sul lio sistema trova 4
corrispondenze; tac tack tail tasksel; Continuo e aggiungo una i; Quindi avr /usr/bin/tai ; Premo di
nuovo TAB ; E ottengo /usr/bin/tail.

ls /u + TAB + b + TAB + ta + TAB + TAB + i + TAB

vero che spiegando ci sembra longo, ma molto rapido in realt.

Edizione dei file (vi,vim)


L'editore vi. Molto utile soprattutto quando si rileva un problema con la modalit grafica.

Passo I: Vivamente consigliato

Copia di backup del file originale, utilizzare il comando cp (copia), seguito dal file sorgente stesso seguito
dal file di destinazione (non esiste qui), aggiungiamo .originale alla fine del nome del file per distinguere la
copia di backup dal file:
Passo II: Apertura di un file

Passo III: Modifica di un file

Premere il tasto i entrare in modalit inserimento, in basso a sinistra si vedr --INSERTION--. Utilizzare le
frecce (a destra, a sinistra, in alto, in basso) o successiva Pg. e Pg Prec. per navigare nel file. L'inserimento
di caratteri si fa al di sopra del cursore con uno spostamento a destra del cursore. Il tasto "del" permette di
rimuovere il carattere il cursore:
Passo IV: Fine della modifica di un file

Premi il tasto esc quando avrai finito. --INSERTION-- sparisce:

Passo V: Salvare le modifiche e uscire

Premi il tasto : (devi vederli in basso a sinistra), scrivi wq (per WriteQuit), premere Enter:

Tornare nel terminale:


Gli alias
L'uso di alias molto pratico per i lunghi comandi che vengono utilizzati regolarmente. Si evita ridigitarli.
L'uso eccessivo alias pu fare dimenticare i comandi e le loro opzioni. Gli alias si scrivono nel file .bashrc
nel modo seguente (vedi il capitolo XXVIII Modifica di un file (vi, vim)): alias nome='comando'; Dopo
aver modificato /home/user/.bashrc, digita:

source /home/user/.bashrc

Per prendere in considerazione immediatamente gli alias. Il comando alias visualizza gli alias esistenti.

Le ridirezioni e pipeline
Per prima cosa si inizia con una piccola spiegazione dei descrittori di "input - output": Tutto ci che scrivi
nella shell si chiama STDIN (STandarDINput). Tutto ci che vedi allo schermo pu essere: STDOUT
(STandarDOUTput); STDERR (STandarDERRor). Questi descrittori sono numerate come segue:

0: Input standard (STDIN) <---------------- tastieraProcesso 1: output standard (STDOUT) --------------->


schermo 2: output errore (STDERR) ----------------> schermo

Le ridirezioni

Cosa una ridirezione? la capacit di dirigere il risultato di un comando utilizzando altre destinazioni che
i descrittori standard. Per raggiungere una ridirezione viene utilizzato: comando > file - ridirezione in
modalit scrittura per il file. Il file viene creato se non esiste. Il suo contenuto verr sostituito dal nuovo se il
file esiste gi; comando >> file - ridirezione in modalit aggiunta per il file. Il file viene creato se non esiste.
Il risultato verr aggiunto alla fine del file; comando < file - il comando legge dal file.

Esempi di ridirezione

Inviare il contenuto del file1 in file2. File2 se esiste, il suo originale contenuto verr eliminato, file2 viene
creato se non esiste:

Inviare il contenuto del file1 in file2 - modalit aggiunta. File2 se esiste, il contenuto del file1 viene aggiunto
alla fine del file2 se file2 non esiste, verr creato:

Ricerca nella root il file chiamato file.txt, gli errori, invece di essere inviati in STDERR (lo schermo) sono
inviati in /dev/null (sorta di cestino senza fine):

Ricerca nella root il file chiamato file.txt, gli errori, invece di essere inviati in STDERR (lo schermo) sono
inviati nel file errore.txt:

i Pipeline
comando1 | comando2 - il risultato di comando1 viene utilizzato da comando2comando1 & comando2 - i comandi
vengono eseguiti contemporaneamente, il comando1 viene eseguito in backgroundcomando1 && comando2 - se il
comando1 viene eseguito con successo il comando2 viene eseguitocomando1 || comando2 - il comando2 viene eseguito
soltanto se il comando 1 non viene eseguito con successocomando1;comando2 - i comandi vengono eseguiti in ordine

Esempio di pipeline

Il tubo | (pipe):

In un primo tempo eseguito perl -ne 'print unless /^\s*$/' guideshell per visualizzare il file sullo schermo,
le righe vuote essendo eliminate. Invece di visualizzare sullo schermo uso | per passare il risultato al
comando wc che conter il numero di righe di questo file. Il parallelismo &:

I 2 comandi vengono eseguiti simultaneamente. La dipendenza &&


Si noti che nel 1 caso i 2 comandi vengono eseguiti. Tuttavia, nel caso 2. Volontariamente ho fatto un
errore di sintassi per il 1 comando. La shell non guarda al 2 comando e si ferma dicendo che ech non
un comando riconosciuto. L'alternativa ||

Nel 1 caso, si noti che solo il 1 comando viene eseguito. Nel 2 caso, la shell visualizza un messaggio di
errore per il 1 comando, ma esegue comunque il 2. Il sequenziamento

echo a viene eseguito: aspetto 1 secondo; echo b viene eseguito: aspetto 2 secondi; echo c viene
eseguito.

I metacaratteri della Shell


Per facilitare i comandi la shell utilizza i metacaratteri, chiamati anche come caratteri generici o joker:
* - corrisponde a qualsiasi carattere e numero di caratteri? - corrisponde ad un carattere[...] - corrisponde ad un
carattere tra i parentesi quadrati

Coi parentesi quadrati si pu anche utilizzare gli intervalli.

[0-9] - Tutti caratteri compresi tra 0 e 9[a-zA-Z] - tutte le lettere sono comprese nell'intervallo (minuscole e maiuscole)

Astuzie

cd: tornare nella directory personalecd -: tornare nella directory precedente (soltanto se hai eseguito un un cd)Ctrl+l:
Cancellare la schermataCtrl+c: arresto di un comando Ctrl+z: sospendere (mettere in pausa) un comandoCTRL+t:
correzione di un errore di battitura invertendo 2 lettereCtrl+a: andare a capo lineaCtrl+e: andare alla fine della lineaCtrl+s:
interruzione dell'output nel terminale (nascondere l'input)Ctrl+q: annullare interruzione dell'output nel terminale
(visualizzare l'input)Ctrl+u: cancellare tutto a sinistra del cursoreCtrl+w: cancellare la parola a sinistra del cursoreCtrl+k:
cancellare la parola a destra del cursoreCtrl+y: incollare la battitura precedenteCtrl+d: cancellare il carattere corrente, se la
riga vuota sconnettereAlt+b: andare avanti, parola per parola nella linea di comandoAlt+f: andare indietro, parola per
parola nella linea di comandoAlt+d: cancellare la parola successivaAlt+t: Scambio la parola corrente con la parola
precedenteAlt+c: mette in maiuscola la lettera corrente, tutto il resto della parola corrente in minuscole, poi si sposta la
parola successivaAlt+l: mette in maiuscola dalla lettera corrente fino alla fine parola, poi si sposta la parola
successivaAlt+u: mette in minuscola dalla lettera corrente fino alla fine parola, poi si sposta la parola
successivaAlt+Backspace: cancella la parola precedente (equivalente a Ctrl+w)

Midnight Commander (alias mc)


Midnight Commander - manager in linea di comando e uno screenshot L'utilit consente di visualizzare,
creare, modificare, eliminare i file, ecc. Con mc possibile modificare i diritti, cambiare proprietario,
ricercare, connettersi ad un server ftp, ecc. mc pu essere usato come un browser.

Errore: Command not found


Vedi questo tutorial (Capitolo IV.3) PATH Un'altra causa per questo errore: fare attenzione al case
sensitive.

Esempio: Ls al posto di ls
Errore: No such file or directory
L'errore si visualizza quando si prova di eseguire un comando su un file che non esiste nel percorso dato.
Cerca il file col comando find per sapere se esiste sul disco per e qual' il suo percorso.

Errore: permesso negato


Si tratta di un problema di diritti di accesso. Leggere questo tutorial I permessi di accesso GNU/Linux.

Suggerimenti di Scrittura
La shell molto impegnativo per la scrittura dei comandi. I caratteri che hanno un senso speciale per la
shell devono essere utilizzati con i meccanismi di quoting per ottenere il carattere letterale. Caratteri che
hanno un senso speciale per la shell: Lo spazio bianco Il punto virgola ; Lo slash / Il backslash \ Il carattere
| (pipe) La e commerciale & Il punto . L'apostrofo semplici ( ' ) Le doppie virgolette (") In generale si deve
fare attenzione ai caratteri non-alfanumerici. Sensibile alle maiuscole (case sensitive) Se il comando
ls allora Ls non funzioner mai. Stessa cosa per i nome file e cartelle. Lo spazio bianco Prendiamo
l'esempio di un file nominato: mio file.txt. Se digita ls -l mio file.txt per vedere gli attributi di questo file, non
ottieni il risultato voluto. Perch? Perch la shell legge: visualizzare gli attributi dei file "mio" e "file.txt". Per
obbligare la shell a visualizzare ci che vogliamo, utilizziamo ci che mette a nostra disposizione: ls -l mio\
file.txt - Sintassi ok (il backslash permette di leggere lo spazio bianco come carattere e non come
separatore di argomenti del comando); ls -l 'mio file.txt' - Sintassi ok (gli apostrofi trattano ogni carattere
letteralmente); DOMANDA: Come posso leggere un apostrofo letteralmente tra due apostrofi? Lo spazio
ha anche il ruolo di separare gli argomenti in linea di comando; Un semplice spazio utilizzato in un posto
errato pu causare danni al sistema intero.

Esempio: Rimozione della radice a causa di un semplice spazio

Il root vuole rimuovere una cartella. utilizza il comando rm con le opzioni f (force) e R (ricorsivo). La cartella
da cancellare nominata da_cancellare e si trova in /home/yogi/da_cancellare Il comando corretto
Il comando sbagliato (errore battiture) - sistema rimosso:

Spiegazioni: Si noti che nel 2 caso, ho accidentalmente digitato uno spazio tra / e home. Che cosa
successo? Per la shell col comando rm deve prima rimuovere la root / e poi home/yogi/a_supprimer. Quindi
si cancellano tutti i dati sul vostro sistema. Nota Bene: fare attenzione a tutto quello che si digita nella shell.
Una soluzione per evitare questo di utilizzare il completamento dei comandi. Se si digita / e poi il tasto
TAB 2 volte, verranno visualizzate diverse scelte sullo schermo. Normalmente sono le directory di root:
boot, bin... home... var. Basta aggiungere una h per home e di nuovo TAB 2 volte e cos via. Nota Bene:
prendi il tempo per leggere il seguente avviso.

Un altro esempio con lo spazio bianco

Per riconoscere lo spazio come un carattere e non come un separatore di parametri deve essere protetto
(mettere un backslash davanti). Crea un file vuoto nominato aa bb:
Si noti che il risultato ottenuto non quello voluto. Voliamo avere un unico file aa bb e non un file aa e un
file bb. Perch abbiamo avuto questo? Perch la Shell, quando abbiamo digitato aa bb , ha capito che
deve creare un file aa e un file bb. Correzione:

Ora qualcuno ti dir: ma non abbiamo creato un file aa bb ma aa\ bb. In realt abbiamo creato aa bb. Il
carattere \ permette di riconoscere lo spazio come carattere letterale. Il comando ls -l conferma l'esistenza
del file aa bb. Al posto del backslash puoi utilizzare gli apostrofi touch 'aa bb'. Che cosa possiamo
imparare da tutto questo? Ogni volta che si desidera utilizzare caratteri non alfanumerici, come $, spazio,
\, e cos via, come un carattere letterale, allora deve essere preceduto da backslash o messo tra apostrofi.
I comandi lunghi che hanno pi di una riga: Se il comando diventa troppo lungo si pu muoversi alla
prossima riga utilizzando il carattere: \.

Eseguire uno script


Eseguire uno script shell. Nota Bene: l'articolo originale stato scritto da lami20j contribuente di
CommentCaMarche.

Il documento intitolato SHELL BASH - GUIDA Livello Principiante da CCM (it.ccm.net) reso disponibile sotto i termini della licenza
Creative Commons. possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finch questa
nota appaia chiaramente.

Potrebbero piacerti anche