SHELL BASH - GUIDA Livello Principiante

Ultimo aggiornamento 3 giugno 2009 alle 10:37 da n00r
Pubblicato da asevere



Introduzione


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.

Cercherò 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.

II. 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 Bourne
- la /bin/bash Bourne Again SHell
- la /bin/csh  C shell 
- la /bin/ksh  Korn shell
- la /bin/tcsh shell migliorata
- la /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.

III. 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, * visualizzare testo colorato (Vedi man kterm).


Sono disponibili due possibilità:
  • utilizzare il menù Desktop (Gnome, Kde, etc.). Questo è il metodo raccomandato.
  • utilizza il menù 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 (c'è ne sono 6).

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

V. Connessione dentro una console virtuale


Al prompt login:, digitare il login dell'utente, e convalidare premendo Entra, il prompt Password: si visualizza. digitare la password dell'utente e convalidare.
  • la password non si visualizza alla schermata per ragioni di sicurezza. il fatto di non vedere alla schermata 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:



VI. 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 $ il simbolo # si visualizza, 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!

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

VIII. L'ambiente shell


Dopo la connessione, l'utente è connesso al suo ambiente. Ciò significa che la shell mette alla 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, il comando echo $NOME_VARIABILE può essere usato.

Il nome delle variabili d'ambiente è convenzionalmente in maiuscole, è sensibile alle maiuscole (case sensitive)

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


X. 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,...)


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 dovi aspettare un pò. Potrai imparare a farlo nel corso del tempo, quindi non essere impaziente.

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

XII. 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)

XIII. 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 - ricerca i file eseguibili, le sorgenti e le pagine di manuale di un comando
  • which   - ricerca nella variabile PATH   i file eseguibili

Esempio : ricercare l'esistenza del comando iptables con which


1. l'utente yogi ricerca se il comando iptables esiste sul sistema, il risultato per lui è NO


2. 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ù est plus rassicurante.

XIV. 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 :


1. esecuzione del comando man crontab


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


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

XV. La struttura di una pagina man


COMMAND(1)        Manuale dell'utente Linux        COMMAND(1)

NAME
     comando - sintesi delle azioni del comando

SYNOPSYS
    <sintassi completa del comando>

DESCRIPTION
    Delle spiegazione concernenti l'esecuzione del comando

OPTIONS
    Elenco delle opzioni disponibile e ciò che fanno

FILES
    I file usati dal comando 

SEE ALSO
    comandi_cugini(1), comandi_fratelli(5), etc.

BUGS
    I bug esistenti nel comando

AUTHOR
    Il nome dell'autore

XVI. 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}]

XVII. Comandi base


cat     - Legge (concatena) uno o più file, visualizzazione sull'uscita standard
cd      - ChangeDirectory, cambia directory
chmod   - CHangeMODe - cambia il mode di accesso (permissioni di accesso) di uno o più file
chown   - CHangeOWNer - cambia il proprietario di uno o più file
cp      - copiare dei file
crontab - pianificazione dei compiti (task)
cut      - Rimuove le specifiche parti del testo di ogni riga di un file
date    -Visualizza la data nel formato richiesto
dd      - 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 system
du      - DiksUsage - l'uso del disco
echo    - Visualizza il testo nello standard output (sullo schermo)
exit    - ferma l'esecuzione della shell
find    - ricerca di file
fsck    - FileSystemChecK - verifica l'integrità dei file sistema
grep    - ricerca in uno o più file le righe che corrispondono ad un modello
groupadd- Aggiungere un gruppo di utenti
gunzip  - decomprimere i file
gzip    - comprimere i file
head    - visualizza le prime righe (di default 10) di un file
help    - visualizza una guida sui comandi interni di bash
kill    - inviare un segnale ad un processo
less    - programma di visualizzazione allo schermo
ln      - creazione di link
ls      - elencare il contenuto delle directory
man     - visualizza le pagine di manuale
mkdir   - MaKeDIRectory - creare una directory
mkfs    - MaKeFileSystem - crare un file sistema
more    - programma di visualizzazione allo schermo
mount   - montare un sistema di file
mv      - spostare, rinominare un file
ps      - visualizza i processi in esecuzione
pwd     - Print name of current/working directory - visualizza il percorso completo della directory corrente
rm      - eliminazione di file
rmdir   -Remove empty directories - Eliminazione di una cartella vuota
tail    - visualizza le ultime 10 righe di un file
tar     - creazione di archivi
su      - Substitute User identity ou Switch User - prendere l'identità di un utente
uname   - Visualizza delle informazioni sul sistema.
useradd - aggiungere un utente
whereis - individuare un comando

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



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



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

XXI. le directory "." e ".."

  • .  indica la directory corrente
  • .. indica la parent directory




XXII. Dove sono ? (posizione nella struttura)


Molto importante, quando si è connessi in una shell, è sapere dove si trova all'interno della struttura

Il comando pwd (PrintWorkingDirectory) visualizza la tua posizione nella struttura.


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

XXIV. 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
gras>..</gras> 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 / )

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


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

XXVII. 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 /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à.

XXVIII. 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 vi


- premi il tasto : (devi vederli in basso a sinistra)
- scrivi wq (per WriteQuit)
- premere "Enter"


Tornare nel terminale


XXIX. 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, digiti
source /home/user/.bashrc

per prendere in considerazione immediatamente gli alias.

Il comando alias visualizza gli alias esistenti

XXX. 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) <---------------- tastiera

Processo           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 comando2
comando1 & comando2  - i comandi vengono eseguiti contemporaneamente, il comando1 viene eseguito in background
comando1 && comando2 - se il comando1 viene eseguito con successo il comando2 viene eseguito
comando1 || comando2 - il comando2 viene eseguito soltanto se il comando 1 non viene eseguito con successo
comando1;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

XXXI. 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)

XXXII. Astuzie


cd   : tornare nella directory personale
cd - : tornare nella directory precedente (soltanto se hai eseguito un un cd)
Ctrl+l : Cancellare la schermata
Ctrl+c : arresto di un comando 
Ctrl+z : sospendere (mettere in pausa) un comando
CTRL+t : correzione di un errore di battitura invertendo 2 lettere
Ctrl+a : andare a capo linea
Ctrl+e : andare alla fine della linea
Ctrl+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 cursore
Ctrl+w : cancellare la parola a sinistra del cursore
Ctrl+k : cancellare la parola a destra del cursore
Ctrl+y : incollare la battitura precedente
Ctrl+d : cancellare il carattere corrente, se la riga è vuota sconnettere
Alt+b : andare avanti, parola per parola nella linea di comando
Alt+f : andare indietro, parola per parola nella linea di comando
Alt+d : cancellare la parola successiva
Alt+t : Scambio la parola corrente con la parola precedente
Alt+c : mette in maiuscola la lettera corrente, tutto il resto della parola corrente in minuscole, poi si sposta la parola successiva
Alt+l : mette in maiuscola dalla lettera corrente fino alla fine parola, poi si sposta la parola successiva
Alt+u : mette in minuscola dalla lettera corrente fino alla fine parola, poi si sposta la parola successiva
Alt+Backspace : cancella la parola precedente (equivalente a Ctrl+w)

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

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



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

Soluzioni
- Cerca il file col comando find per sapere se esiste sul disco per e qual'è il suo percorso.

XXXVI. Errore: permesso negato


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

XXXVII. 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 ;
  • il 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.

1. Sensibile alle maiuscole (case sensitive)

Se il comando è ls allora Ls non funzionerà mai.
Stessa cosa per i nome file e cartelle.

2. 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 litteralmente)

DOMANDA : Come posso leggere un apostrofo litteralmente 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

a. comando corretto


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

QUINDI ATTENZIONE A TUTTO CIÒ 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, diverse scelte, verrano visualizzate 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.


PRENDI IL TEMPO PER LEGGERE IL PRESENTE 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 uno 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 litterale.
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.

3. I comandi lungo  che hanno più di una riga

Se il comando diventa troppo lungo si può muoversi alla prossima riga utilizzando il carattere  \

XXXVIII. Eseguire uno script


Eseguire uno script shell




____________________________
    
Nota: L'articolo originale è stato scritto da lami20j contribuente di CommentCaMarche
Migliori risposte per « SHELL BASH GUIDA Livello Principiante » in :
SHELL BASH - Guida Shell Principiante Vedi SHELL BASH - GUIDA Livello Principianti Introduzione II. Cosa è la shell ? III. Come accedere alla linea di comando IV. Le console virtuali Esempio : Accedere alla console 3 dall'interfaccia grafica V. Connessione dentro una console...
Linux - Lo shell Vedi Introduzione allo shell L'interprete di comandi è l'interfaccia tra l'utente e il sistema operativo, da cui il suo nome in inglese «shell», che significa «conchiglia». Lo shell è così incaricato di fare da intermediario tra il sistema operativo...
Sistemi UNIX - Lo shell Vedi Introduzione allo shell L'iterprete di comandi è l'interfaccia tra l'utente e il sistema operativo, da cui il suo nome inglese «shell», che significa «conchiglia». Lo shell è quindi incaricato di fare da intermediario tra il sistema operativo e...
[Bash] La variabile d'ambiente PATH VediLa variabile d'ambiente PATH I. Preambolo II. Cosa è la shell ? III. Definizione IV. Sessione dissezione V. Aggiungere una directory alla variabile PATH VI. Per concludere I. Preambolo Sotto la GNU/Linux, ci piaccia o no, siamo...
Eseguire uno script shell VediEseguire uno script Per poter eseguire uno script o un programma in riga di comando ci sono molte possibilità : *1. Il percorso assoluto *2. Il percorso relativo *3. Modificare la variabile PATH *Nota: Lo Sha...
[Shell] Creare un file vuoto VediPer creare un file vuoto, basta digitare la command seguente: > file si può anche utilizzare la command touch : touch file
Download EASEUS Partition Manager VediEaseUs Partition Manager Free è un ottimo software da avere sul proprio sistema. EaseUs Partition Manager partiziona in modo semplice e senza errori il disco rigido nelle dimensioni che scegli. Caratteristiche di EaseUs Partition Manager Home ...
Lsass - Lsass.exe - LSA shell VediLsass - Lsass.exe Il processo Lsass.exe (LSASS significa Local Security Authority Subsystem Service) è un processo di sistema di base di Windows 2000/XP che gestisce i meccanismi di sicurezza locale e di autentificazione degli utenti attraverso il...
Apparecchiature di rete - Il commutatore (switch) VediCommutatore Un commutatore (in inglese switch) è un ponte multiporta, cioè si tratta di un elemento attivo che agisce al livello 2 del modello OSI.Il commutatore analizza le trame che arrivano sulle porte di entrata e filtra i dati per...
Guida d'uso del forum di Kioskea.net VediPresentazione del forum Il forum di Kioskea è un luogo di scambio tra utilizzatori sul tema dell'informatica. Le persone che intervengono al forum sono dei volontari, desiderosi di aiutare gli utilizzatori nella ricerca delle informazioni. Dato...