Linea di comando

Da GolemWiki.
Jump to navigation Jump to search

Introduzione

Una shell è un software provvisto di un'interfaccia da riga di comando attraversi il quale digitando un comando si avvia l'esecuzione di un programma.

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

man

Anteposto ad un comando ne mostra la guida


Gestione di file e cartelle

cd ..

Permette di tornare alla cartella di livello superiore

ls

Mostra la lista di elementi contenuti in una directory.

ls -a

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

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.

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.

mkdir nome_cartella

Crea una directory

ls -alh

Combina i tre comandi precedenti.

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. Come per il comando cp, l'opzione -R, ne applica una ricorsività.

rm file → cancella il file.
rm -r cartella

Applica il comando cancella ricorsivamente all'interno delle sottocartelle cancellandone il contenuto.

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!

rm -rf cartella

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

ln -s file destinazione

Crea un link statico al file specificato.

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.

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


Sistema e kernel

du -h = quantità di spazio usata nella directory e sottodirectory in kb e mb.

top = mostra la percentuale di CPU utilizzata dai vari processi.

ps aux = Visualizza i programmi e demoni in corso con i relativi pid

df -h = mostra le partizioni montate

free -m = mostra la memoria ram e swap occupata, libera e totale

uname -a = indica la versione del kernel

lsmod = visualizza i moduli (driver) caricati nel kernel


Altro

history 

Visualizza l'elenco degli ultimi comandi eseguiti

cat nomefile

Mostra il contenuto di un file

less nomefile

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


Il carattere JOLLY *

  • = significa tutto

Introdotto a fianco di una parola, fa riferimento alla parola e quelle che hanno caratteri aggiunti

es. pippo* = pippo pippo1 pippociao pippopluto pippo..............

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.


Struttura del filesystem

/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. 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 hda e sda

/etc: contiene principalmente i file di configurazione dei programmi e del sistema di base.

/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: esiste da poco, da quando sono entrati in uso i demoni “udev” e “hal” che montano automaticamente le periferiche nella cartella media a caldo quando vengono inserite. Es. Pennine e device usb

/mnt: cartella dove vengono montati manualmente i device e le partizioni che solitamente sono statici e non vengono rimossi. 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.

/proc: è un file system virtuale. All'interno ci sono file che danno informazioni sul sistema (per esempio il tipo di CPU).

/root: è la home dell'utente root.

/sbin: contiene eseguibili e file che può usare solo l'utente root.

/srv: è la cartella che contiene i server standard.

/tmp: contiene i file temporanei che ad ogni riavvio vengono cancellati.

/usr: è speculare alla directory /root poiché contiene le stesse directory, con la differenze che in passato non stava sul mainframe ma sulla macchina locale.

/usr/src: contiene i sorgenti del kernel o dei programmi compilati dall'utente.

/usr/X11R6: contiene i file del server grafico.

/usr/local: speculare alla /usr, contiene l'installazione di programmi.

/var: ha contenuti dinamici, ovvero file che sono soggetti a modifiche dal sistema.

/var/tmp: contiene principalmente file temporanei che non vengono cancellati al riavvio.

/share: principalmente usata per condividere dati tra più utenti o in rete.

/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.


/etc/fstab

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

Es.: montaggio di una partizione NTFS

/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.


apt

È il gestore dei pacchetti i cui file di configurazione stanno in /etc/apt. Il file che contiene i repository è sources.list ed ha la seguente sintassi:

deb cdrom [percorso] intrepid main restricted deb http://archive.ubuntu.com/ubuntu intrepid main restricted


(Intrepid è il nome di una versione della distribuzione di Ubuntu)

Comandi:

apt-get update: aggiorna la lista dei pacchetti interrogando i repository.

apt-get upgrade: aggiorna i pacchetti presenti sulla macchina con nuove versioni se presenti nei repository e risolvendo le relative dipendenze.

apt-get install “nome_pacchetto”: installa il pacchetto con le relative dipendenze.

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

apt-get dist-upgrade: aggiorna il S.O. alla versione successiva, aggiornando automaticamente anche i sources dei repository.

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.

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)

xorg.conf

Gestisce e rileva le periferiche video e di input quali monitor, vga, mouse e tastiera. Alcune distribuzioni hanno dei tools specifici per creare il file xorg.conf, ma è possibile farlo anche a mano. Il comando “X -configure” crea un file xorg.conf funzionante...in teoria! :-(


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.

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”. La lista degli utenti 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 others:

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:

1 → lettura 2 → scrittura 4 → esecuzione

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

Es.:

Se volessi dare i diritti di esecuzione, lettura e scrittura sia al proprietario, al gruppo e a tutti gli altri dovrei scrivere:

chmod 777 “nome_file”

Dove: -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.

Se voglio cambiare un gruppo ad un file uso il comando chgroup “nome_gruppo” “nome_file” (di cui voglio cambiare il gruppo). Per cambiare utente ad un file invece si usa il comando chown “nuovo_utente” “nome_file” (di cui voglio cambiare l'utente). Posso cambiare utente e gruppo con un comando solo sempre usando il chown: chown “utente:gruppo” “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.


Monitoraggio delle risorse

ps ax | less → fa vedere tutti i processi che ci sono attivi, ridirezionando l'output tramite il less a video come se fosse un file di testo. Nella lista ci sono tutti i processi con il relativo PID.

kill PID → uccide il processo relativo a quel PID.

killall “nome_programma” → uccide tutti i processi che hanno a che fare con quel programma (compresi i processi figli).

top → comando che ci permette di vedere i processi attivi in tempo reale con relativo utilizzo delle risorse, oltre alle risorse (RAM e CPU) in uso e libere sulla macchina.


Comandi a briglia sciolta