Generalita'

Il Terminale che puo' essere attivato nei seguenti modi:

  • Da Applicazioni -> Accessori -> Terminale
  • premendo contemporaneamente CTRL + ALT + F1. A tutto schermo appare il primo terminale dei sei disponibili (F1, F2, F3, F4, F5, F6). Per ritornare a lavorare in modalita' grafica premere CTRL + ALT + F7.

    Inoltre e' possibile ripetere o correggere un comando dato precedentemente semplicemente richiamandolo con le frecce su o giù da tastiera.

    Le directory dove trovare gli eseguibili sono:

  • /bin/
  • /usr/bin/
  • /sbin/
  • /usr/sbin/
  • /usr/X11R6/bin/

    le directory /sbin/ e /usr/sbin/ contengono file di solito eseguibili solo dal superutente (root)

Principali comandi

# Ottenere ulteriori informazioni:

  • man: formatta e mostra le pagine della guida in linea.
  • info: sistema di consultazione dei manuali tramite ipertesti.
  • help: richiama l'help per i comandi builtin della shell.

# Lavorare con file e directory:

  • cd: cambia la directory corrente.
  • ls: mostra il contenuto di una directory.
  • cp: copia file e directory.
  • mv: muove o rinomina un file o una directory.
  • rm: cancella file e directory.
  • mkdir: crea una directory.
  • ln: crea link a file e directory.
  • pwd: mostra la directory corrente.
  • chmod: modifica i permessi di accesso di un file.
  • chown: cambia il proprietario di un file.
  • cat: mostra il contenuto di un file.
  • find: cerca un file tra le directory.
  • vi: l'editor di testo. l'unico ed il solo.

# Filesystem e processi

  • df: mostra lo spazio libero sul disco fisso.
  • free: mostra lo stato della memoria.
  • mount: monta un filesystem. (mount /dev/fd0 /mnt/floppy , mount -t vfat /dev/fd0 /mnt/floppy , il mount automaticamente configurando un apposito file di sistema che si chiama fstab (file system table) . /etc/rc.d/rc.sysinit questo file sono contenuti tutti i comandi che vengono eseguiti in fase di avvio del sistema)
  • umount: disattiva un filesystem.
  • ps: visualizza un elenco dei processi correnti.
  • kill: invia un messaggio (TERM di default) ad un processo.

# Sistema:

  • halt: chiude il sistema.
  • reboot: riavvia il sistema.
  • hostname: mostra e cambia il nome dell'host.

# Vari:

  • startx: avvia l'ambiente grafico (X Window System).
  • date: mostra la data.
  • gzip: comprime e decomprime file .gz.
  • tar: crea backup di file (file .tar).
  • more: separa l'output in piu' pagine (anche less).
  • reset: resetta il terminale alle impostazioni iniziali.
  • lynx: browser web solo testo.
  • zip e unzip: comprime e decomprime file .zip.
##############################################################################
# Shell builtin: comandi interni alla shell bash
# non sono considerati i comandi specifici della programmazione.
# per maggiori informazioni sui comandi builtin: help nome_comando
#
  • alias:: definisce alias di comandi.
  • bg: manda un processo sospeso in background.
  • cd: cambia la directory corrente.
  • exec: sistituisce la shell corrente con un nuovo processo.
  • exit: chiude la shell.
  • export: esporta una variabile nelle shell figlie.
  • fg: porta in foreground un processo.
  • help: richiama l'help per i comandi builtin.
  • history: mostra l'history della shell.
  • jobs: mostra i processi fatti partire dalla shell corrente.
  • logout: esce da una shell di login.
  • set: setta una variabile.
  • type: mostra dove si trova l'eseguibile di un comando.
  • ulimit: controlla le risorse disponibili per la shell.
  • umask: setta i permessi di default per la creazione di nuovi file.
  • wc: wc -l filename conta righe nel file
  • uuidgen: genera un uuid
  • dos2unix: rimuovi gli end of file ^M (https://stackoverflow.com/questions/2613800/how-to-convert-dos-windows-newline-crlf-to-unix-newline-lf-in-a-bash-script)

SSH e SCP

ssh pippo@134.34.54.20> 

se la porta non fosse quella classica (22) allora dovrei specificarla con l'opzione -p , esempio :

ssh pippo@134.34.54.20 -p 2222

Per copiare un file dal mio pc verso il server remoto, dovrei utilizzare il seguente formato:

scp FileSorgente nomeUtente@host:directory/FileDestinazione

Al contrario se volessi copiare un file da remoto nel mio computer:

scp nomeUtente@host:directory/FileSorgente FileDestinazione

Quindi nel mio caso se volessi copiare un documento in una directory sul server remoto :

scp miodocumento.txt pippo@134.34.54.20:/home/pippo/miodocumento.txt

Se invece volessi fare il contrario cioè copiare un file dal server remoto nel mio pc :

scp pippo@134.34.54.20:/home/pippo/miodocumento.txt miodocumento.txt

Se volessi trasferire tutti i file cartella "sorgente" del pc remoto alla cartella "destinazione" del pc locale:

scp pippo@134.34.54.20:/home/pippo/sorgente/* /home/pluto/destinazione/

Se la porta del server non fosse la 22 per specificarla dovrei usare l'opzione -P (attenzione al P deve essere maiuscola), esempio:

scp -P 2222 miodocumento.txt pippo@134.34.54.20:/home/pippo/miodocumento.txt

chmod e chown (chgrp)

Digitiamo al prompt di una macchina linux "ls -alt" ci viene restituita una lista dei file.

  1. Sulla prima colonna troviamo 10 lettere che indicato come sono impostati i permessi di quella directory o file.
  2. Sulla seconda il numero di hard link (collegamenti fisici)
  3. Sulla terza e quarta rispettivamente nome del proprietario e nome del gruppo.

Cominciamo dalla prima colonna:

La prima lettera indica se E' una directory (d) , un link simbolico (l) o un file (-) mentre le restati 9 ( a gruppi di 3 ) definiscono i permessi per proprietario, gruppo e altri utenti.

  • - file regolare
  • d directory
  • l link (collegamento)
  • b periferica a blocchi con buffer
  • c periferica a caratteri con buffer
  • u periferica a caratteri senza buffer
  • p pipe FIFO
  • s socket

I tipi di permesso possono essere:

  • lettura (r)
  • scrittura (w)
  • esecuzione (x)

Nell'esempio qui sotto abbiamo un file dove il proprietario puo' leggere e scrivere ( rw-) , il gruppo puo' solo leggere ( r-) ed infine tutti quelli che non fanno parte del gruppo possono solo leggere ( r- ).

Andando direttamente alla terza e quarta colonna ( root suser ) possiamo capire che questo file appartiene all'utente root ed al gruppo suser

-rw-r--r-- 1 root suser .....................

chmod e' il comando che modifica i permessi mentre chown cambia utente e gruppo.

chmod ha due tipi di sintassi: simbolica e ottale ( vedi # man chmod ) , io cerchero' di spiegarvi la seconda che ritengo piu' sintetica.

Il sistema ottale è composto da tre cifre e definisce un un unica volta i vari tipi di permessi per proprietario, gruppo e utenti. Questi tre numeri vengono calcolati sommando i seguenti valori ottali:

  • 0 : Nessun permesso.
  • 1 : Esecuzione. [001 in binario]
  • 2 : Scrittura. [010 in binario]
  • 4 : Lettura. [100 in binario]

xrw lo con 0 nego con 1 acconsento

Passiamo a qualche esempio:

(1) # chmod 777 nomefile   [7  7  7 = 111 111 111  in binario ]
(2) # chmod 644 nomefile   [6  4 4  = 011 010 010  in binario ]

es.1 In questo modo abbiamo impostato il permesso di lettura scrittura ed esecuzione ( 4+2+1 = 7 ) rispettivamente per proprietario, gruppo e utenti. es.2 Seguendo lo stesso ragionamento abbiamo impostato lettura e scrittura ( 4+2 = 6 ) per il proprietario e solo lettura ( 4 ) per gruppo e utenti

Con chown nomeproprietario:nomegruppo nomefile

chown simon:suser nomefile

Con questo comando abbiamo impostato simon come proprietario e suser come gruppo.

Sia per chmod che per chown possiamo sostituire nomefile con nomedirectory e se aggiungiamo il parametro opzionale -R lo applichiamo in modo ricorsivo su tutte le sotto directory.

# chmod -R 744 nomedirectory
# chown -R simon:suser nomedirectory

find e grep

grep -r "string to be searched"  /path/to/dir
grep -rnw '/path/to/somewhere/' -e 'pattern'
grep -Ril "text-to-find-here" /
  • i stands for ignore case (optional in your case).
  • R stands for recursive.
  • l stands for "show the file name, not the result itself".
  • / stands for starting at the root of your machine.
find . -name '*.js' -exec grep -i 'string to search for' {} \; -print

tar e gzip

Creazione:

tar -cf mioarchivio.tar pippodir 

Estrazione:

tar -xf mioarchivio.tar 

Creazione con compressione

tar -czf newpromo20171129.gz.tar newpromo

Decompressione

gzip -d mioarchivio.tar.gz (oppure gunzip mioarchivio.tar.gz) 

e successivamente:

tar -xf mioarchivio.tar