====== Promemoria bash ====== ===== Generali ===== ==== File system ==== |.|directory corrente| |..|directory padre| |~username|home directory dell'utente //username//| |~|home directory dell'utente corrente| ==== Ridirezioni ==== |[0]<, <|ridirige lo standard input| |[1]>, >|ridirige lo standard output| |[2]>, &>|ridirige lo standard error| |[n]''>>''|redirezione dell'output in append (n filedes) FIXME| ==== Wildcards ==== |*|qualsiasi stringa: ad esempio *.c puo' essere espanso con "ff.c g.c prova.c"| |?|qualsiasi carattere: ad esempio ?.c puo' essere espanso con "f.c g.c p.c"| |[..]|qualsiasi carattere dell'insieme: ad esempio [fg].c e' espanso con "f.c g.c"| ==== Combinare comandi ==== |c1 ; c2|esecuzione in sequenza| |c1 ''|'' c2|esecuzione in pipe (lo stdout di c1 viene inviato sullo stdin di c2)| ===== Comandi ===== ==== Miscellanea ==== ^Comando^Descrizione^Esempio^ ^date|fornisce la data corrente|$ date Tue Feb 14 18:21:00 CET 2006| ^clear|pulisce la finestra| | ^man //comando//|permette di accedere alle pagine di manuale in linea per il comando //comando//|$ man man man(1) man(1) NAME man - format and display the on-line manual pages manpath - determine user's search path for man pages SYNOPSIS man [-acdfFhkKtwW] [-m system] [-p string] [-C con- fig_file] [-M path] [-P pager] [-S section_list] [section] name ... ... | ^pwd|stampa il path assoluto della Working Directory corrente|$ pwd /.automount/homeserver/local/disc2/home/s/susanna/ESERCITAZIONI | ^cd //directory//|cambia la Working Directory corrente con //directory//, se non viene specificato nulla si va nella home|$ cd $ pwd /home/d/dangelo $ cd Desktop $ pwd /home/d/dangelo/Desktop $ cd .. $ pwd /home/d/dangelo | ^ls //XX//|lista il contenuto della directory //XX// o il file //XX//. Senza argomenti, visualizza il cotnenuto della directory corrente. |$ ls Canceled.mail HTTPlocation TMP-ESE jkjk ESERCITAZIONI OLD-Lab a.out ese.tar | |ls -l //XX//|lista anche gli attributi dei file e delle directory|$ ls -l ESERCITAZIONI Canceled.mail a.out -rw------- 1 susanna docenti 3128 Oct 1 1997 Canceled.mail -rwxr-xr-x 1 susanna docenti 13955 Nov 3 1998 a.out ESERCITAZIONI: total 16 -rw-r--r-- 1 susanna docenti 693 Oct 22 1998 ese13-10.c -rw-r--r-- 1 susanna docenti 1238 Oct 22 1998 ese22-10sizeof.c -rw-r--r-- 1 susanna docenti 724 Oct 22 1998 eseD13-10.c -rw-r--r-- 1 susanna docenti 4754 Oct 22 1998 esebit15-10.c -rw-r--r-- 1 susanna docenti 465 Oct 26 1998 min_maiu22-10.c -rw-r--r-- 1 susanna docenti 831 Oct 26 1998 poly22-10.c -rw-r--r-- 1 susanna docenti 3073 Oct 29 1998 sol27-10.c -rw-r--r-- 1 susanna docenti 357 Oct 26 1998 stampa_ascii22-10.c | |ls -d //XX//|lista le informazione relative alla directory indicata|$ ls -ld ESERCITAZIONI drwxr-xr-x 2 susanna docenti 512 Nov 5 1998 ESERCITAZIONI/ | |ls -a //XX//|lista anche i file il cui nome comincia per punto (.)|| ^less //fileditesto//|pager per file di testo lunghi: mostra //fileditesto// una schermata alla volta, con le frecce e spazio ci si sposta e con q si esce|| ^od|visionare i file binari (non ASCII)|$ od -s mpack 0000364 /lib/ld-linux.so.2 0000424 GNU 0003211 __gmon_start__ 0003230 libc.so.6 0003242 strcpy 0003251 stdout 0003260 __ctype_b 0003272 getenv 0003301 getpid 0003310 fgets 0003316 memcpy 0003325 execl 0003333 perror 0003342 dup2 0003347 feof 0003354 malloc 0003363 optarg ...... | ^file //filename//|mostra il tipo del file //filename//|$ file a.out a.out: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped $ file Canceled.mail Canceled.mail: mail text | ^touch //nomefile//|crea un file "nomefile" se questo non esiste, altrimenti cambia il timestamp dell'ultimo accesso|$ ls pippo ls: pippo: No such file or directory $ touch pippo $ ls -l pippo -rw-r--r-- 1 susanna users 0 2005-02-14 09:53 pippo | ^cat //file1// //file2// ...| concatena il contenuto dei file //file1// //file2// ecc. e lo invia sullo standard output. Senza parametri legge lo standard input e lo invia sullo standard output || |cat > nomefile|permette di creare velocemente file di testo. Usate control+d per segnalare la fine del testo (End Of File)|$ cat > tt hkjhkhal kshlhlhla ^D $ ls tt 1 tt $ cat tt hkjhkhal kshlhlhla | ^sort|ordina lessicograficamente le linee sullo standard input e le invia sullo standard output|$ sort g f e ^D <-- fine stdin e f g | ==== Creazione / Distruzione / Copia di file e directory ==== * La **creazione dei file** avviene con un editor (emacs, vi, ecc.), o utilizzando il comando touch o la redirezione della shell (per esempio usando cat > file). * La **creazione di directory** avviene con il comando mkdir. ^Comando^Descrizione^Esempio^ ^mkdir //directory//|crea la directory di nome //directory//|$ mkdir MAN $ ls -ld MAN drwxr-xr-x 2 susanna docenti 512 Sep 21 13:55 MAN/ | ^cp|serve per COPIARE file/directory|| |cp //source// //dest//|copia il file o la directory source in dest|| |cp //file1// ... //fileN// //dir//|copia //file1// ... //fileN// nella directory //dir//|| |cp -r //dir1// //dir2//|copia ricorsivamente tutto il sottoalbero radicato in //dir1// in //dir2//|| ^rmdir //nomedir//|rimuove una directory vuota|| ^rm //XX//|rimuove il file //XX//|| |rm [-i] //f1// ... //fN//|rimuove i file //f1// ... //fN//. L'opzione -i serve per chiedere conferma (meglio specificarla, o impostare rm come alias di rm -i)|| |rm -r //XX//|rimuove il file //XX// o una directory insieme a tutto il suo contenuto, ricorsivamente. **Pericoloso**|| ^mv //source// //dest//|sposta //source// in //dest// e rimuove source: serve per **spostare**/**rinominare** file e directory|| |mv //dir1// //dir2//|sposta //dir1// nella directory //dir2// (se //dir2// esiste) oppure rinomina //dir1// con il nome //dir2// (se //dir2// non esiste)|| |mv //file1// ... //fileN// //dir//|sposta //file1//... //fileN// in //dir//|| ==== Cambio diritti ==== ^Comando^Descrizione^Esempio^ ^chmod [-R] //mode// //file1// ... //fileN//|cambia i diritti di //file1// ... //fileN// come specificato da //mode//. Se viene usato con -R, cambia i permessi ricorsivamente nelle directory specificate. //mode// specifica i nuovi permessi, in notazione simbolica [u g o a][+ - =][r w x] oppure 4 cifre ottali.|$ ls -l Canceled.mail -rw------- 1 susanna docenti 3128 Oct 1 1997 Canceled.mail $ chmod ugo+r Canceled.mail $ ls -l Canceled.mail -rw-r--r-- 1 susanna docenti 3128 Oct 1 1997 Canceled.mail $ chmod 755 Canceled.mail $ ls -l Canceled.mail -rwxr-xr-x 1 susanna docenti 3128 Oct 1 1997 Canceled.mail* | ==== Alias ==== FIXME Lista delle ridenominazioni predefinite (alias) in ~/.bash_aliases NB: in bash sono superati dalle funzioni!!!! alias nome mostra l'alias per nome --------------------------------------------------------------------- % alias rm alias rm='rm -i' ------------------------------------------------------------------- alias nome definizione permette di creare nuovi alias ------------------------------------------------------------------- % alias pippo='rm -i' % alias pippo alias pippo='rm -i' ------------------------------------------------------------------- unalias nome permette di eliminare ridenominazioni ------------------------------------------------------------------- % unalias pippo % pippo pippo: Command not found. ------------------------------------------------------------------- 2.5 Processi ^^^^^^^^^^^^ & esecuzione in background sleep n_sec non fa niente per n_sec --------------------------------------------- % sleep 40 & % ----------------------------------------------- ho attivato un processo in background che non fa niente per 40 secondi ps mostra i processi in esecuzione -------------------------------------------- % ps PID TTY TIME CMD 1157 pts/0 00:00:00 csh 1328 pts/0 00:00:00 sleep 1329 pts/0 00:00:00 ps -------------------------------------------- ps -l fornisce informazioni dettagliate su ogni processo --------------------------------------------------------------------- % ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 100 S 16325 1157 1156 0 67 0 - 563 rt_sig pts/0 00:00:00 csh 000 S 16325 1328 1157 0 64 0 - 262 nanosl pts/0 00:00:00 sleep 000 R 16325 1330 1157 0 70 0 - 669 - pts/0 00:00:00 ps --------------------------------------------------------------------- La colonna S specifica lo stato: R: running, in esecuzione al momento o in attesa del processore S: sleeping, in attesa di un evento, ad esempio un carattere dalla tastiera T: stopped, congelato, in attesa di essere riattivato N: nice, processo running con priorita' bassa Z: zombie, processo morto ma in attesa di comunicare il suo codice di errore al padre jobs fornisce i job attivati dalla shell corrente ---------------------------------------------------- % jobs [1] + Running sleep 40 % ---------------------------------------------------- kill [opt] pid kill [opt] %N_job UCCIDE il processo con process identifier PID e con numero di job N_job ---------------------------------------------------- % ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 100 S 16325 1157 1156 0 67 0 - 564 rt_sig pts/0 00:00:00 csh 000 S 16325 1334 1157 0 62 0 - 262 nanosl pts/0 00:00:00 sleep 000 R 16325 1336 1157 0 70 0 - 669 - pts/0 00:00:00 ps % kill %2 [2] Terminated sleep 40 % ps PID TTY TIME CMD 1157 pts/0 00:00:00 csh 1337 pts/0 00:00:00 ps % ---------------------------------------------------- le opzioni indicano il tipo di segnale inviato per la terminazione, il piu' letale e' -KILL (es: kill -KILL 1157) ^C ammazza i processi che girano in foreground ^Z mette in stato di stopped (T) u nprocesso in foreground bg [%N_job] riprende l'esecuzione in background fg [%N_job] riprende l'esecuzione in background 2.6 History ^^^^^^^^^^^ history k lista gli ultimi k comandi eseguiti ------------------------------- % history 4 111 14:42 ps -l 112 14:42 fg 113 14:46 sort 114 14:52 history 4 % ------------------------------- !! ripete l'ultimo comando eseguito !so ripete l'ultimo comando seguito che inizi per `so' !113 ripete il comando numero 113 (sort) -------------------------------- % !! history 4 112 14:42 fg 113 14:46 sort 114 14:52 history 4 115 14:54 history 4 % ------------------------------------ stty permette di listare i Metacaratteri (--all) e cambiare i setting del terminale ----------------------------------------------------- % stty --all speed 38400 baud; rows 45; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke ----------------------------------------------------- Alcuni metacaratteri (CONTROL = ^) ^D end of file ^C abortisce l'esecuzione del comando in corso ^H cancella un carattere ^S blocca l'uscita del video ^Q sblocca l'uscita del video ^Z mette un processo in attesa -------------------------------------