Comandi da Terminale (bash,shell)
Una lista di comandi che potete utilizzare tramite terminale (Applicazioni>Accessori>Terminale) per compiere in modo veloce alcuni compiti ripetitivi, oppure per utilizzare quei programmi che non possiedono un interfaccia grafica.
Prima vi consigliamo di leggere : Filesystem Unix, che spiega come Unix (e Linux) gesticono i files e le cartelle di sistema.
Ottenere aiuto
Ci sono molti modi per ricevere aiuto circa un determinato comando.
Provate con :
- nome_comando -h
- nome_comando –help
- help
- help nome_comando
- dhelp cerca all’interno della documentazione Debian
- dhelp cerca nella documentazione RedHat
- man nome_comando visualizza la pagine di manuale
- apropos nome_comando cerca un determinato argomento
- whatis nome_comando ricerca nel manuale della guida per una parola
- info consultazione dei documenti relativi a prodotti GNU
I comandi di base sono di solito documentati tramite l’uso di "man", se lo avete lanciato premete il tasto [q] per chiudere la pagina.
Hot Keys
Alcune combinazioni di tasti possono essere molto utili in Linux, eccone alcune:
- History – con l’uso delle frecce [SU] e [GIU] e possibile ottenere la lista di tutti i comandi precedentemente digidati.
- Backscrolling – lo scrolling dello schermo indietro o in avanti si ottiene premendo [SHIFT] + [PAGINA SU] o [PAGINA GIU]. Questo permette di vedere testo che precedentemente era sullo schermo.
Ecco altri hot keys:
- [CTRL]+[c] – interrompre il programma in esecuzione
- [CTRL]+[d] – segnala la fine dell’operazione di input
- [CTRL]+[u] oppure [CTRL]+[x] – cancella la linea attuale
- [CTRL]+[z] – mette il programma in pausa
- [TAB] – QUESTO E’ IL TASTO PIU’ USATO. Completa automaticamente il percorso o il nome del file digidato da tastiera.
- [CTRL]+[t] – Inverte le due lettere dove si trova il cursore, utilissimo se quando si sbaglia per la troppa fretta. Esempio: ‘dorò diventa ‘door’
- [Shift]+[Scrollock] – visualizza informazioni sulla memoria
- [AltGr]+[ScrollLock] – visualizza lo stato dei registri
- [Ctrl]+[ScrollLock] – visualizza lo stato del sistema
- [AltGr]+[Fn] – Passa alla console virtualw "n"+12
- [Alt]+[RightArrow] – Passa alla console virtuale successiva
- [Alt]+[LeftArrow] – Passa alla console virtuale precedente
- [AltGr]+[PrintScreen] – Passa all’ultima console virtuale
Completamento automatico del Path
Se la shell che state utilizzando è bash vi potrà tornare molto utile la feature del "completamento automatico del path" (Path Completion). In pratica mentre nella shell si sta digitando il nome di un percorso o di un file, la pressione del tasto [TAB] provoca il completamento automatico.
Se ciò non è possibile perchè il nome digidato corrisponde a più di una combinazione verrà emesso un segnale di beep dopodichè un’ulteriore pressione del tasto [TAB] provoca la visualizzazione di tutti i file che corrispondono alla stringa sinora digidata. Molto spesso l’autore utilizza questa feature per visualizzare il contenuto di una directory. Ad esempio se sto cercando di visualizzare un file di cui non ricordo il nome nella mia home directory.
Posso digitare: cat /home/agx e quindi premere due volte [TAB] per ottenere tutti i file della directory senza dover richiamare prima il comando ls. Posso poi digitare il nome del file desiderato senza dover riscrivere il comando ‘cat’.
Utilizzo del mouse
Se è attivo il "daemon" (demone,servizio) "gpm" è possibile effettuare operazioni di "cut & paste" di testo tra le varie control virtuali. Premere il tasto sinistro del mouse e tracinarlo per selezionare il testo da copiare, quindi posizionarsi sul punto "x" e premere il tasto destro per incollare il testo.
Gestione delle Directory
Questi sono alcuni dei comandi per la gestione delle directory:
- ls – elenca i file contenuti in una directory, cioè DIR
- cd – come in DOS serve a cambiare la directory corrente
- md – crea una sottodirectory, come MKDIR in DOS
- rd – rimuove una sottodirectory, come RMDIR in DOS
- cp – copia file o sottodirectory, come COPY in DOS
- mv – muove o rinomina una sottodirectory, come MOVE in DOS
- rm – rimuove file o sottodirectory, come DEL in DOS
- pwd – restituisce il nome della directory corrente
- du – dà indicazione sullo spazio usato dai file
- df – dà indicazione sullo spazio libero sui dischi
Ecco alcune delle wildcard usate nei comandi Linux che manipolano files o directory:
- ";" Permette di inserire più comandi in successione sulla stessa riga. Esempiople: ls /bin ; ls /sbin ; ls /tmp
- "&" Esegue un comando in background. Esempio: httpd &
- "|" pipe
- "#" commento
- "\" indica alla shell che il comando che si sta scrivendo continua alla riga successiva.
- "$" indica una variabile di sistema. Esempio: $PATH=/bin:/sbin
- "?" wildcard (un carattere qualsiasi ma solo in quella posizione) Esempio: /bin/c?t
- "*" wildcard (qualsiasi carattere tranne i file nascosti) Esempi: "ls gcc*" o "ls *.rpm" o "ls lib*.so.*"
- ".*" wildcard (come ‘*’ ma include anche i file nascosti)
- "[]" wildcard (solo i caratteri specificati ed in quella posizione) Esempio: "ls [Cc]at", cerca per i files "Cat" e "cat"
Il comando "ls" ha la seguente sintassi: ls [opzioni][path_name]
Le opzioni principali sono:
"-a" elenca tutti i file includendo sottodirectory e file nascosti
"-d" mostra solo le directory
"-k" mostra le dimensioni in kilobyte
"-l" visualizza informazioni addizionali come le permission, le dimensioni e le date
"-o" utilizza colori diversi per i file e le directory
"-R" recurse subdirectory, come DIR /S in DOS
"-S" ordina i file secondo le dimensioni
"-t" ordina i file secondo la data di modifica
"-X" ordina i file per estensione
Se il risultato del comando "ls" supera le dimensioni dello schermo, è possibile usare la sintassi (equivalente a DIR /P in DOS):" ls | more " per visualizzare il risultato una pagina alla volta.
Il comando cd funziona come in DOS, tranne che in Linux si hanno due possibilità di utilizzo particolari:
"cd -" Annulla l’ultimo comando "cd" ritornando alla precedente directory !
"cd ~" Posiziona la shell nella home directory dell’utente attuale.
Il comando md è usato per creare directory. La sintassi è md
Il comando rd, invece, rimuove una directory che deve essere già stata svuotata da tutti i file. La sintassi è rm
Il comando du visualizza lo spazio usato dalla directory, non quanto spazio è libero. La sintassi è : du [-a] [-s] [-m]
"-a" visualizza l’uso dello spazio per tutti i file del percorso specificato
"-s" visualizza l’uso dello spazio totale solo per il percorso specificato
"-m" visualizza le informazioni in Megabytes
Il comando df visualizza lo spazio libero sui dischi del sistema. Esempio: df -h
Permessi Utente
Lanciando il comando "ls -al" noterete che visualizza le directory ed i file in un formato esteso rispetto allo standard, questo include informazioni sulle permission e l’ownership.
Ecco come appare:
drwxr-xr-x 2 dosuser dos 256 Apr 28 15:40 ./
drwxr-xr-x 15 dosuser dos 928 Apr 28 14:50 ../
-rw-r--r-- 1 dosuser dos 20 Apr 28 16:05 .bash_history
-rw-r--r-- 1 dosuser dos 6993 Oct 5 16:01 _bhist
-rw-r--r-- 1 dosuser dos 1150 Apr 28 15:55 _blogin
-rw-r--r-- 1 dosuser dos 40 Dec 30 1996 _blogout
-rw-r--r-- 1 dosuser dos 1131 Dec 31 1996 _inputrc
-rwxr-xr-x 1 dosuser dos 220 Nov 8 1996 man2txt.sh*
Il primo campo sono le permission. Sono nella forma: ‘drwxrwxrwx’, quando uno di questi flag non è presente è indicato con ‘-’. Il flag ‘r’ indica che il file è leggibile. ‘w’ che è scrivibile ed ‘x’ che è eseguibile.
Il primo flag ‘d’ indica se il file è una directory. Diversamente ‘-’ indica un file normale mentre ‘l’ signiifca che il file è un link ad un’altro file.
La prima serie di ‘rwx’ sono riferite alle permissione che ha l’owner’ (il padrone) del file che è il nome indicato nella terza colonna (dosuser).
La seconda serie di ‘rwx’ sono le permission che ha il gruppo sul file. Il gruppo è indicato alla 4a colonna (dos).
La terza serie di ‘rwx’ sono le permission che hanno tutti gli altri utenti su quel file.
Un utente che crea un file con permission ‘-rw——-’, sarà l’unico ad avere accesso a quel file.
E’ da notare che le permission per la directory ‘./’ corrispondo alle permission che ha la directory corrente.
Ricordatevi anche che i file nascosti sono quelli che iniziano con un punto, e che per essere visualizzati bisogna usare l’opzione -a con il comando "ls".
Come vengono applicate le permission ?
Le permission assegnate ad un file dipendono innanzitutto dalle permission della directory dove è situato il file. Un file pubblico ("-rwxrwxrwx") non può essere visto da tutti se le permission della directory sono "-rwx——".
Un utente per accedere ad i file di una directory deve avere i permessi di [ lettura (r) ed ] esecuzione (x) su di essa e di lettura (r) ed esecuzione (x) sul file.
Comandi per la gestione dei file
Questi sono i comandi per la gestione dei file :
cp - COPY
rm - cancella un file, i.e. DEL
rm -R - con l’opzione -R funziona come il comando DOS "DELTREE"
mv - muove/rinomina un file
cat - visualizza un file, come TYPE
more - visualizza un file ma una pagina per volta
less - come "more"
Il comando di copia, cp ha la seguente sintassi : cp [options] [source_file] [target_file]
Le opzioni più usate sono:
"-i" chiede conferma prima di sovrascrivere un file
"-r" copia anche le sottocartelle (ricorsivamente)
"-a" si comporta allo stesso modo di XCOPY
"-f" sovrascrive file già esistenti senza chiedere conferma
Il comando di rimozione, rm ha la seguente sintassi: rm [options] [list of file to delete]
Utili opzioni sono:
"-i" chiede conferma prima di cancellare un file
"-r" rimuove un’intera directory
"-R" rimuove una directory e tutte le sottocartelle
Il comando mv ha la seguente sintassi : mv [options] [old_file_or_dir_name] [[new_directory_name]/[new_file_name]]
Il comando cat semplicemente visualizza tutti i file elencati sulla linea di comando, ed è per questo usato per "concatenare" diversi file, ad esempio: cat pippo pluto paperino > topolinia
L’opzione "-n" di cat è usata per numerare le righe mentre vengono visualizzate.
"more" e "less" visualizzano una pagina per volta il file specificato sulla riga di comando oppure inviato tramite pipe.
Esempi: cat pippo | more equivalente di more pippo
Utili tasti da tenere in mente sono:
[INVIO] per avanzare di una riga
[SPAZIO] per avanzare di una pagina
[p] per tornare indietro di una pagina
[q] per uscire dal programma.
Eseguire programmi
Per eseguire un programma basta digitare il suo nome e premere INVIO. Se la directory dove è incluso il programma non è presente all’interno del PATH di ricerca il programma non sarà eseguito anche se si trova nella directory attuale. Per ovviare a ciò indicare il nome del percorso del programma oppure ./nome_programma se si trova nella directory attuale.
Concatenare Programmi
Su una stessa riga possono essere eseguiti più programmi, basta separarli con ";".
Esempio: ls /bin ; ls /root
Se una linea di comando è troppo lunga per stare su una sola riga, si puo usare il carattere "\" per "andare a capo". Il sistema visualizzare il prompt "continue>" per indicare che è possibile continuare a digitare il comando precedente.
Se si vuole eseguire un programma solo se il programma precedente è terminato con successo basta separarli con i caratteri "&&".
Esempio: cp /etc/passwd /tmp/grabbed_passwd_file && cat /tmp/grabbed_passwd_file
Eseguire processi in background
Per eseguire un processo in background basta aggiungere il simbolo "&" alla fine della riga di comando.
Esempio: pppd &
La shell ritornera un codice del tipo:
[1] 123
che identifica il numero assegnato a tale "job" (cioè 1 ) e il numero del PID (123) assegnato al processo.
Eseguire processi in background è molto utile, si può formattare un disco, zippare molti files oppure lanciare una stampa molto grande allo stesso tempo, sempre avendo il prompt dei comandi a piena disposizione.
Fermare un processo
Basta premere CTRL + C
Monitorare i processi
Per vedere la lista dei processi utenti basta usare il comando ps
Per poter vedere TUTTI i processi del sistema si usa la sintassi: ps -ax
Jobs, Backgrounds and Foreground
I processi che girano in background sono chiamati job, forse per un antica eridità del VMS.
Alcune cose utili da sapere:
Per sospendere un processo che gira in foreground: CTRL-Z
Per riavviare un processo sospeso, ma in background: bg
Per vedere la lista dei jobs attivi: jobs
Per portare un processo in foreground: fg
Killare un processo
Alcuni processi non possono essere fermati con CTRL + C e vanno quindi "killati"(uccisi)
Per uccidere un processo si usa la sintassi: kill
Molto spesso se un processo non ne vuole sapere di "morire" si può mandargli direttamente altri tipi di segnale, la sequenza che di solito si usa è :
kill -15
kill -9
Gestione sistema
Reboot Veloce
Basta premere CTRL+ALT+CANC se si è in modalita testo. Altrimenti uscire prima dall’X-Window con CTRL+ALT+BACKSPACE
La sintassi correttà per fermare o riavviare il sistema è :
shutdown [-h|-r] NOW
Con l’opzione "-h" si ferma il sistema, mentre con "-r" si effettua un reboot.
Uscita temporanea
Si puo lasciare accessa la macchina, Linux spegnerà autoticamente il monitor e renderà lo schermo nero. Però dovrete uscire dai terminali nei quali siete entrati usando il comando "exit" oppure "logout".
Cambiare utente al volo
In ogni momento è possibile lavorare con un nuovo utente per mezzo del comando su
Per usarlo digitare: su nome_nuovo_utente
quando avete finito usate "exit" per ritornare all’utente precedente.