(ci si riferisce a macOS anche come *nix o Unix)
LINUX ip route
MACOS route print
WINDOWS netstat -r
LINUX ip addr
MACOS ifconfig
WINDOWS ipconfig /all
LINUX ip neighbour
MACOS arp
WINDOWS arp -a
LINUX netstat -tunp
MACOS netstat -p tcp -p udp oppure lsof -n -i4TCP -i4UDP
WINDOWS netstat -ano
Le directory sono le cartelle che possono contenere più file.
Tab serve per il completamento automatico di nomi di comandi, directory o file.
Ctrl-r serve a cercare un comando nella storia (reverse-find).
I file o directory che hanno il nome che inizia con . risultano nascosti, ma si possono vedere con ls -a.
echoprint, crea un output, con>oppure>>l'output può essere ridirezionato a un file.
>sovrascrive il file, quindi cancella il contenuto del file,>>aggiunge il testo senza sovrascrivere.
clearpulisce lo schermo.
datestampa data corrente.
ttystampa il nome del file del terminale connesso all'input.
historystampa la cronologia dei comandi come lista numerata.
exitesce dal terminale.
Ctrl-dtermina la comunicazione.
catstampa il contenuto di un file, se chiamato senza argomento, loop di echo.
mancerca l'argomento nel manuale.
man -koaproposfanno una ricerca per argomento, stampano le pagine del manuale dove se ne parla.
infoè una guida alternativa.
whatisè comeman, però stampa solo la descrizione breve del comando.
whereisstampa la location del comando e la location del file della pagina del manuale che lo spiega.
typestampa il tipo di comando, ex. alias, built-in, function.
filestampa il tipo di file.
idstampa l'id dell'utente.
who am iowhoamiowho mom likesstampa il nome utente.
whostampa i nomi degli utenti, il terminale al quale sono collegati e la data in cui hanno fatto il login.
whichstampa la location del comando, quindi simile awhereis.
findcerca una risorsa con un nome che matcha il parametro dalla directory corrente a tutte le subdirectory.
Ha due opzioni:-sizee-type.
-size +2MPer esempio stampa solamente file o directory con dimensione maggiore di 2 Megabyte.
-type foppure-type dmostra solamente i risutati della ricerca che sono rispettivamente file o directory.
lsstampa il contenuto di una directory o i nomi dei file e altre informazioni.
Ha le opzioni-a -l -t -h -r, si possono usare insieme tipo:ls -altrhols -altols -l.
-amostra anche i file e le directory nascoste, quelli che iniziano col punto ex..ssh
-llong format, mostra privilegi, timestamp, size e autore.
-tordina in senso cronologico, dal più recente al più antico.
-rordina in senso inverso.
-hmostra le informazioni in format human-readable. Invece di 4096 byte, mostra 4,0K ovvero 4 kilobytes.
Una directory vuota, quindi senza file, contiene sempre e comunque
.e...
~simbolo per la home directory.
.simbolo per la directory corrente.
..simbolo per la parent directory, directory precedente.
touchmodifica il timestamp di un file, oppure crea un nuovo file vuoto.
cdcambia la directory corrente.cdsenza argomento ha lo stesso effetto dicd ~, riportano alla home directory.
pwd"print working directory" stampa il path relativo della directory corrente rispetto alla home directory oppure rispetto a "root"/.
mkdircrea una nuova directory, opzione-pcrea tutto un percorso di directory.
rmdirrimuove una directory se non contiene niente.
cpcrea una copia.
mvmodifica il path di una risorsa, come conseguenza può essere anche usato per rinominare file o directory.
rmrimuove un file, con l'opzione-R(ricorsivo) rimuove una directory perché rimuove tutti file. Ciò che non potrebbe farermdir.
lncrea un HARDlink (come un pointer)ln TARGET LINK_NAMEex.ln file.txt gabriele,cat gabrielemostra il contenuto di file.txt perché l'HARD LINK e il file puntano allo stesso indirizzo di memoria, il file esiste finché ogni riferimento alla memoria non viene cancellato. Con l'opzione-screa un link simbolico, quindi copia soltanto il path relativo del file, infatti muovendo il file link, non funzionerà più (risulterà rotto).
tacè l'inverso dicat, non stampa dalla prima all'ultima riga, stampa dall'ultima alla prima.
moremostra il file impaginandolo. Premendoqsi ritorna alla riga di comando.
lessmostra il file impaginandolo, ma dentro a una finestra tipo un editor. Premendoqsi esce.
tailtail file.txtstampa le ultime 10 righe di un file di default, con l'opzione-n 5oppure-5per esempio ne stampa 5.
headhead file.txtstampa le prime 10 righe di un file di default, con l'opzione-n 5oppure-5per esempio ne stampa 5.
grepserve a trovare una particolare parola in un file, l'opzione-nmostra la riga in cui è stata trovata la parola,-lmostra solo il nome del file contenente la parola cercata,-rserve a leggere tutti i file in una directory quindi fa una ricerca ricorsiva.
wc"word count", senza opzioni mostra numero di righe, n. parole, n. caratteri. Altrimenti per visualizzarli separatamente si usano le rispettive opzioni-l-we-c.
Si possono vedere con ls -l
esempio: ls -l ritorna
dr--r--r-- 1 root root 4096 apr 9 20:41 Testi
è una directory, ha permessi di lettura per utente, gruppi e altri, creata da root, del gruppo root, ha una dimensione di 4096 byte, timestamp è 9 aprile alle 20:41, chiamata "Testi".
la prima d rappresenta il tipo di file, infatti è una directory, i seguenti sono i permessi.
I 9 bit dei permessi seguono la regola UGO.
Ecco una tabella:
| user | group | other |
|---|---|---|
| rwx | rwx | rwx |
| 4+2+1 | 4+2+1 | 4+2+1 |
ex.
tutti i bit attivati rwxrwxrwx in ottale sono 777, tutti hanno tutti i permessi.
rwxrwxr-- in ottale è 4+2+1 4+2+1 4 = 774. Quindi utente e gruppo hanno tutti i permessi, gli altri solo di leggere.
chowncambia l'utentechown uid file, si può usare lo userid o semplicemente il nome.
chgrpcambia il gruppochgrp groupid file, si può usare il groupid o semplicemente il nome.
chmodcambia i permessi, si possono usare i simboli+ e -tipochmod u+r fileoppure i numeri in ottalechmod 777 file. Nel primo, AGGIUNGE il permesso di lettura all'utente, nel secondo attiva tutti i bit, quindi dà tutti i permessi a tutti.
Caratteri speciali per il GLOBBING (facilitano il lavoro, sembrano delle regex, ovvero regular expressions)
~Come detto più su, questo simbolo viene espanso con il "Nome della home directory".
*Qualsiasi carattere, qualsiasi numero di ripetizioni. "AD LIBITUM".
?Può essercene uno solo oppure no, è opzionale.
[]Dei possibili caratteri che si possono trovare tipo: [123] uno di questi tre, oppure [0-9] un solo qualsiasi numero da 0 a 9, oppure [A-Z] una sola qualsiasi lettera maiuscola dalla A alla Z.
ex.rm *.txtelimina qualsiasi file di testo (.txt) nella working directory.
ex.rm file[0-9]elimina qualsiasi file che abbia come nome "file" e un numero come:file3 file5 file9 file1.
ex.echo *stampa il nome di tutto ciò che è presente nella working directory, quindi potrebbe sostituirels.
Ci sono tre file collegati a un processo:
stdin, ci si riferisce anche usando &0
stdout &1
stderr &2
File speciali
/dev/nullse viene utilizzato come output, lo distrugge e viene perso.
/dev/zerofornisce uno stream binario infinito di valori zero che verranno visualizzati come^@.
/dev/randomfornisce uno stream binario di valori random.
Direttive per il redirezionamento
<redireziona l'input
<<redireziona l'input quando la sorgente è l'interprete dei comandi
>redireziona l'output sovrascrivendo
>>redireziona l'output in "append mode", non sovrascrive, aggiunge alla fine.
EX.cp file1 file2è equivalente acat file1 > file2
<è una direttiva del linguaggio SHELL, perciò anche se posto all'inizio del comando, viene interpretato correttamente.
cat < file1è equivalente a< file1 cat
Redirezionare stdout e stderr a due file diversi, magari per loggare gli errori.
ex. Comando volutamente sbagliato che produce un errore.
cp file cartella_non_esistente/file 1> success.log 2> error.log
l'errore verrà scritto nel fileerror.log
teepermette il redirezionamento dell'output a un file e allo stdout contemporaneamente.
sortmostra le righe in maniera ordinata,-nconsidera tutti i caratteri non numerici come zero, quindi ordina solo secondo i valori numerici,-kserve a specificare il campo della chiave secondo cui effettuare l'ordinamento.
uniqserve ad eliminare le ripetizioni degli stessi valori adiacenti,-cconta il numero di ripetizioni dei singoli valori unici, solitamente utilizzato consort
nlnumera le linee, comegrep -n
trTranslate, sostituisce un carattere con un altro.
cutserve a spezzare le righe in campi,-dspecifica il delimitere dei campi,-fspecifica il campo da selezionare.
REGEX
^comincia con
$finisce con
.qualsiasi carattere
*zero o qualsiasi numero di occorrenze di qualsiasi carattere
PIPING
|
passa l'output del primo comando all'input del secondo.
I comandi vengono eseguiti in maniera sequenziale e, dato che sono disposti in serie,
se l'output di un comando alla sinistra del pipe fallisce, i seguenti non verranno eseguiti.
sed"Stream editor"
-n"quiet mode", non stampa tutto il match, ma solo quello che ci interessa.
pstampa
dcancella
ss/from/to/sostituisce una parola con un'altra.
EX.sed 2,5dcancella dalla seconda alla quinta riga,sed /ciao/dcancella tutte le righe in cui ci sia scritto "ciao".
awkAho Weinberger Kernighan, i record sono le linee, i field sono i campi in cui vengono spezzate.
la sintassi è awk ' {statement} ', si può specificare il delimiter con-F, all'interno delle graffe si possono usare i seguenti simboli:
$FSè il delimiter corrente
$nseleziona l'n-esimo campo
$0seleziona l'intero record
$NFè il numero di campi
$NRè il numero di record
substr($n, from, to)seleziona i caratteri di un campo da un indice a un altro. ex.substr($0, 2, 4)seleziona solo dal secondo al quarto carattere di tutto il record.
VARIABILI IN BASH
sono dei nomi a cui è stato assegnato un valore.
=operatore di assegnamento, serve ad assegnare un valore alla variabile.
$operatore di riferimento, serve a vedere il valore della variabile.
envmostra tutte le variabili ambientali.
unsetcancella una variabile.
VARIABILI SPECIALI
PATHl'insieme di directory in cui vengono cercati gli eseguibili dei comandi, la priorità va da sinistra verso destra. Le directory sono separate da:, ex.PATH=$PATH:.a PATH è stato riassegnato il valore di sé stessa più la directory corrente.
TERMle informazioni sull'emulatore del terminale in utilizzo.
USERil nome utente con cui si è collegati.
PWDil path della directory corrente. Equivalente apwd, ma questa è una variabile.
VARIABILI E COMANDI SUI PROCESSI.
3 stati possibili di un processo: esecuzione, attesa, interrotto, zombie.
Un "job" è un insieme di comandi eseguiti insieme.
$?contiene l'exit code dell'ultimo comando eseguito.
$$contiene il process id (PID) della shell attiva.
$PPID"parent pid", contiene il pid del processo che ha attivato la shell.
$!contiene il pid dell'ultimo comando eseguito.
&indica di eseguire il job in background. Viene posto alla fine del comando.
pidoftrova il pid di un processo che esegue un determinato comando.
fgriporta un processo in foreground ex.fg %1rimette in foreground il processo il cui [id] è 1.
sleep"dorme" per un numero di secondi.
jobsmostra una lista dei comandi in esecuzione in background.
ps"process show", mostra i processi attivi nel sistema,-f(notazione estesa) mostra altre informazioni,-emostra tutti i processi.
topmostra una "top 10" dei processi che consumano le risorse del sistema.
SEGNALI
In risposta a un segnale un processo può: ignorarlo, eseguire un'azione in default o "catturarlo".
kill [sengale] pidinvia un segnale, di default inviaSIGTERM (15), ma si può specificare con il numero o con il nome. ex.-15 -TERM -SIGTERMsi riferiscono allo stesso segnale.
| SIGname | SIGnum | description | keyboard shortcut |
|---|---|---|---|
| SIGHUP | 1 | hangup | ctrl-d |
| SIGINT | 2 | interrupt da tastiera | ctrl-c |
| SIGKILL | 9 | terminazione forzata | |
| SIGPIPE | 13 | pipe interrotta a causa di un fallimento | |
| SIGTERM | 15 | come SIGKILL, ma può essere gestito dal processo | |
| SIGCHLD | 17 | processo figlio terminato | |
| SIGCONT | 18 | ripresa da sospensione | |
| SIGSTOP | 19 | sospensione temporanea | ctrl-z |
SCRIPTING
PREMESSA: utilizzare un editor di testo ( dal più "semplice" al più comple(ss|t)o )
nano -> vim -> EMACS. (quindi è preferibile usare emacs).
OK, dato che l'ho già scritto:
nano
NELLA PARTE BASSA c'è una reference immediata (anche per questo è il più semplice).
ctrl-xuscire,ctrl-owrite out (SALVARE).
Quindi si aprenano, si scrive quello che si vuole, poictrl-osi inserisce un nome [ENTER],ctrl-x.
COMANDI:
sourceoppure.legge il file come se fosse un programma, non serve scrivere lo SHEBANG all'inizio di un file del genere perchésourceassicura la sua interpretazione.
test -xrestituisce 1 (VERO) se l'argomento è eseguibile, 0 (FALSO) se non lo è.
bcè una calcolatrice, può lavorare con il floating point values (float, numeri con la virgola) ex.echo '3.0 + 2.1' | bcrestituisce5.1.
FREE ENTRANCE: BASH STRIPPERS (no ok, è una guida concisa e breve di bash)