Linea di comando

Da GolemWiki.
Versione del 21 set 2015 alle 18:07 di Giulio (discussione | contributi) (Categoria HowTo)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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.


APT

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)


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

chmod 777 “nome_file”

Dà 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. E cosi per tutte le possibili combinazioni.


chgroup “nome_gruppo” “nome_file”

Cambiare un gruppo ad un file

chown “nome_utente” “nome_file” 

Attribuisce all'utente la proprietà del 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.


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


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: usata da udev per montare automaticamente le periferiche 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: utilizzata per l'installazione dei programmi.

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

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.