Differenze tra le versioni di "Linea di comando"

Da GolemWiki.
Jump to navigation Jump to search
m (inseriti i consigli da wowarea e da Manualinux, non formattati)
 
m (Directory: D grassetto)
 
(29 versioni intermedie di 8 utenti non mostrate)
Riga 1: Riga 1:
Un ottimo testo di riferimento per usare Linux da linea di comando (shell): [http://www.manualinux.com/italia/manualinux.htm Manualinux]
+
Questa pagina è un utile sillabo che raccoglie informalmente un po' di comandi e alcune delle loro opzioni più comuni. È utile come riferimento per tutti coloro che si avvicinano al terminale per la prima volta.
  
e poi una serie di utili combinazioni di tasti presa da [http://www.wowarea.com/italiano/linux/shell.htm wowarea]
+
L'argomento può essere approfondito venendo nella nostra [[Officina Informatica | officina]] o seguendo uno dei nostri [[:Categoria:Corsi | corsi]].
  
La pagina seguente è copiata dalle due risorse appena citate.
+
Altre risorse ben fatte possono essere trovate qui:
 +
* [http://www.wowarea.com/italiano/linux/guida.htm www.wowarea.com] [https://golem.linux.it/files/guide/linux.wowarea/www.wowarea.com/italiano/linux/indice.html mirror] - Guida un po' vecchia, ma molto ben fatta, e in italiano!
 +
* [https://golem.linux.it/files/guide/slackware/slackware.htm Slackware Linux Essentials] - Libro non proprio recente, ma in italiano, lettura scorrevole e ben fatto per prendere confidenza con il terminale. Lo scopo è imparare a installare e usare Slackware, ma basta limitarsi ai capitoli di interesse (es. capitolo 8 e successivi)
  
Altrimenti [[Pagine arancioni|torna indietro]]
+
=Introduzione=
 +
Una shell è un software che attraverso un'interfaccia a riga di comando permette di eseguire dei programmi.
  
Comandi a briglia sciolta
+
Sui sistemi Microsoft (DOS e Windows) è chiamata ''prompt dei comandi''.
!!
 
riesegue l'ultimo comando appena eseguito
 
!n
 
riesegue l'ennesimo comando presente nella storia, dove 'n' e' il numero del comando da rieseguire
 
!stringa
 
riesegue l'ultimo comando che inizia con i caratteri specificati in 'stringa'
 
!stringa:p
 
visualizza l'ultimo comando che inizia con i caratteri specificati in 'stringa'
 
!?comando?
 
ricerca il comando specificato tra punti interrogativi
 
fc 4
 
permette di modificare in comando numero 4 con l'editor predefinito (solitamente vi)
 
fc -e 'nome' 4
 
permette di modificare in comando numero 4 con l'editor 'nome' specificato
 
^comando1^comando2
 
riesegue l'ultimo comando eseguito che contiene la parola 'comando1' sostituendola con 'comando2'.
 
history
 
visualizza l'elenco di tutti i comandi eseguiti
 
CTRL-U
 
cancella tutta la riga dalla posizione del cursore all'inizio della riga
 
CTRL-K
 
cancella tutta la riga dalla posizione del cursore alla fine della riga
 
CTRL-W
 
cancella una parola dalla posizione del cursore all'inizio della riga
 
ALT-D
 
cancella una parola dalla posizione del cursore alla fine della riga
 
freccia sinistra
 
sposta il cursore di un carattere a sinistra
 
freccia destra
 
sposta il cursore di un carattere a destra
 
freccia su
 
scorre la storia dei comandi a ritroso
 
freccia giu'
 
scorre la storia dei comandi in avanti
 
tasto home
 
sposta il cursore all'inizio della riga
 
CTRL-A
 
sposta il cursore all'inizio della riga
 
tasto fine
 
sposta il cursore alla fine della riga
 
CTRL-E
 
sposta il cursore alla fine della riga
 
ALT-F
 
sposta il cursore alla fine della parola successiva (F sta per forward, successivo)
 
CTRL-B
 
sposta il cursore all'inizio della parola precedente (B sta per backward, precedente)
 
CTRL-T
 
inverte gli ultimi due caratteri a sinistra del cursore, cioe' ab diventa ba (T sta per transpose)
 
ALT-T
 
inverte le ultime due parole a sinistra del cursore, cioe' cp pippo pluto diventa cp pluto pippo
 
ALT-U
 
trasforma in maiuscolo la parola su cui si trova il cursore (U sta per uppercase, cioe' maiuscolo)
 
ALT-L
 
trasforma in minuscolo la parola su cui si trova il cursore (L sta per lowercase, cioe' minuscolo)
 
tasto TAB
 
espande il nome di un file o di un comando
 
  
 +
La maggior parte delle distribuzioni Linux utilizza la [http://it.wikipedia.org/wiki/Bash Bourne Again Shell] (bash), una versione avanzata della vecchia [http://it.wikipedia.org/wiki/Bourne_shell Bourne shell] (sh).
  
Altri consigli presi da [http://www.manualinux.com/italia/manualinux.htm Manualinux]
+
Altre shell:
 +
* Almquist shell (ash, sh, dash): veloce e minimale, shell di default di Android, è usata su Debian e derivate per eseguire gli script di avvio.
 +
* TENEX C Shell (tcsh): shell predefinita di FreeBSD, compatibile con la vecchia C shell (csh).
 +
* Korn shell (ksh): shell predefinita di NetBSD ed OpenBSD.
 +
* Z shell (zsh): compatibile con bash, incorpora varie funzionalità della tcsh e ksh
  
# COMANDI COMUNI PER MUOVERE I PRIMI PASSI SU LINUX
+
Nota:
*# I comandi dati possono essere riscritti, sulla riga di comando, semplicemente premendo i tasti di direzione.
+
su Linux tutto ''è un file'': cartelle, file, partizioni, dischi, periferiche, interfacce, sono trattati allo stesso modo. Una cartella si distingue da un file perché contiene al suo interno due elementi: «punto» e «punto punto».
*# Tramite il comando "history" e' possibile vedere tutti i comandi dati
 
*# se dopo gli viene inserito un numero, visualizza gli ultimi n. comandi dati
 
  
3 - Spesso lanciando dei comandi, si generano file di testo. Per uscirne, bisogna premere "q"
+
Collegamento ricorsivo a se stessa:
oppure, qualora si voglia fermarne il processo perche' l'esecuzione del comando genera caratteri incomprensibili o non vengono accettati altri input da tastiera, bisogna premere "Ctrl+c"
+
.
  
4 - Spesso, i comandi lanciati, forniscono una serie di dati che superano la visualizzazione di una sola schermata, mostrando cosi', solo una parte di essi. Per ovviare a questo fenomeno, si usa una opzione  "|more" o "| less" aggiunta alla fine del comando (ls -la | more) oppure dopo il nome del file (cat nomefile | more)
+
Collegamento alla cartella sovrastante
 +
..
  
5 - Inoltre, dopo avere utilizzato alcune procedure sopracitate, bisogna sapere che premendo il tasto "Invio", continua la visualizzazione per riga e premendo il tasto "space" continua per pagina.
 
  
 +
=Comandi principali=
 +
Anteposto ad un comando ne mostra la guida:
 +
man
  
PER DIRECTORY
+
==Gestione di file e cartelle==
 +
=== Navigare tra le cartelle ===
 +
Comando '''C'''hange '''D'''irectory:
 +
cd cartella
 +
Casi particolari
 +
cd ..                ''# Torna alla cartella di livello superiore''
 +
cd -P collegamento    ''# Percorre il collegamento posizionandosi in quella cartella''
  
cd = cd (da solo) torna nella homedir (~ o $HOME)
+
=== Visualizzare il contenuto delle cartelle ===
 +
Mostra la lista di elementi contenuti in una directory.
 +
ls
  
cd .. = porta alla directory precedente (da cui dipende)
+
Mostra la lista di tutti gli elementi di una directory inclusi quelli nascosti.
 +
ls -a
  
cd / = torna alla radice da qualsiasi punto ci si trovi
+
Mostra gli elementi contenuti in una directory sotto forma di lista, descrivendone il tipo (file, cartella o link), i diritti, il proprietario, il gruppo e la data di modifica.
 +
ls -l
  
ls = visualizza il contenuto di una directory orizzontalmente
+
Mostra la lista di tutti gli elementi di una directory indicando la dimensione dei file in modo “human readable”, ovvero espressa in Kbyte o Mbyte anziché in byte.
 +
ls -h
  
ls | more = visualizza il contenuto x pagina e verticalmente
+
Combina i tre comandi precedenti.
 +
ls -alh
  
(tramite enter prosegue con una singola linea x volta)
+
Crea una directory
 +
mkdir ''nome_cartella''
  
(tramite space prosegue x pagina)
+
Copia file o cartelle. Con l'opzione -R (ricorsività) il comando cp copia anche i file nelle sottocartelle, fino al livello più basso.
 +
cp ''file_o_directory'' ''destinazione''
  
ls -l = l'opzione -l visualizza molti dettagli
+
Permette di spostare e rinominare i file.
 +
Come per il comando cp, l'opzione -R, ne applica una ricorsività.
 +
mv ''file_o_directory'' ''destinazione''
  
ls -la = l'opzione -a visualizza le directory precedute da un punto
 
  
(questo e' il comando consigliato)
+
Cancella un file
 +
rm ''file''
  
cp -av = copia intere directory
+
Applica il comando ''Cancella'' ricorsivamente, all'interno delle sottocartelle, cancellandone il contenuto:
 +
rm -r ''cartella''
  
es. partenza (/usr) destinazione (/mnt/dove_vuoi_tu)
+
Cancella forzatamente il file ma solo se si hanno i permessi giusti sul file in questione. Non chiede la conferma prima di eliminare!
 +
rm -f
  
cp -r = per copiare directory
+
Cancella una cartella e tutto il suo contenuto senza chiedere conferma per ogni file.
 +
rm -rf ''cartella''
  
mkdir = per creare una directory
+
Crea un link statico al file specificato.
 +
ln -s ''file'' ''destinazione''
  
rmdir = per rimuovere directory vuote
+
Indica gli utenti che in quel momento stanno lavorando sulla macchina, il tipo di console TTY (tele type terminal) da cui si connettono, l'ora di login e la macchina da cui hanno effettuato la connessione.
 +
w
  
rm -r = elimina le dir/sottodir e tutto in esse contenuto
+
Print Working Directory mostra il percorso (path) della cartella in cui ci troviamo.
 +
pwd
  
rm -r -f = elimina le dir/sottodir e tutto in esse contenuto senza chiedere conferma
+
{{Note
 +
|type=info
 +
|text=Su Linux e Unix, i file sono tutti uguali e tutto è concepito come un file, anche le periferiche. I file non necessitano di un'estensione, anche se questa viene convenzionalmente usata, ma vengono identificati direttamente in base al loro contenuto. Questo fa sì che, per esempio, file di testo possano essere aperti solo da programmi in grado di elaborare file di testo e non da altri, anche se non hanno l'estensione ''txt''!
 +
}}
  
pwd = per controllare in quale directory ci si trova
+
==Spegnimento e Riavvio==
 +
Spenge il PC
 +
systemctl poweroff
  
tree nomedir = visualizza le directory dipendenti da quella indicata
+
Riavvia il PC
 +
reboot
  
reset = se xterm non risponde più ai comandi, il camando reset lo sbloccherà
 
  
 +
==Sistema e Kernel==
 +
Quantità di spazio usata nella directory e sottodirectory, espressa in formato umanamente comprensibile (MB o GB).
 +
du -h
  
 +
Task manager:
 +
top
  
PER FILE
+
Visualizza i programmi e demoni in corso con i relativi pid
 +
ps aux
  
cp = per copiare file
+
Mostra le partizioni montate e lo spazio a disposizione su di esse, espresso in formato umanamente coprensibile:
 +
df -h
  
rm = per cancellare i file
+
Mostra la memoria ram e swap occupata, libera e totale
 +
free -m
  
mv = per spostare/rinominare file
+
Indica la versione del kernel e molte altre informazioni accessorie:
 +
uname -a
  
mv nome nomenuovo = rinomina il file (es. mv cri.txt cro.txt)
+
visualizza i moduli (driver) caricati nel kernel
 +
lsmod
  
mv nomefile /nomedir = sposta il file nella dir indicata
+
==Altro==
 
+
Visualizza l'elenco degli ultimi comandi eseguiti
(es. mv cri.txt /usr)
+
  history
 
 
cat nomefile = mostra il contenuto di un file
 
 
 
touch nomefile = per creare un file vuoto all'istante
 
 
 
wc = per vedere le statistiche su un file di testo.
 
 
 
split = per dividere un file in più parti.
 
 
 
diff = per trovare la differenza di testo all'interno di 2 files (es. diff 1.txt 2.txt)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PER IL SISTEMA
 
 
 
shutdown -r now = riavvio del sistema
 
 
 
reboot = come sopra
 
 
 
shutdown -h now = chiusura del sistema
 
 
 
halt = come sopra
 
 
 
halt -p = fa shutdown e spegne il sistema
 
 
 
exit = chiude la consolle
 
 
 
startx = avvia l'esecuzione del server grafico
 
 
 
ctrl+alt+backspace = riavvia la modalita' grafica riportando al login iniziale
 
 
 
ctrl+alt+F1 = apre una consolle non emulata
 
 
 
ctrl+alt+F7 = passa semplicemente sullo screen 0 se c'e' un server X attivo. Non chiude la console da cui si proviene.
 
 
 
 
 
 
 
 
 
 
 
PER HELP E INFORMAZIONI
 
 
 
- comandi
 
 
 
nomecomando --help = mostra la sintassi del comando (un aiuto generico)
 
 
 
man nomecomando = mostra la spiegazione in dettagli
 
 
 
(enter ;prosegue per linea - space ;per pagina -
 
 
 
q ;per uscire e tornare alla riga di comando)
 
 
 
info nomecomando = idem
 
 
 
 
 
 
 
- file installati
 
 
 
makewhatis = crea un database con le informazioni che riguardano i file installati (senza visualizzare nulla), poi con
 
il comando
 
 
 
" apropos tipofile " viene restituito un elenco di quello che riguarda il tipo di file (es. apropos edit).
 
 
 
 
 
 
 
- X server
 
 
 
Per sapere quale Xsever si sta usando, andare in /etc/X11/ e dare il comando ls -la ,guardare dove punta il link -->
 
l'ultimo file indica l'X server usato*
 
 
 
 
 
 
 
- kernel
 
uname -a = per sapere la versione del kernel
 
 
 
- sistema e kernel
 
 
 
lsmod = visualizza i moduli caricati nel kernel
 
 
 
du -h = quantita' di spazio usata nella directory e sottodirectory in kb e mb.
 
 
 
top = mostra i processi in uso dalla cpu (per interrompre Ctrl+c).
 
 
 
ps aux = Visualizza i programmi e demoni in corso con i relativi pid
 
 
 
pidof nome programma/demone  (per es. pidof kdm)
 
 
 
df = mostra le partizioni montate
 
 
 
free -mt = mostra la memoria ram e swap occupata, libera e totali
 
 
 
free (-t ;x i totali -m ;x i megabytes)
 
 
 
Se linux non vede tutta la ram che avete (per es. 128M) allora aggiungete questa riga nel file /etc/lilo.conf tra
 
(default e keytable)
 
 
 
append = "mem=128M" Salvate il file e digitate lilo, riavviate il pc ed una volta tornati a linux digitate "free".
 
 
 
 
 
 
 
uname = mostra le informazioni sul sistema.
 
 
 
uname -m = tipo di macchina
 
 
 
uname -n = nome della macchina sulla rete
 
 
 
uname -r = release del sistema operativo (versione kernel)
 
 
 
uname -s = nome del sistema operativo
 
 
 
uname -v = versione del sistema operativo
 
 
 
uname -a = riepilogo generale delle opzioni sopra descritte
 
 
 
 
 
 
 
 
 
 
 
PER FLOPPY E CDROM
 
 
 
mount -t tipofilesyistem /dev/fd0 directory = monta il floppy formattato nel tipo x nella tal dir ( vfat per windows; 
 
msdos per -msdos- dos;  hfs per mac )
 
 
 
eject /dev/device = espelle il cdrom o il masterizzatore (es. eject /dev/hdc oppure eject /dev/scd1)
 
 
 
 
 
 
 
 
 
 
 
ALTRI COMANDI PER LA VISUALIZZAZIONE DI FILE E PRECISAZIONI
 
 
 
Oltre al comando "cat", ci sono altri comandi, spesso piu' utili, per visualizzare il contenuto di un file.
 
 
 
more nomefile = per i file di grandi dimensioni
 
 
 
 
 
 
 
oppure
 
 
 
less nomefile
 
 
 
 
 
 
 
Es.
 
 
 
Digitare:
 
 
 
more /dev/hda = verra' visalizzata la mappa delle partizioni
 
 
 
less /dev/hda = viene visualizzato di aggiungere l'opzione -f
 
 
 
less -f /dev/hda = questo e' il caso in cui non si capisce nulla
 
 
 
(premere "q")
 
 
 
cat /dev/hda = questo e' il caso in cui bisogna fermare il processo (Ctrl+c)
 
 
 
 
 
 
 
 
 
 
 
IL CARATTERE JOLLY "*"
 
 
 
* = significa tutto
 
 
 
Se introdotto a fianco di una parola, fa riferimento alla parola e quelle che hanno caratteri aggiunti
 
 
 
es. pippo* = pippo pippo1 pippociao pippopluto pippo..............
 
 
 
 
 
 
 
Bisogna stare attenti quando lo si usa per eliminare file o directory, perche', un comando sbagliato come:
 
 
 
"rm pippo * "; elimina il file pippo e anche tutti i file dentro quella directory. Meglio controllare con:
 
 
 
ls -a pippo* prima di cancellare qualcosa; in questa maniera, si potra' controllare cosa verra' eliminato.
 
 
 
 
 
 
 
 
 
 
 
IL COMANDO CAT
 
 
 
(precisazioni)
 
 
 
 
 
 
 
Puo' essere usato per creare
 
 
 
file di testo :
 
 
 
cat > nomefile
 
 
 
digitare il testo
 
 
 
ctrl+d = per chiudere il file
 
 
 
cat nomefile = per guardare il contenuto del file
 
 
 
 
 
 
 
Puo' essere usato per riassemblare files divisi o unire vari files :
 
 
 
es.
 
 
 
cat file1.txt file2.txt file3.txt > ris.txt
 
 
 
 
 
 
 
 
 
 
 
IL COMANDO CP
 
 
 
(precisazioni)
 
 
 
 
 
 
 
Puo' essere usato anche per trasferire un file esistente in un file che viene creato all'istante:
 
 
 
cp fileesistente file creatoadesso
 
 
 
 
 
 
 
La stessa cosa avviene per le directory
 
 
 
cp -r diresistente dircreataadesso
 
 
 
 
 
 
 
 
 
 
 
I COLLEGAMENTI
 
 
 
ln nome nomelink = per creare collegamenti fisici
 
 
 
ln -s nome nomelink = per creare collegamenti simbolici
 
 
 
 
 
 
 
 
 
 
 
2a)COMANDI VARI
 
 
 
pushd (Dice in che directory eravate prima)
 
 
 
popd (vi porta nella directory dove eravate prima)
 
 
 
cd - (come sopra)
 
 
 
 
 
 
 
 
 
 
 
3a)OCCUPAZIONE DEL DISCO
 
 
 
du -h (per visualizzare la quantita' in kilobyte e megabyte)
 
 
 
 
 
 
 
 
 
 
 
4a)I PROCESSI
 
 
 
& (da mettere a fine riga di comando) per eseguire un comando in background ossia dietro le quinte e darà questo
 
risultato:
 
 
 
[3] 32566  Dove 3 e' il numero del processo mentre 32566 e' l'ID del processo.
 
 
 
 
 
 
 
&& (da inserire tra 2 comandi, il secondo comando si avvierà solo quando il primo sarà terminato, ad esempio dir && top).
 
 
 
 
 
 
 
bg  (avvia il comando in background, la sintassi è:  bg numero_id_del_comando).
 
 
 
fg  (esegue un processo con priorità alta, la sintassi è:  fg numero_id_del_comando).
 
 
 
 
 
 
 
nohup (esegue un comando anche se si è usciti dalla sessione o è stata persa la connessione, la sintassi è: nohup dir
 
&), alla fine creerà un file chiamato nohup.out con all'interno il risultato del comando.
 
 
 
 
 
 
 
ps -ax = per visualizzare i processi in memoria.
 
 
 
kill = per uccidere un processo (con kill -l si visualizzano i segnali da mandare a morte.
 
 
 
kill -9 (n°processo) = forza la morte del processo.
 
 
 
killall = uccide tutti i processi).
 
 
 
 
 
 
 
 
 
 
 
5a)RAM
 
 
 
Per poter visualizzare la ram scrivere:
 
 
 
free
 
 
 
Per avere informazioni sulla ram utilizzata scrivere:
 
 
 
top
 
 
 
Controllare la parte in alto a sinistra dello schermo.
 
 
 
 
 
 
 
 
 
 
 
6a)MANIPOLAZIONE DEI DIRITTI DI ACCESSO
 
 
 
Se un file o una directory è di mia proprietà allora posso impostare a mio piacimento i suoi attributi (= diritti di
 
accesso). Il comando per fare ciò è chmod (change modes). La sua sintassi è la seguente:
 
 
 
chmod chi azione cosa nomefile
 
 
 
dove:
 
 
 
il parametro chi può essere u (user) g (groups) o (others) a (all)
 
 
 
il parametro azione può essere + (aggiungere) - (togliere)
 
 
 
il parametro cosa può essere r (read) w (write) x (execute)
 
 
 
il campo nomefile è il file o la directory oggetto del cambiamento.
 
 
 
(*) all indica contemporaneamente i tre tipi di utente.
 
 
 
Vediamo ora degli esempi pratici.Supponiamo di voler aggiungere accesso, lettura e scrittura a tutti nella directory.
 
 
 
drwx------ verdi users 512 pippo
 
 
 
Il modo più semplice è:
 
 
 
chmod a+rwx pippo
 
 
 
ovvero a parole "aggiungi (+) a tutti (a) lettura (r) scrittura (w) e accesso (x) al file pippo " (che poi è una
 
directory perché c'è d).
 
 
 
Il risultato è:
 
 
 
drwxrwxrwx verdi users 512 pippo
 
 
 
Altro esempio. Supponiamo di voler rendere il file
 
 
 
-r-------- verdi users 4096 paperino
 
 
 
leggibile da tutti e scrivibile solo dal proprietario :
 
 
 
chmod a+r paperino
 
 
 
chmod u+w paperino
 
 
 
E il risultato è:
 
 
 
-rw-r--r-- verdi users 4096 paperino
 
 
 
Altro esempio. Supponiamo di avere il file
 
 
 
-rw-rw-rw- rossi superuser 1234 pluto
 
 
 
Se eseguiamo:
 
 
 
chmod o-rw pluto
 
 
 
invece di ottenere:
 
 
 
-rw-rw---- rossi superuser 1234 pluto
 
 
 
si ottiene il messaggio:
 
 
 
Permission denied
 
 
 
Questo perché io (verdi) sto tentando di modificare gli attributi di un file che non mi appartiene (è di rossi)
 
 
 
 
 
 
 
 
 
 
 
7a)MANIPOLAZIONE DEI DIRITTI DI ACCESSO - METODO ALTERNATIVO
 
 
 
Un metodo più sbrigativo per assegnare gli attributi ad un file si basa su questo ragionamento. Supponiamo di attribuire
 
dei valori
 
 
 
numerici ai permessi possibili:
 
 
 
Lettura = 4 (r)
 
 
 
Scrittura = 2 (w)
 
 
 
Esecuzione = 1 (x)
 
 
 
 
 
 
 
(Ricordatevi che per una directory x significa accesso). In tale maniera, eseguendo delle semplicissime somme:
 
 
 
0 = Nessun permesso -
 
 
 
1 = Esecuzione x
 
 
 
2 = Scrittura w
 
 
 
3 = Scrittura + Esecuzione wx
 
 
 
4 = Lettura r
 
 
 
5 = Lettura + Esecuzione rx
 
 
 
6 = Lettura + Scrittura rw
 
 
 
7 = Lettura + Scrittura + Esecuzione rwx
 
 
 
 
 
 
 
Se affianchiamo i tre codici di accesso user / groups / others
 
 
 
otteniamo dei numeri di tre cifre, ognuna delle quali indica i permessi di ogni tipo di utente in modo sintetico. Per
 
esempio:
 
 
 
rwxrwxrwx 777
 
 
 
rw-rw-rw- 666
 
 
 
r--r--r-- 444
 
 
 
rwx------ 700
 
 
 
rw-r--r-- 644
 
 
 
 
 
 
 
e così via.... Perciò è possibile inglobare in un solo colpo tutti gli accessi di ogni singolo tipo di utente. Esiste
 
allora la sintassi
 
 
 
alternativa di chmod:
 
 
 
chmod codice nomefile
 
 
 
 
 
 
 
Esempio. Il secondo esempio sulla prima sintassi di chmod voleva
 
 
 
trasformare
 
 
 
-r-------- verdi users 4096 paperino
 
 
 
 
 
 
 
nel file:
 
 
 
-rw-r--r-- verdi users 4096 paperino
 
 
 
 
 
 
 
e necessitava di 2 chmod consecutivi, il primo per assegnare a+r e il secondo per assegnare u+w. Con la sintassi
 
alternativa di chmod è
 
 
 
possibile fare il tutto in un solo colpo, usando:
 
 
 
 
 
 
 
chmod a+r,u+w paperino -#-#-#-(attenzione alla virgola)-#-#-#-
 
 
 
 
 
 
 
oppure nella maniera più semplice:
 
 
 
 
 
 
 
chmod 644 paperino
 
 
 
 
 
 
 
 
 
 
 
8a)CAMBIARE LA PROPRIETA' DI UN FILE
 
 
 
Se sono proprietario di un file e volessi "regalarlo" a qualcuno, cioè fare in modo che questo qualcuno ne divenga il
 
nuovo proprietario, esiste il comando chown (change owner). La sua sintassi è:
 
 
 
chown nuovoproprietario.nuovogruppo file
 
 
 
Vediamo gli esempi. Supponiamo che rossi, dopo aver depositato nella mia directory il file:
 
 
 
-rw-rw-rw- rossi superuser 1234 pluto
 
 
 
voglia fare in modo che esso divenga di mia proprietà. Dovrà allora eseguire:
 
 
 
chown verdi.users pluto
 
 
 
Il risultato sarà:
 
 
 
-rw-rw-rw- verdi users 1234 pluto
 
 
 
 
 
 
 
 
 
 
 
9a)CREARE ED AGGIUNGERE GRUPPI ED UTENTI
 
 
 
Fare tutto come utente root.
 
 
 
Ad es. creare un gruppo chiamato supporto:
 
 
 
groupadd supporto
 
 
 
 
 
 
 
Ad es. creare un utente ed inserirlo nel gruppo supporto
 
 
 
useradd utente -c (commento) -d (home directory) -g (gruppo)
 
 
 
useradd cristian -c ordinato -d /reparto -g supporto
 
 
 
 
 
 
 
Adesso bisogna inserire una password:
 
 
 
passwd cristian
 
 
 
 
 
 
 
E' possibile usare anche:
 
 
 
adduser (completo di tutto, pure di inserimento password).
 
 
 
Verranno proposti i parametri di default , sono possibili delle modifiche.
 
 
 
 
 
 
 
Modificare il gruppo di appartenenza di un utente:
 
 
 
usermod -gnome_gruppo cristian
 
 
 
 
 
 
 
Inserire l'utente in altri gruppi:
 
 
 
usermode -Ggruppo1 gruppo2 gruppo3 cristian
 
 
 
 
 
 
 
Per eliminare utente e gruppo scrivere:
 
 
 
groupdel supporto
 
 
 
userdel cristian  (usando userdel -r verranno cancellati tutti i files e la directory dell'utente)
 
 
 
 
 
 
 
 
 
 
 
10a)FORMATTARE FLOPPY
 
 
 
Classica formattazione:
 
 
 
fdformat /dev/fd0H1440 formatta il drive A: a 1440 kb
 
 
 
fdformat /dev/fd1h1200 formatta il drive B: a 1.2 Mb
 
 
 
fdformat /dev/fd0H720 formatta il drive A: a 720 kb
 
 
 
 
 
 
 
Per cercare blocchi danneggiati:
 
 
 
badblocks /dev/fd0H1440
 
 
 
 
 
 
 
Formattare un floppy per msdos o per win:
 
 
 
fdformat /dev/fd0H1440 && mkfs -t msdos /dev/fd0
 
 
 
fdformat /dev/fd0H1440 && mkfs -t vfat /dev/fd0
 
 
 
 
 
 
 
 
 
 
 
11a)CONTROLLARE L'EFFICIENZA DEI DISCHI IDE
 
 
 
Un grazie a Riccardo Pelizzi (r.pelizzi@virgilio.it)
 
 
 
Controllare l'efficienza dei propri dischi ide.
 
 
 
nota: queste opzioni possono danneggiare i vostri dischi ide
 
 
 
Se il dispositivo ide (che può essere sia un hard disk sia un cd-rom sia un dvd) e la vostra scheda madre sono recenti,
 
il vostro disco supporta la modalità di trasferimento a 32-bit, la modalità ultra-DMA e l'irq unmasking. Il kernel è
 
molto conservativo sotto questo punto di vista (poichè attivando queste opzioni su schede o su dispositivi che non le
 
supportano si rischia di rovinarli) e se non ci ha pensato la vostra distro a configurare a puntino i vostri dischi, lo
 
faremo noi con il comando hdparm:
 
 
 
-Capire a che dispositivo corrisponde ciascun disco usiamo il comando:
 
 
 
hdparm -i /dev/hdX
 
 
 
dove X sta per il dispositivo che dovete controllare. Di solito sono a, b, c, d.
 
 
 
Una delle prime voci di output sarà il modello del vostro dispositivo, così potrete capire che dispositivo IDE state
 
interrogando.
 
 
 
-Controlliamo che il supporto per il nostro chipset sia attivo. Non sarà possibile interagire con i dischi senza avere
 
il supporto per il proprio chipset
 
 
 
integrato nel kernel o caricato come modulo. Per esempio avendo un chipset Via ed avendo compilato il driver come
 
modulo, prima di ogni altra operazione bisogna scrivere "modprobe via82cxxx".
 
 
 
-Controlliamo lo stato dei nostri dischi. Il comando:
 
 
 
hdparm /dev/hdX
 
 
 
darà un output simile a questo:
 
 
 
multcount = 16 (on)
 
 
 
IO_support = 1 (32-bit)
 
 
 
unmaskirq = 1 (on)
 
 
 
using_dma = 1 (on)
 
 
 
keepsettings = 0 (off)
 
 
 
readonly = 0 (off)
 
 
 
readahead = 8 (on)
 
 
 
geometry = 9964/255/63, sectors = 160086528, start = 0
 
 
 
Questo è l'output di un disco che dovrebbe essere già configurato a puntino. L'unica opzione importante ma non visibile
 
da questo menù è la modalità udma. Con il comando precedente potete vedere se la modalità dma è attivata, ma non che
 
modalità è attivata.
 
 
 
Ma a questo penseremo alla fine.
 
 
 
-Configuriamo il nostro dispositivo
 
 
 
Cominciamo dando il comando:
 
 
 
hdparm -t /dev/hdX
 
 
 
e segnatevi il vostro transfer rate. Se IO_Support è uguale a 0, attiviamolo con il comando:
 
 
 
hdparm -c1 /dev/hdX.
 
 
 
Alcune combinazioni di schede madri / dispositivi richiedono il parametro c3. Questa opzione dovrebbe da sola
 
raddoppiare il transfer rate del vostro dispositivo. Unmaskirq serve per mantenere il sistema operativo "responsive"
 
(come lo traduco? Scattante? Pronto? Sono orribili...)
 
 
 
mentre si legge dal dispositivo, utile soprattutto per cd/dvd. Si attiva con:
 
 
 
hdparm -u1 /dev/hdX
 
 
 
E ora passiamo alla parte più interessante: la modalità dma. Date il comando:
 
 
 
hdparm -t /dev/hdX
 
 
 
dopo ogni operazione.
 
 
 
Ogni operazione dovrebbe aumentare il vostro transfer rate. Se così non è, dovrete tornare all'opzione precedente,
 
perchè la corrente non è supportata. Cominciamo con:
 
 
 
hdparm -d1 /dev/hdX
 
 
 
Questa opzione non porta necessariamente ad un aumento di prestazioni, se non è stata attivata una modalità dma valida:
 
andiamo a settarla.
 
 
 
Questa è la tabella dei parametri da fornire ad hdparm (rubata ai gentili signori della intel):
 
 
 
(ATA/33) -X66
 
 
 
(ATA/66) -X68
 
 
 
(ATA/100) -X69
 
 
 
Per esempio per attivare la modalità ATA/66, date il comando:
 
 
 
hdparm -X68 /dev/hdX.
 
 
 
C'è un ultima opzione da settare, un poco più pericolosa delle altre: multicount. Date il comando:
 
 
 
hdparm -i /dev/hdX
 
 
 
e leggete la voce max_multicount. Sarà il valore da settare come:
 
 
 
hdparm -mY /dev/hdX
 
 
 
Ovviamente questa opzione non è settabile per i cd/dvd che hanno una sola testina, il laser. A questo punto dovreste
 
avere un transfer rate di almeno 40MB al secondo con un disco ATA/66. Confrontatelo con quello ottenuto prima di ogni
 
operazione. Godete o rimanete impassibili a seconda del risultato :-)
 
 
 
NOTA: Queste opzioni non sono permanenti, per cui dovrete mettere tutti i vostri bei comandi in uno script e eseguirlo
 
all'avvio mettendo il nome del file in fondo a:
 
 
 
  /etc/rc.d/rc.local
 
  
 +
Mostra il contenuto di un file
 +
cat ''nomefile''
  
 +
Simile a cat, ma permette di scorrere il file avanti ed in dietro. Utile per file lunghi.
 +
less ''nomefile''
  
 +
==Il carattere JOLLY '''*'''==
  
 +
'''*''' significa ''qualunque carattere, per qualunque lunghezza''
 +
'''?''' significa '' '''un''' qualsiasi '''solo''' carattere in questo punto''
  
12a)HARDWARE INSTALLATO
+
Introdotti a fianco di una parola, fanno riferimento alla parola e quelle che presentano un pattern corrispondente:
  
Dare i seguenti comandi come utente root:
+
Es. ''pippo*'' identifica ''pippo pippo1 pippociao pippopluto'' e simili
  
lspci
+
Es. ''p?zzo'' identifica ''pazzo pezzo pizzo pozzo puzzo'' e simili
  
dmesg
+
==Gestione dell'output==
 +
Ingabbia l'output del comando che lo precede e lo da in input al comando successivo.
 +
|
  
cat /proc/cpuinfo
+
Esegue il comando che lo prece e poi passa automaticamente al successivo indipendentemente dall'esito del comando eseguito in precedenza.
 +
;
  
 +
Esegue il comando che lo precede e poi passa al successivo solo se il precedente è andato a buon fine.
 +
&
  
1b)L'AMBIENTE GRAFICO
+
Reindirizza l'output a video del comando che lo precede in un altro file,  sovrascrivendo quello che c'era prima nel file destinazione. Può essere usato per la copia.
 +
>
  
Per lanciare l'Xgrafico scrivere ( twm ) e se si vuole avviarlo automaticamente scrivere nel file .xinitrc (nella tua
+
È analogo al comando >, ma accoda l'input alla fine del file destinazione senza cancellarne il contenuto preesistente.
home directory) la
+
>>
  
scritta twm e nel file .profile o .bash_profile(startx)
+
=APT=
 +
Gestore pacchetti per distribuzioni Debian-based, come Debian, Ubuntu, Mint...
  
Invece di scrivere twm e' possibile scrivere anche mwm, 4dwm, afterstep, fvwm95, fvwm, gnome-session ecc.. (/etc/X11).
+
Aggiorna la lista dei pacchetti interrogando i repository:
 +
apt-get update
  
 +
Aggiorna i pacchetti presenti sulla macchina con nuove versioni se presenti nei repository e risolvendo le relative dipendenze:
 +
apt-get upgrade
  
 +
Installa il pacchetto con le relative dipendenze:
 +
apt-get install ''nome_pacchetto''
  
 +
Cerca il pacchetto che ha nel nome o nella descrizione la stringa che gli è stata specificata.
 +
apt-cache search ''stringa_da_cercare''
  
 +
Aggiorna il sistema operativo alla versione successiva, aggiornando automaticamente anche i sources dei repository. Da usare con cautela!!
 +
apt-get dist-upgrade
  
2b)RICERCA FILE
+
Tramite ''apt'' è possibile installare anche una cache dei pacchetti, molto utile nel caso si abbiamo molti client su cui installare programmi e aggiornamenti, prendendo i file direttamente dalla cache del proxy locale anziché dalla rete internet.
 +
In Officina abbiamo un [[Apt-Cacher | transparent proxy]] che lo fa automaticamente, senza bisogno di configurare niente, basta attaccarsi alla rete. :-)
  
- find (directory-file) es. find / -name cri.txt    (/ cerca in tutto il file system, -name seguito dal nome del file)
+
=tar=
 +
Programma che permette di creare archivi, un tempo usato per archiviare i file su nastro.
  
- find /root -size 990k ( trova un file di dimensione 990k nella directory /root)
+
Opzioni:
  
- locate file (es. locate cri.txt) maniera velocissima di trovare un file (dare prima il comando updatedb e poi il
+
* -c → crea l'archivio.
comando locate).
+
* -f → archivia su file.
 +
* -v → mostra la lista dei file che vengono aggiunti all'archivio dettagliatamente (verbose mode).
 +
* -x → estrai l'archivio.
 +
* -z → crea archivio compresso con gzip.
 +
* -j → crea archivio compresso con bzip2.
  
- which cri.txt in varie directory predeterminate ( which cri.txt /usr /tmp/root)
+
Es:
 +
tar -czf ''nome_file_da_creare'' ''file_da_comprimere.gz'' (compressione di un file in formato gzip)
 +
tar -cjf ''nome_file_da_creare'' ''file_da_comprimere.bz2'' (compressione di un file in formato bzip2)
  
- grep cerca una parola all'interno di un documento  (es. grep "casa" *.txt )
+
tar -xjf ''file_compresso.bz2'' (estrazione di un file in formato bzip2)  
  
 +
=Permessi, gruppi, utenti=
 +
I gruppi si creano con il comando:
 +
groupadd ''nome_gruppo''
  
 +
Sia quelli standard che quelli creati a posteriori compaiono nel file ''/etc/group'' insieme ai loro membri e altre informazioni relative.
  
 +
Gruppi famosi:
  
 +
* alsa → per l'audio
 +
* network → per la rete
 +
* optical → per lettori e masterizzatori
 +
* wheel → gruppo che ha permessi quasi da root
 +
* users → gruppo dove ci stanno tutti gli utenti
  
3b)ARCHIVIAZIONE E COMPRESSIONE FILES
+
Gli utenti si creano con il comando
 +
useradd ''nome_utente''
 +
o con lo script
 +
adduser ''nome_utente''
  
 +
La lista degli utenti, insieme ad alcune informazioni su di essi, compare nel file ''/etc/passwd''
  
 +
Per cambiare i permessi ai file si usa il comando
 +
chmod
  
ESTENSIONE    COMPRIMERE                                          DECOMPRIMERE
+
Metodo delle lettere (UGO – User/Group/Others):
 +
* Permesso di lettura → r
 +
* Permesso di scrittura → w
 +
* Permesso di esecuzione → x
 +
 +
chmod u+x ''nome_file'' → do i permessi di esecuzione al proprietario
 +
chmod u-x ''nome_file'' → tolgo i permessi di esecuzione al proprietario
  
 +
Lo stesso vale per il ''gruppo'' e per gli ''altri''. Alcuni esempi:
  
 +
chmod g+w ''nome_file'' → do i permessi di scrittura al gruppo
 +
chmod o+w ''nome_file'' → do i permessi di scrittura a tutti gli altri
 +
chmod a-w ''nome_file'' → tolgo i diritti di scrittura a tutti
  
.Z                        compress cri.txt                                      uncompress cri.Z
+
Sempre usando il comando ''chmod'' si possono dare i permessi ai file anche usando il metodo dei numeri, utilizzando la notazione binaria:
  
.zip                      zip cri.txt cri.zip                                      unzip cri.zip
+
* 4 → lettura
 +
* 2 → scrittura
 +
* 1 → esecuzione
  
.gz                      gzip cri.txt                                                gunzip cri.gz
+
I diritti si danno al proprietario, gruppo e others sommando i numeri corrispondenti ai diritti che vogliamo dargli.
  
.bzip2                  bzip2 cri.txt                                              bunzip2 -d cri.bz2
+
Ad esempio, per dare i diritti di esecuzione, lettura e scrittura al proprietario, al gruppo e a tutti gli altri
 +
chmod 777 ''nome_file''
  
.tar.gz                tar zcvf cri.tar.gz</dir/files>                    tar zxvf cri.tar.gz
+
* Il primo 7 è dato dalla somma di esecuzione+scrittura+lettura=4+2+1=7 ovvero i diritti che diamo al proprietario.
 +
* Il secondo 7 è dato dalla somma di esecuzione+scrittura+lettura=4+2+1=7 ovvero i diritti che diamo al gruppo.
 +
* Il terzo 7 è dato dalla somma di esecuzione+scrittura+lettura=4+2+1=7 ovvero i diritti che diamo agli altri.
  
.lzh                      lha a cri.lzh</dir/files>                            lha x cri.lzh
+
E cosi per tutte le possibili combinazioni.
  
.rar                    rar a cri.rar</dir/files>                            unrar x cri.rar
+
Cambiare un gruppo ad un file
 +
chgroup ''nome_gruppo'' ''nome_file''
  
.zoo                    zoo -add cri.zoo</dir/files>                      zoo -extract cri.zoo
+
Attribuisce all'utente la proprietà del file. Solo l'utente ''root'' può eseguire questo comando (eccezione allo standard POSIX):
 +
chown ''nome_utente'' ''nome_file''
  
 +
''Nota:'' se si hanno i permessi di scrittura/lettura/esecuzione su una directory sarà possibile anche scrivere/leggere/eseguire i file che stanno al suo interno anche se non ho i permessi direttamente su quei file specifici.
  
4b)MONTARE UN FLOPPY
+
=/etc/fstab=
  
Per montare un floppy il comando e':
+
È il file in cui sono specificati i device che vengono montati all'avvio.
  
mount -t ext2 /dev/fd0 /mnt/floppy ( nome directory che devi creare con mkdir )
+
Es: montaggio automatico di una partizione NTFS di Windows:
  
Se al posto di ext2 (linux) scrivi msdos puoi utilizzare dischetti che vanno bene anche su sistemi dos/windows
+
/dev/sda1      /media/win ntfs-3g defaults,users,umask=000,locale=it_IT.UTF-8 0 0
  
umount -t ext2 /dev/fd0 Per smontarlo.
+
In ''fstab'' non va messo il riferimento a ''/media'' o ''/run/media'', ma solo a ''/mnt'': infatti, per convenzione, in ''/media'' vengono montati i dispositivi rilevati ''al volo'' dall'interfaccia grafica (dbus), mentre ''/mnt'' è riservato ai mount manuali.
  
 +
=Struttura del filesystem=
 +
Struttura standard della /
  
5b)MONTARE UN CDROM
+
* /bin: contiene i programmi che sono essenziali all'avviamento e all'uso della macchina. Es. bash, mv, cp...
  
Per montare un cdroom il comando è:
+
* /boot: contiene i file di configurazione del bootloader, necessari all'avviamento della macchina, e il kernel. Es. I file di configurazione del GRUB.
  
mount -t iso9660 /dev/hdc /mnt/cdrom (nome dir che devi crearecon mkdir)
+
* /dev: tutti i file contenuti in questa directory sono dispositivi che fanno parte del sistema o che vengono emulati. Es. I dischi ''sda'' (disco generico), ''cdrom'' (cdrom), ''sr0'' (disco ottico), ''ttyS0'' (seriale), ''lp0'' (parallela)
  
Controlla che il tuo cdrom sia hdc o hdd o scd0 o scd1 (se SCSI) e ricordati di creare una directory di nome cdrom.
+
* /etc: contiene i file di configurazione dei programmi e del sistema. Es: ''/etc/fstab'', ''/etc/group''
  
 +
* /home: non è strettamente necessaria. Contiene le directory personali dei singoli utenti.
  
6b)MONTARE UNA PARTIZIONE WINDOWS
+
* /lib: contiene le libreria che sono usate dai programmi che stanno in /bin e /sbin, nonchè i moduli del kernel.
  
Per montare una partizione windows il comando e':
+
* /media: usata da ''udev'' e ''dbus'' per montare automaticamente le periferiche quando vengono inserite. Es. pennine USB e CD/DVD
  
mount -t vfat /dev/hda1 /mnt/win ( nome dir che devi creare con mkdir)
+
* /mnt: cartella dove vengono montati manualmente i device e le partizioni che solitamente sono statici e non vengono rimossi. Es: partizioni su dischi fissi aggiuntivi
  
Controlla che la partizione windows sia in hda1 (nel mio caso) e ricordati di creare una directory di nome win ( a tua
+
* /opt: di solito contiene i programmi che non interagiscono con altri programmi installati, tra cui molti programmi proprietari. Es: Skype, Google Chrome
discrezione ).
 
  
Per montare una partizione windows NT il comando e':
+
* /proc: è un file system virtuale. All'interno ci sono file che danno informazioni sul sistema. Es: ''/proc/cpuinfo'' dà informazioni sul processore
  
mount -t ntfs /dev/partizione_di_nt /mnt/winnt
+
* /root: è la home dell'utente root
  
 +
* /sbin: contiene eseguibili e file di sistema importanti che può usare solo l'utente root
  
7b)MONTARE UNA PARTIZIONE LINUX
+
* /srv: è la cartella che contiene i documenti dei server. Es: document root del server Apache
  
Per montare una partizione linux il comando e':
+
* /tmp: contiene i file temporanei. È montata in RAM, quindi ad ogni riavvio il suo contenuto viene cancellato.
  
mount -t ext2 /dev/hda5 /mnt/linux1 (nome dir che devi creare con mkdir)
+
* /usr: utilizzata per l'installazione dei programmi.
 +
** /usr/bin: contiene i binari dei programmi installati
 +
** /usr/share: contiene file aggiuntivi distribuiti insieme ai programmi installati (font, immagini, suoni, temi)
 +
** /usr/src: contiene i sorgenti del kernel o dei programmi compilati dall'utente
  
-t è il tipo di filesystem, ad esempio (ext2, ext3, reiserfs, etc....)
+
* /var: ha contenuti dinamici, ovvero file che sono soggetti a modifiche dal sistema.
 +
** /var/log: contiene i log di sistema. Es: ''/var/log/auth.log''
 +
** /var/cache: contiene la cache di sistema, tra cui i pacchetti. Es: ''/var/cache/pacman/pkg'' oppure ''/var/cache/apt/archives''
  
mount -w -n -o remount /      montare il file system in scrittura
+
* swap: si tratta della memoria virtuale. Serve al sistema operativo per "swappare", cioè utilizzare questo spazio su disco come spazio di appoggio quando la RAM è insufficiente. Al giorno d'oggi, con le grandi quantità di RAM che vengono installate sui client (4GB), è quasi  praticamente inutile. Ad ogni modo, ''swappare'' su disco è estremamente lento (dopo due minuti volate il computer dalla finestra).
  
mount -r -n -o remount /      montare il file system in lettura
+
[[Category: Howto]]

Versione attuale delle 17:30, 1 mag 2018

Questa pagina è un utile sillabo che raccoglie informalmente un po' di comandi e alcune delle loro opzioni più comuni. È utile come riferimento per tutti coloro che si avvicinano al terminale per la prima volta.

L'argomento può essere approfondito venendo nella nostra officina o seguendo uno dei nostri corsi.

Altre risorse ben fatte possono essere trovate qui:

  • www.wowarea.com mirror - Guida un po' vecchia, ma molto ben fatta, e in italiano!
  • Slackware Linux Essentials - Libro non proprio recente, ma in italiano, lettura scorrevole e ben fatto per prendere confidenza con il terminale. Lo scopo è imparare a installare e usare Slackware, ma basta limitarsi ai capitoli di interesse (es. capitolo 8 e successivi)

Introduzione

Una shell è un software che attraverso un'interfaccia a riga di comando permette di eseguire dei programmi.

Sui sistemi Microsoft (DOS e Windows) è chiamata prompt dei comandi.

La maggior parte delle distribuzioni Linux utilizza la Bourne Again Shell (bash), una versione avanzata della vecchia Bourne shell (sh).

Altre shell:

  • Almquist shell (ash, sh, dash): veloce e minimale, shell di default di Android, è usata su Debian e derivate per eseguire gli script di avvio.
  • TENEX C Shell (tcsh): shell predefinita di FreeBSD, compatibile con la vecchia C shell (csh).
  • Korn shell (ksh): shell predefinita di NetBSD ed OpenBSD.
  • Z shell (zsh): compatibile con bash, incorpora varie funzionalità della tcsh e ksh

Nota: su Linux tutto è un file: cartelle, file, partizioni, dischi, periferiche, interfacce, sono trattati allo stesso modo. Una cartella si distingue da un file perché contiene al suo interno due elementi: «punto» e «punto punto».

Collegamento ricorsivo a se stessa:

.

Collegamento alla cartella sovrastante

..


Comandi principali

Anteposto ad un comando ne mostra la guida:

man

Gestione di file e cartelle

Navigare tra le cartelle

Comando Change Directory:

cd cartella

Casi particolari

cd ..                 # Torna alla cartella di livello superiore
cd -P collegamento    # Percorre il collegamento posizionandosi in quella cartella

Visualizzare il contenuto delle cartelle

Mostra la lista di elementi contenuti in una directory.

ls

Mostra la lista di tutti gli elementi di una directory inclusi quelli nascosti.

ls -a

Mostra gli elementi contenuti in una directory sotto forma di lista, descrivendone il tipo (file, cartella o link), i diritti, il proprietario, il gruppo e la data di modifica.

ls -l

Mostra la lista di tutti gli elementi di una directory indicando la dimensione dei file in modo “human readable”, ovvero espressa in Kbyte o Mbyte anziché in byte.

ls -h

Combina i tre comandi precedenti.

ls -alh

Crea una directory

mkdir nome_cartella

Copia file o cartelle. Con l'opzione -R (ricorsività) il comando cp copia anche i file nelle sottocartelle, fino al livello più basso.

cp file_o_directory destinazione

Permette di spostare e rinominare i file. Come per il comando cp, l'opzione -R, ne applica una ricorsività.

mv file_o_directory destinazione


Cancella un file

rm file

Applica il comando Cancella ricorsivamente, all'interno delle sottocartelle, cancellandone il contenuto:

rm -r cartella

Cancella forzatamente il file ma solo se si hanno i permessi giusti sul file in questione. Non chiede la conferma prima di eliminare!

rm -f 

Cancella una cartella e tutto il suo contenuto senza chiedere conferma per ogni file.

rm -rf cartella

Crea un link statico al file specificato.

ln -s file destinazione

Indica gli utenti che in quel momento stanno lavorando sulla macchina, il tipo di console TTY (tele type terminal) da cui si connettono, l'ora di login e la macchina da cui hanno effettuato la connessione.

w

Print Working Directory mostra il percorso (path) della cartella in cui ci troviamo.

pwd

Golem-template-note-info.png Su Linux e Unix, i file sono tutti uguali e tutto è concepito come un file, anche le periferiche. I file non necessitano di un'estensione, anche se questa viene convenzionalmente usata, ma vengono identificati direttamente in base al loro contenuto. Questo fa sì che, per esempio, file di testo possano essere aperti solo da programmi in grado di elaborare file di testo e non da altri, anche se non hanno l'estensione txt!


Spegnimento e Riavvio

Spenge il PC

systemctl poweroff

Riavvia il PC

reboot


Sistema e Kernel

Quantità di spazio usata nella directory e sottodirectory, espressa in formato umanamente comprensibile (MB o GB).

du -h

Task manager:

top

Visualizza i programmi e demoni in corso con i relativi pid

ps aux

Mostra le partizioni montate e lo spazio a disposizione su di esse, espresso in formato umanamente coprensibile:

df -h

Mostra la memoria ram e swap occupata, libera e totale

free -m

Indica la versione del kernel e molte altre informazioni accessorie:

uname -a

visualizza i moduli (driver) caricati nel kernel

lsmod

Altro

Visualizza l'elenco degli ultimi comandi eseguiti

history 

Mostra il contenuto di un file

cat nomefile

Simile a cat, ma permette di scorrere il file avanti ed in dietro. Utile per file lunghi.

less nomefile

Il carattere JOLLY *

* significa qualunque carattere, per qualunque lunghezza ? significa un qualsiasi solo carattere in questo punto

Introdotti a fianco di una parola, fanno riferimento alla parola e quelle che presentano un pattern corrispondente:

Es. pippo* identifica pippo pippo1 pippociao pippopluto e simili

Es. p?zzo identifica pazzo pezzo pizzo pozzo puzzo e simili

Gestione dell'output

Ingabbia l'output del comando che lo precede e lo da in input al comando successivo.

|

Esegue il comando che lo prece e poi passa automaticamente al successivo indipendentemente dall'esito del comando eseguito in precedenza.

;

Esegue il comando che lo precede e poi passa al successivo solo se il precedente è andato a buon fine.

&

Reindirizza l'output a video del comando che lo precede in un altro file, sovrascrivendo quello che c'era prima nel file destinazione. Può essere usato per la copia.

> 

È analogo al comando >, ma accoda l'input alla fine del file destinazione senza cancellarne il contenuto preesistente.

>>

APT

Gestore pacchetti per distribuzioni Debian-based, come Debian, Ubuntu, Mint...

Aggiorna la lista dei pacchetti interrogando i repository:

apt-get update

Aggiorna i pacchetti presenti sulla macchina con nuove versioni se presenti nei repository e risolvendo le relative dipendenze:

apt-get upgrade

Installa il pacchetto con le relative dipendenze:

apt-get install nome_pacchetto

Cerca il pacchetto che ha nel nome o nella descrizione la stringa che gli è stata specificata. apt-cache search stringa_da_cercare

Aggiorna il sistema operativo alla versione successiva, aggiornando automaticamente anche i sources dei repository. Da usare con cautela!!

apt-get dist-upgrade

Tramite apt è possibile installare anche una cache dei pacchetti, molto utile nel caso si abbiamo molti client su cui installare programmi e aggiornamenti, prendendo i file direttamente dalla cache del proxy locale anziché dalla rete internet. In Officina abbiamo un transparent proxy che lo fa automaticamente, senza bisogno di configurare niente, basta attaccarsi alla rete. :-)

tar

Programma che permette di creare archivi, un tempo usato per archiviare i file su nastro.

Opzioni:

  • -c → crea l'archivio.
  • -f → archivia su file.
  • -v → mostra la lista dei file che vengono aggiunti all'archivio dettagliatamente (verbose mode).
  • -x → estrai l'archivio.
  • -z → crea archivio compresso con gzip.
  • -j → crea archivio compresso con bzip2.

Es:

tar -czf nome_file_da_creare file_da_comprimere.gz (compressione di un file in formato gzip)
tar -cjf nome_file_da_creare file_da_comprimere.bz2 (compressione di un file in formato bzip2)
tar -xjf file_compresso.bz2 (estrazione di un file in formato bzip2) 

Permessi, gruppi, utenti

I gruppi si creano con il comando:

groupadd nome_gruppo

Sia quelli standard che quelli creati a posteriori compaiono nel file /etc/group insieme ai loro membri e altre informazioni relative.

Gruppi famosi:

  • alsa → per l'audio
  • network → per la rete
  • optical → per lettori e masterizzatori
  • wheel → gruppo che ha permessi quasi da root
  • users → gruppo dove ci stanno tutti gli utenti

Gli utenti si creano con il comando

useradd nome_utente

o con lo script

adduser nome_utente

La lista degli utenti, insieme ad alcune informazioni su di essi, compare nel file /etc/passwd

Per cambiare i permessi ai file si usa il comando

chmod

Metodo delle lettere (UGO – User/Group/Others):

  • Permesso di lettura → r
  • Permesso di scrittura → w
  • Permesso di esecuzione → x
chmod u+x nome_file → do i permessi di esecuzione al proprietario
chmod u-x nome_file → tolgo i permessi di esecuzione al proprietario

Lo stesso vale per il gruppo e per gli altri. Alcuni esempi:

chmod g+w nome_file → do i permessi di scrittura al gruppo
chmod o+w nome_file → do i permessi di scrittura a tutti gli altri 
chmod a-w nome_file → tolgo i diritti di scrittura a tutti

Sempre usando il comando chmod si possono dare i permessi ai file anche usando il metodo dei numeri, utilizzando la notazione binaria:

  • 4 → lettura
  • 2 → scrittura
  • 1 → esecuzione

I diritti si danno al proprietario, gruppo e others sommando i numeri corrispondenti ai diritti che vogliamo dargli.

Ad esempio, per dare i diritti di esecuzione, lettura e scrittura al proprietario, al gruppo e a tutti gli altri

chmod 777 nome_file
  • Il primo 7 è dato dalla somma di esecuzione+scrittura+lettura=4+2+1=7 ovvero i diritti che diamo al proprietario.
  • Il secondo 7 è dato dalla somma di esecuzione+scrittura+lettura=4+2+1=7 ovvero i diritti che diamo al gruppo.
  • Il terzo 7 è dato dalla somma di esecuzione+scrittura+lettura=4+2+1=7 ovvero i diritti che diamo agli altri.

E cosi per tutte le possibili combinazioni.

Cambiare un gruppo ad un file

chgroup nome_gruppo nome_file

Attribuisce all'utente la proprietà del file. Solo l'utente root può eseguire questo comando (eccezione allo standard POSIX):

chown nome_utente nome_file

Nota: se si hanno i permessi di scrittura/lettura/esecuzione su una directory sarà possibile anche scrivere/leggere/eseguire i file che stanno al suo interno anche se non ho i permessi direttamente su quei file specifici.

/etc/fstab

È il file in cui sono specificati i device che vengono montati all'avvio.

Es: montaggio automatico di una partizione NTFS di Windows:

/dev/sda1       /media/win ntfs-3g defaults,users,umask=000,locale=it_IT.UTF-8 0 0

In fstab non va messo il riferimento a /media o /run/media, ma solo a /mnt: infatti, per convenzione, in /media vengono montati i dispositivi rilevati al volo dall'interfaccia grafica (dbus), mentre /mnt è riservato ai mount manuali.

Struttura del filesystem

Struttura standard della /

  • /bin: contiene i programmi che sono essenziali all'avviamento e all'uso della macchina. Es. bash, mv, cp...
  • /boot: contiene i file di configurazione del bootloader, necessari all'avviamento della macchina, e il kernel. Es. I file di configurazione del GRUB.
  • /dev: tutti i file contenuti in questa directory sono dispositivi che fanno parte del sistema o che vengono emulati. Es. I dischi sda (disco generico), cdrom (cdrom), sr0 (disco ottico), ttyS0 (seriale), lp0 (parallela)
  • /etc: contiene i file di configurazione dei programmi e del sistema. Es: /etc/fstab, /etc/group
  • /home: non è strettamente necessaria. Contiene le directory personali dei singoli utenti.
  • /lib: contiene le libreria che sono usate dai programmi che stanno in /bin e /sbin, nonchè i moduli del kernel.
  • /media: usata da udev e dbus per montare automaticamente le periferiche quando vengono inserite. Es. pennine USB e CD/DVD
  • /mnt: cartella dove vengono montati manualmente i device e le partizioni che solitamente sono statici e non vengono rimossi. Es: partizioni su dischi fissi aggiuntivi
  • /opt: di solito contiene i programmi che non interagiscono con altri programmi installati, tra cui molti programmi proprietari. Es: Skype, Google Chrome
  • /proc: è un file system virtuale. All'interno ci sono file che danno informazioni sul sistema. Es: /proc/cpuinfo dà informazioni sul processore
  • /root: è la home dell'utente root
  • /sbin: contiene eseguibili e file di sistema importanti che può usare solo l'utente root
  • /srv: è la cartella che contiene i documenti dei server. Es: document root del server Apache
  • /tmp: contiene i file temporanei. È montata in RAM, quindi ad ogni riavvio il suo contenuto viene cancellato.
  • /usr: utilizzata per l'installazione dei programmi.
    • /usr/bin: contiene i binari dei programmi installati
    • /usr/share: contiene file aggiuntivi distribuiti insieme ai programmi installati (font, immagini, suoni, temi)
    • /usr/src: contiene i sorgenti del kernel o dei programmi compilati dall'utente
  • /var: ha contenuti dinamici, ovvero file che sono soggetti a modifiche dal sistema.
    • /var/log: contiene i log di sistema. Es: /var/log/auth.log
    • /var/cache: contiene la cache di sistema, tra cui i pacchetti. Es: /var/cache/pacman/pkg oppure /var/cache/apt/archives
  • swap: si tratta della memoria virtuale. Serve al sistema operativo per "swappare", cioè utilizzare questo spazio su disco come spazio di appoggio quando la RAM è insufficiente. Al giorno d'oggi, con le grandi quantità di RAM che vengono installate sui client (4GB), è quasi praticamente inutile. Ad ogni modo, swappare su disco è estremamente lento (dopo due minuti volate il computer dalla finestra).