Differenze tra le versioni di "Linea di comando"

Da GolemWiki.
m (Categoria HowTo)
(sistemata un po' per essere presentabile ai corsi)
Riga 1: Riga 1:
 +
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 Informatica | officina]], seguendo uno dei nostri [[:Categoria:Corsi | corsi]] oppure su [http://www.wowarea.com/italiano/linux/guida.htm www.wowarea.com] (guida un po' vecchia, ma molto ben fatta, e in italiano!)
 +
 
=Introduzione=
 
=Introduzione=
 
Una shell è un software che attraverso un'interfaccia a riga di comando permette di eseguire dei programmi.  
 
Una shell è un software che attraverso un'interfaccia a riga di comando permette di eseguire dei programmi.  
Riga 15: Riga 19:
 
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».
 
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 ricorsivo a se stessa
 
  
 +
Collegamento alla cartella sovrastante
 
  ..
 
  ..
collegamento alla cartella sovrastante
+
 
  
 
=Comandi principali=
 
=Comandi principali=
 +
Anteposto ad un comando ne mostra la guida:
 
  man
 
  man
Anteposto ad un comando ne mostra la guida
 
 
  
 
==Gestione di file e cartelle==
 
==Gestione di file e cartelle==
 +
Permette di tornare alla cartella di livello superiore:
 
  cd ..
 
  cd ..
Permette di tornare alla cartella di livello superiore
 
  
 +
Mostra la lista di elementi contenuti in una directory.
 
  ls
 
  ls
Mostra la lista di elementi contenuti in una directory.
 
  
 +
Mostra la lista di tutti gli elementi di una directory inclusi quelli nascosti.
 
  ls -a
 
  ls -a
Mostra la lista di tutti gli elementi di una directory inclusi quelli nascosti.
 
  
 +
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 -l
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.
 
  
 +
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 -h
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.
 
  
 +
Combina i tre comandi precedenti.
 +
ls -alh
 +
 +
Crea una directory
 
  mkdir ''nome_cartella''
 
  mkdir ''nome_cartella''
Crea una directory
 
 
ls -alh
 
Combina i tre comandi precedenti.
 
  
 +
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''
 
  cp ''file_o_directory'' ''destinazione''
Copia file o cartelle. Con l'opzione -R (ricorsività) il comando cp copia anche i file nelle sottocartelle, fino al livello più basso.
 
  
mv ''file_o_directory'' ''destinazione''
 
 
Permette di spostare e rinominare i file.
 
Permette di spostare e rinominare i file.
 
Come per il comando cp, l'opzione -R, ne applica una ricorsività.
 
Come per il comando cp, l'opzione -R, ne applica una ricorsività.
 +
mv ''file_o_directory'' ''destinazione''
 +
  
  rm ''file'' → cancella il file.
+
Cancella un file
 +
  rm ''file''
  
 +
Applica il comando ''Cancella'' ricorsivamente, all'interno delle sottocartelle, cancellandone il contenuto:
 
  rm -r ''cartella''
 
  rm -r ''cartella''
Applica il comando cancella ricorsivamente all'interno delle sottocartelle cancellandone il contenuto.
 
  
 +
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  
 
  rm -f  
Cancella forzatamente il file ma solo se si hanno i permessi giusti sul file in questione. Non chiede la conferma prima di eliminare!
 
  
 +
Cancella una cartella e tutto il suo contenuto senza chiedere conferma per ogni file.
 
  rm -rf ''cartella''
 
  rm -rf ''cartella''
Cancella una cartella e tutto il suo contenuto senza chiedere conferma per ogni file.
 
  
 +
Crea un link statico al file specificato.
 
  ln -s ''file'' ''destinazione''
 
  ln -s ''file'' ''destinazione''
Crea un link statico al file specificato.
 
  
 +
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
 
  w
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.
 
  
 +
Print Working Directory mostra il percorso (path) della cartella in cui ci troviamo.
 
  pwd
 
  pwd
Print Working Directory mostra il percorso (path) della cartella in cui ci troviamo.
 
 
 
==Spengimento e Riavvio==
 
systemctl poweroff = Spenge il PC
 
 
reboot = Riavvia il PC
 
  
 +
==Spegnimento e Riavvio==
 +
Spenge il PC
 +
systemctl poweroff
  
==Sistema e kernel==
+
Riavvia il PC
 +
reboot
  
du -h = quantità di spazio usata nella directory e sottodirectory in kb e mb.
 
  
top = mostra la percentuale di CPU utilizzata dai vari processi.
+
==Sistema e Kernel==
 +
Quantità di spazio usata nella directory e sottodirectory, espressa in formato umanamente comprensibile (MB o GB).
 +
du -h
  
ps aux = Visualizza i programmi e demoni in corso con i relativi pid
+
Task manager:
 +
top
  
df -h = mostra le partizioni montate
+
Visualizza i programmi e demoni in corso con i relativi pid
 +
ps aux
  
free -m = mostra la memoria ram e swap occupata, libera e totale
+
Mostra le partizioni montate e lo spazio a disposizione su di esse, espresso in formato umanamente coprensibile:
 +
df -h
  
uname -a = indica la versione del kernel
+
Mostra la memoria ram e swap occupata, libera e totale
 +
free -m
  
lsmod = visualizza i moduli (driver) caricati nel kernel
+
Indica la versione del kernel e molte altre informazioni accessorie:
 +
uname -a
  
 +
visualizza i moduli (driver) caricati nel kernel
 +
lsmod
  
 
==Altro==
 
==Altro==
 +
Visualizza l'elenco degli ultimi comandi eseguiti
 
  history  
 
  history  
Visualizza l'elenco degli ultimi comandi eseguiti
 
  
 +
Mostra il contenuto di un file
 
  cat ''nomefile''
 
  cat ''nomefile''
Mostra il contenuto di un file
 
  
 +
Simile a cat, ma permette di scorrere il file avanti ed in dietro. Utile per file lunghi.
 
  less ''nomefile''
 
  less ''nomefile''
Simile a cat, ma permette di scorrere il file avanti ed in dietro. Utile per file lunghi.
 
  
 +
==Il carattere JOLLY '''*'''==
  
==Il carattere JOLLY '''*'''==
+
'''*''' significa ''qualunque carattere, per qualunque lunghezza''
 +
'''?''' significa '' '''un''' qualsiasi '''solo''' carattere in questo punto''
  
* = significa tutto
+
Introdotti a fianco di una parola, fanno riferimento alla parola e quelle che presentano un pattern corrispondente:
  
Introdotto a fianco di una parola, fa riferimento alla parola e quelle che hanno caratteri aggiunti
+
Es. ''pippo*'' identifica ''pippo pippo1 pippociao pippopluto'' e simili
  
es. pippo* = pippo pippo1 pippociao pippopluto pippo..............
+
Es. ''p?zzo'' identifica ''pazzo pezzo pizzo pozzo puzzo'' e simili
  
 
==Gestione dell'output==
 
==Gestione dell'output==
 +
Ingabbia l'output del comando che lo precede e lo da in input al comando successivo.
 +
|
  
| → 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 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.
 +
&
  
& → 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.  
 +
>
  
> → 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.
 
+
>>
>> → è 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...
  
=APT=
+
Aggiorna la lista dei pacchetti interrogando i repository:
apt-get update: aggiorna la lista dei pacchetti interrogando i repository.
+
apt-get update
  
apt-get upgrade: aggiorna i pacchetti presenti sulla macchina con nuove versioni se presenti nei repository e risolvendo le relative dipendenze.
+
Aggiorna i pacchetti presenti sulla macchina con nuove versioni se presenti nei repository e risolvendo le relative dipendenze:
 +
apt-get upgrade
  
apt-get install “nome_pacchetto”: installa il pacchetto con le relative dipendenze.
+
Installa il pacchetto con le relative dipendenze:
 +
apt-get install ''nome_pacchetto''
  
apt-cache search “stringa_da_cercare”: cerca il pacchetto che ha nel nome o nella descrizione la stringa che gli è stata specificata.
+
Cerca il pacchetto che ha nel nome o nella descrizione la stringa che gli è stata specificata.
 +
apt-cache search ''stringa_da_cercare''
  
apt-get dist-upgrade: aggiorna il S.O. alla versione successiva, aggiornando automaticamente anche i sources dei repository.
+
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.
+
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. :-)
  
 
=tar=
 
=tar=
 
 
Programma che permette di creare archivi, un tempo usato per archiviare i file su nastro.
 
Programma che permette di creare archivi, un tempo usato per archiviare i file su nastro.
  
 
Opzioni:
 
Opzioni:
  
-c → crea l'archivio.
+
* -c → crea l'archivio.
-f → archivia su file.
+
* -f → archivia su file.
-v → mostra la lista dei file che vengono aggiunti all'archivio   dettagliatamente (verbose mode).
+
* -v → mostra la lista dei file che vengono aggiunti all'archivio dettagliatamente (verbose mode).
-x → estrai l'archivio.
+
* -x → estrai l'archivio.
-z → crea archivio compresso con gzip.
+
* -z → crea archivio compresso con gzip.
-j → crea archivio compresso con bzip2.
+
* -j → crea archivio compresso con bzip2.
  
 
Es:
 
Es:
tar -czf ''nome_file_da_creare'' ''file_da_comprimere.gz'' (compressione di un file in formato gzip)
+
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 -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)  
+
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.
  
=Permessi, gruppi, utenti=
+
Gruppi famosi:
 
 
I gruppi si creano con il comando groupadd “nome_gruppo”.
 
Sia quelli standard che quelli creati a posteriori compaiono nel file /etc/group.
 
  
alsa → per l'audio
+
* alsa → per l'audio
network → per la rete
+
* network → per la rete
optical → per lettori e masterizzatori
+
* optical → per lettori e masterizzatori
wheel → gruppo che ha permessi quasi da root
+
* wheel → gruppo che ha permessi quasi da root
users → gruppo dove ci stanno tutti gli utenti
+
* users → gruppo dove ci stanno tutti gli utenti
  
Gli utenti si creano con il comando useradd ''nome_utente''.
+
Gli utenti si creano con il comando
La lista degli utenti compare nel file /etc/passwd.
+
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.
+
Per cambiare i permessi ai file si usa il comando
 +
chmod
  
 
Metodo delle lettere (UGO – User/Group/Others):
 
Metodo delle lettere (UGO – User/Group/Others):
Permesso di lettura → r
+
* Permesso di lettura → r
Permesso di scrittura → w
+
* Permesso di scrittura → w
Permesso di esecuzione → x
+
* Permesso di esecuzione → x
 
   
 
   
chmod u+x “nome_file” → do i permessi di esecuzione al proprietario
+
chmod u+x ''nome_file'' → do i permessi di esecuzione al proprietario
chmod u-x “nome_file” → tolgo 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 others:
+
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 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 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
+
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:
+
Sempre usando il comando ''chmod'' si possono dare i permessi ai file anche usando il metodo dei numeri, utilizzando la notazione binaria:
  
1 → lettura
+
* 1 → lettura
2 → scrittura
+
* 2 → scrittura
4 → esecuzione
+
* 4 → esecuzione
  
 
I diritti si danno al proprietario, gruppo e others sommando i numeri corrispondenti ai diritti che vogliamo dargli.
 
I diritti si danno al proprietario, gruppo e others sommando i numeri corrispondenti ai diritti che vogliamo dargli.
  
Es.:
+
Ad esempio, per dare i diritti di esecuzione, lettura e scrittura al proprietario, al gruppo e a tutti gli altri
chmod 777 “nome_file”
+
chmod 777 ''nome_file''
i diritti di esecuzione, lettura e scrittura al proprietario, al gruppo e a tutti gli altri
+
 
 +
* 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.
  
-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.
 
E cosi per tutte le possibili combinazioni.
  
 
chgroup “nome_gruppo” “nome_file”
 
 
Cambiare un gruppo ad un file  
 
Cambiare un gruppo ad un file  
 +
chgroup ''nome_gruppo'' ''nome_file''
  
chown “nome_utente” “nome_file”
+
Attribuisce all'utente la proprietà del file. Solo l'utente ''root'' può eseguire questo comando (eccezione allo standard POSIX):
Attribuisce all'utente la proprietà del file.
+
chown ''nome_utente'' ''nome_file''
 
 
 
 
NB.
 
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.
 
 
 
  
 +
''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=
 
=/etc/fstab=
Riga 230: Riga 254:
 
È il file in cui sono specificati i device che vengono montati all'avvio.
 
È il file in cui sono specificati i device che vengono montati all'avvio.
  
Es.: montaggio di una partizione NTFS
+
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
+
/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 ma solo a /mnt altrimenti si crea confusione con il S.O. che in /media è programmato per scriverci automaticamente al momento del rilevamento del dispositivo inserito.
 
  
 +
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 del filesystem=
 +
Struttura standard della /
  
/bin: contiene i programmi che sono essenziali all'avviamento e all'uso della macchina.
+
* /bin: contiene i programmi che sono essenziali all'avviamento e all'uso della macchina. Es. bash, mv, cp...
Es. bash, mv, cp...
 
 
 
/boot: contiene i file di configurazione del bootloader, necessari all'avviamento della macchina.
 
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.
+
* /boot: contiene i file di configurazione del bootloader, necessari all'avviamento della macchina, e il kernel. Es. I file di configurazione del GRUB.
Es. I dischi hda e sda
 
  
/etc: contiene principalmente i file di configurazione dei programmi e del sistema di base.
+
* /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)
  
/home: non è strettamente necessaria. Contiene le directory personali dei singoli utenti.
+
* /etc: contiene i file di configurazione dei programmi e del sistema. Es: ''/etc/fstab'', ''/etc/group''
  
/lib: contiene le libreria che sono usate dai programmi che stanno in /bin e /sbin, nonchè i moduli del kernel.
+
* /home: non è strettamente necessaria. Contiene le directory personali dei singoli utenti.
  
/media: usata da udev per montare automaticamente le periferiche quando vengono inserite.
+
* /lib: contiene le libreria che sono usate dai programmi che stanno in /bin e /sbin, nonchè i moduli del kernel.
Es. Pennine e device usb
 
  
/mnt: cartella dove vengono montati manualmente i device e le partizioni che solitamente sono statici e non vengono rimossi.
+
* /media: usata da ''udev'' e ''dbus'' per montare automaticamente le periferiche quando vengono inserite. Es. pennine USB e CD/DVD
Per montare un device automaticamente nella /mnt all'avvio è necessario editare il file /etc/fstab, altrimenti è necessario montare manualmente il device ogni volta con il comando muount.
 
  
/opt: di solito contiene i programmi che non interagiscono con altri programmi installati.
+
* /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
  
/proc: è un file system virtuale. All'interno ci sono file che danno informazioni sul sistema (per esempio il tipo di CPU).
+
* /opt: di solito contiene i programmi che non interagiscono con altri programmi installati, tra cui molti programmi proprietari. Es: Skype, Google Chrome
  
/root: è la home dell'utente root.
+
* /proc: è un file system virtuale. All'interno ci sono file che danno informazioni sul sistema. Es: ''/proc/cpuinfo'' dà informazioni sul processore
  
/sbin: contiene eseguibili e file che può usare solo l'utente root.
+
* /root: è la home dell'utente root
  
/srv: è la cartella che contiene i server standard.
+
* /sbin: contiene eseguibili e file di sistema importanti che può usare solo l'utente root
  
/tmp: contiene i file temporanei che ad ogni riavvio vengono cancellati.
+
* /srv: è la cartella che contiene i documenti dei server. Es: document root del server Apache
  
/usr: utilizzata per l'installazione dei programmi.
+
* /tmp: contiene i file temporanei. È montata in RAM, quindi ad ogni riavvio il suo contenuto viene cancellato.
  
/usr/src: contiene i sorgenti del kernel o dei programmi compilati dall'utente.
+
* /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: 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: serve al S.O. per swappare ma al giorno d'oggi, con le grandi quantità di ram che vengono installate a bordo dei client, è quasi  praticamente inutile.
+
* 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).
  
 
[[Category: Howto]]
 
[[Category: Howto]]

Versione delle 19:39, 13 gen 2016

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, seguendo uno dei nostri corsi oppure su www.wowarea.com (guida un po' vecchia, ma molto ben fatta, e in italiano!)

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

Permette di tornare alla cartella di livello superiore:

cd ..

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

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:

  • 1 → lettura
  • 2 → scrittura
  • 4 → 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).