Linea di comando
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
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:
- 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).