Linux: Bash shell
Quando vi loggate la
prima volta in un sistema UNIX, vi si
presenta qualcosa del genere: 33#33 Si chiama
prompt.
Come puo suggerire il nome, vi chiede di inserire un comando.
Ogni comando UNIX e una sequenza di lettere,
numeri e caratteri, senza spazi.
Alcuni comandi validi sono : mail, cat e
CMU_is_Number-5,ecc . Alcuni caratteri non sono
permessi, verranno elencati piu avanti.
UNIX e anche case-sensitive
(sensibile al maiuscolo/minuscolo) ; cioe cat
e Cat sono comandi diversi....
Il prompt viene visualizzato da un programma
speciale, la shell.
La shell accetta comandi e li esegue ;
esistono anche programmi scritti in un linguaggio proprio
della shell , e si chiamano "shell
script''.
In UNIX ci sono due tipi principali di shell,
le Bourne shell e le Cshell.
Le Bourne shell prendono il nome dal loro
inventore, Steven Bourne.
Steven Bourne ha scritto la shell
UNIX originale, sh , e da
allora la maggior parte delle shell hanno nomi che finiscono
in sh per indicare che sono estensioni
dell'idea originale. Ci sono molte implementazioni della sua shell,
e si chiamano tutte Bourne shell.
E comune anche un'altra classe di shell, la C
shell ( originariamente implementata da Bill Joy )
. Tradizionalmente , le Bourne shell vengono
usate per gli script di shell e per
compatibilita con l'originale , e le C shell
sono usate per l'uso interattivo ( le C shell hanno il
vantaggio di avere caratteristiche di interattivita migliori,
ma sono piu difficili da programmare ).
Linux viene fornito con una Bourne
shell chiamata bash,scritta dalla Free
Software Foundation.
bash sta per Bourne Again Shell,
uno dei tanti brutti giochi di parole in Unix.
E una Bourne shell "avanzata''
: contiene le caratteristiche standard di programmazione
normalmente presenti nelle Bourne shell,
insieme con molte caratteristiche di interattivita normalmente
presenti nelle C shell.
bash e la shell di default che viene usata con LINUX ...!!
.
Quando vi loggate, il prompt
viene mostrato da bash, e state eseguendo il
vostro primo programma Unix, la bash
shell.
Finche sarete loggati, la bash shell continuera a girare.
La shell negli ambienti Unix,
e non fa eccezione Linux, e un elemento fondamentale
del sistema operativo.
Solo chi sa usare correttamente questo ambiente puo dire di
conoscere unix/linux, altrimenti e un
semplice utilizzatore.
Passo a darne una definizione: la shell di un ambiente
Unix, e un
interprete a linea di comando che permette di interagire con
il sistema operativo, impartendogli dei comandi di sistema
fino a creare un programma vero e proprio, generalmente detto
script.
Questa definizione merita qualche spiegazione.
Prima di tutto per comandi di sistema si intendono tutti quei
comandi forniti dal sistema operativo, ad esempio il
caricamento di un programma, la data e l'ora, comandi di
ricerca, ordinamento e cosi via.
Ogni programma unix e creato per essere
caricato dalla shell, quindi e predisposto
per questo, ed ha una notevole flessibilita offrendo la
possibilita di essere parametrizzato.
Attraverso la parametrizzazione e possibile guidare
un'applicazione unix, nell'input,
nell'esecuzione e nell'output.
Una pratica comune e quella di creare delle "pipe"
( argomento questo,a cui dedichero prossimamente un
articolo....).
Dei "tubi" tra applicazioni,
l'output di una e l'input per un'altra, e questo si puo
fare solo attraverso la shell.
Nella definizione si dice che: "la shell e un
interprete a linea di comando", questo significa
che e essa stessa un programma che interpreta altri programmi
o semplicemente comandi, quindi non e necessariamente unica, e
infatti nella realta esistono varie shell, ma
i concetti fondamentali :
interazione con il sistema, programmabilita, interfaccia a
caratteri- rimangono per tutte uguali.
Le shell piu famose sono: bash ( Bourne Again
Shell), sh, tclsh e tcsh ,comunque ve ne sono molte
altre. Descriveremo qui di seguito la shell bash,
che e in pratica quella standard per ogni sistema unix.
Per programmabilita si intende che l'interprete offre un certo
numero di strutture di controllo, costanti e variabili tipiche
di ogni linguaggio di programmazione.
La shell deve essere necessariamente a linea
di comando per offrire la flessibilita necessaria, molti
ambienti di tipo visuale, quali windows e macos
hanno delle utility con l'obbiettivo di fornire qualcosa di
simile, non arrivando mai alle potenzialita della shell
unix, non per l'incapacita di creare un
interprete cosi potente, ma per come sono creati i programmi
applicativi.
Nell'ambiente unix, fin dall'inizio era
presente la shell, anzi era il solo modo per
interagire con il sistema operativo, i programmi erano creati
da programmatori per altri programmatori, quindi enorme
flessibilita ed un occhio di riguardo per la programmabilita.
Per questo motivo se si guardano i parametri di caricamento di
un qualsiasi programma se ne trovano almeno una decina.
Tutto questo non vale per i sistemi operativi con interfaccia
grafica, i cui utenti avendo scelto questo modello non
vogliono di certo la programmabilita, l'obbiettivo per le
applicazioni in questi ambienti e l'usabilita da parte di
qualsiasi utente.
Se dovessi scegliere uno
degli elementi distintivi tra un sistema unix e gli altri,
quello descritto sopra sarebbe uno tra
quelli fondamentali.
Quella che segue e una lista essenziale dei comandi unix,
ho descritto le opzioni piu usate senza prenderle in
considerazione tutte, per quelle si puo usare il comando
man, mentre ho cercato di privilegiare gli esempi.
alias
: Crea oppure rimuove lo pseudonimo di un comando.
Attenzione quando si
termina la sessione di lavoro vengono eliminati anche gli
alias, per mantenerli e necessario inserirli nel "profile"
della console.
cd
: Questo forse e il primo comando da imparare, serve per
muoversi attraverso le directory.
Esempio :
albero delle directory:
/home/antonio/documenti/personali/fattura10.txt
posizione corrente:
/home/antonio
per portarsi nella
directory dove si trova il documento fattura 10, digitare il
seguente comando :
cd
documenti/personali
Per portarsi nella propria directory home
digitare il comando cd mentre per
portarsi nel primo livello dell'albero delle directory
digitare cd / mentre con cd
.. si va alla directory superiore.
chgrp
: campia il gruppo associato ad un certo file.
Parametri principali:
-R
Cambia ricorsivamente la proprieta delle directory.
es: chgrp -R users
/home/pippo/Documenti
questo esempio associa le directory contenute in Documenti, ed
i relativi documenti al gruppo users.
chmod
: Mediante questo comando e' possibile cambiare i permessi ad
un file.
es: chmod +w pippo
abilita il permesso di scrittura da parte dell'utente sul file
pippo.
es: chmod -r-w-x
pippo
non permette l'accesso al file pippo in lettura, scrittura ed
esecuzione.
es: chmod +r+w+x
abilita l'esecuzione e la lettura da parte di tutti e la
scrittura da parte del solo utente.
chown
: cambia il proprietario di un file.
es: chown pippo:users
documento.txt
Setta il proprietario di documento.txt a pippo e il gruppo a
users.
cp
: Comando utilizzato per fare la copia di files.
cp fileSorgente
fileDestinazione
es: cp
Doumenti1/*.bz2 Documenti2
Questo esempio copia tutti i files contenuti nella
cartella Documenti con estensione bz2 nella directory
Documenti2 (la directory Documenti2 deve gia' esistere).
date
: imposta la data e l'ora del sistema
es: date
Eseguendo semplicemente il comando date, riporta la data e
l'ora corrente.
es: date -s '02
May
2000 10:55:10'
Questo esempio setta la
data al 2 Maggio 2000, e l'ora alle 10:55:10, omettendo l'ora
setta automaticamente all'ora 00:00:00
es: date --date
'20 days ago'
Stampa la data di 20 giorni fa
es: date --date '3
months ago'
Stampa la data equivalente al giorno corrente di 3
mesi fa.
es: date --date '1
month 1 day'
Stampa la data corrispondente a quella fra un mese ed
un giorno.
es: date --date '1
month 1 day ago'
Stampa la data di un mese ed un giorno fa.
es: date +'%T'
Stampa l'ora corrente nel formato ore:minuti:secondi
df
: riporta l'occupazione dei file system montati rispetto
allo spazio a loro riservato.
es: df
Riporta l'occupazione del file system in percentuale.
es: df -k
riporta l'occupazione del file system in kilobyte.
es: df -m
riporta l'occupazione del filesystem in Megabyte.
diff
: Trova le differenze tra due files.
es: diff file1
file2 > differenze.txt
du
: mostra la dimensione di un file.
es: du pippo
Mostra la dimensione occupata da pippo in kb.
file
: determina il tipo di file facendo un'analisi del suo
contenuto.
es: file pippo
Se pippo e' un file compresso di tipo bz2, il
risultato del comando sara' qualcosa di simile:
pippo.bz2: bzip2 compressed data, block size = 900k.
find
: attraversa l'albero delle directory raccogliendo tutti
i file ivi contenuti.
es: find . -print
| grep documentoxy
Questo raccoglie tutti i file e le directory partendo
dalla posizione corrente, e attraverso il comando grep ricerca
il documentoxy.
grep
: significa General Regular Expression Parser.
grep permette di ricercare all'interno di un file una certa
espressione regolare, come output mostra la stringa che
contiene l'espressione trovata.
es: grep prova
Documenti/documentoxy.txt
Ricerca la stringa prova in documentoxy.txt che si
trova nella directory Documenti.
groups
: visualizza il gruppo di appartenenza dell'utente che
richiama il comando.
kill
: termina un processo in esecuzione.
last
: indica gli ultimi accessi al sistema.
es: last -n 20
Mostra gli ultimi 20 accessi es: last -x -n20 Mostra gli
ultimi 20 Shutdown e cambi di run-level
ln :
Attraverso il comando ln e' possibile fare un link ad un
determinato file.
es: ln pippo
/home/pluto/pippo.lnk
Questo esempio esegue un link del file pluto nel file
pippo.lnk.
ls
: Visualizza il contenuto della directory corrente
es: ls -l
Mostra i file della directory corrente e i loro
permessi.
es: ls -a
Mostra tutti i file anche quelli nascosti.
man
: mostra la guida in linea relativa al comando con qui
e' stato richiamato man.
es: man ls
Questo comando mostra l'help in linea relativa al
comando ls.
mkdir
: crea una nuova directory.
es: mkdir prova
crea la directory prova nella directory corrente.
mount
: Questo comando permette di fare il mount di un file system.
Prima di accedere ad un fileSystem, es Dischetto, hardDisk
ecc. e' necessario fare il mount, cioe' caricare le
informazioni relative a quel dispositivo (es: carica l'albero
delle directory). Linux permette di fare il mount di
moltissimi file system, elenco i piu' famosi:
ext2 il file
system di Linux vfat il file system di Windows
fat32 fat il file
system di Dos e Windows fat16 NTFS NT file
system hfs il file
system di macintosh iso9660 il fs dei CD-ROM.
es: mount -t msdos/dev/fd0
/mnt/floppy
Questo comando monta un
floppy di tipo msdos (/dev/fd0 e il device floppy disk 0, ed
in generale indica il floppy a) nella directory /mnt/floppy.
Nella directory /mnt/floppy si ha il contenuto del floppy
inserito nel drive a: .
mv
: serve per spostare un file, oppure per rinominarlo.
es: mv pippo
pippox Questo
comando rinomina il file pippo nel file pippox
es: move pippo
Documenti/pippox
Questo comando sposta il file nella directory
Documenti, e lo rinomina in pippox.
passwd
: cambia la password dell'utente corrente
ps
: visualizza i processi del sistema
es:ps -x
Visualizza tutti i processi del sistema.
rcp
: Copia files tra macchine (o sistemi) differenti.
ES: rcp -r /home/pippo/Documenti/mnt/dos/pippo
Questo esempio copia la directory Documenti nel
filesystem dos.
size
: permette di calcolare la dimensione di un file.
Es. size /bin/arch
Questo comando calcola la dim del file arch nella
directory bin.
split
: Questo comando divide un file di grosse dimensioni in parti
piu' piccole.
es: split -b
1440000 pippo pipSplit
Comando che divide il file pippo in file con prefisso
pipSplit seguito da una numerazione del tipo aa, ab,
ac ecc.
su
: su lancia una shell con i privilegi dell'utente indicato.
Es: su root
Questo comando lancia una shell con i privilegi di superuser.
tar
: e un comando che serve per riunire un certo numero di
files.
es: tar -cvf
prova.tar Documenti
Questo comando riunisce tutti i file della directory Documenti
nel file prova.tar
es: tar -cvzf
prova.tgz Documenti
Questo comando e' equivalente al precedente, pero' utilizza
gzip per comprimere l'archivio.
es: tar -tzf
prova.tgz
Con questo comando si decomprime l'archivio creato
precedentemente.
Attenzione tar non
comprime i files, ma li riunisce soltanto.
Buon lavoro a tutti by EOLOTRICKS