Strumenti Utente

Strumenti Sito


lcs:lcs07:bash_commands

Promemoria bash

Generali

File system

.directory corrente
..directory padre
~usernamehome 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 ; c2esecuzione in sequenza
c1 | c2esecuzione in pipe (lo stdout di c1 viene inviato sullo stdin di c2)

Comandi

Miscellanea

ComandoDescrizioneEsempio
datefornisce la data corrente
$ date
Tue Feb 14 18:21:00 CET 2006
clearpulisce la finestra
man comandopermette 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 ...
...
pwdstampa il path assoluto della Working Directory corrente
$ pwd
/.automount/homeserver/local/disc2/home/s/susanna/ESERCITAZIONI
cd directorycambia 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 XXlista 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 XXlista 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 XXlista le informazione relative alla directory indicata
$ ls -ld ESERCITAZIONI
drwxr-xr-x   2 susanna  docenti       512 Nov  5  1998 ESERCITAZIONI/
ls -a XXlista anche i file il cui nome comincia per punto (.)
less fileditestopager per file di testo lunghi: mostra fileditesto una schermata alla volta, con le frecce e spazio ci si sposta e con q si esce
odvisionare 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 filenamemostra 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 nomefilecrea 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 > nomefilepermette 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
sortordina 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.
ComandoDescrizioneEsempio
mkdir directorycrea la directory di nome directory
$ mkdir MAN
$ ls -ld MAN
drwxr-xr-x   2 susanna  docenti       512 Sep 21 13:55 MAN/
cpserve per COPIARE file/directory
cp source destcopia il file o la directory source in dest
cp file1fileN dircopia file1fileN nella directory dir
cp -r dir1 dir2copia ricorsivamente tutto il sottoalbero radicato in dir1 in dir2
rmdir nomedirrimuove una directory vuota
rm XXrimuove il file XX
rm [-i] f1fNrimuove i file f1fN. L'opzione -i serve per chiedere conferma (meglio specificarla, o impostare rm come alias di rm -i)
rm -r XXrimuove il file XX o una directory insieme a tutto il suo contenuto, ricorsivamente. Pericoloso
mv source destsposta source in dest e rimuove source: serve per spostare/rinominare file e directory
mv dir1 dir2sposta dir1 nella directory dir2 (se dir2 esiste) oppure rinomina dir1 con il nome dir2 (se dir2 non esiste)
mv file1fileN dirsposta file1fileN in dir

Cambio diritti

ComandoDescrizioneEsempio
chmod [-R] mode file1fileNcambia i diritti di file1fileN 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 = <undef>;
eol2 = <undef>; 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
-------------------------------------
lcs/lcs07/bash_commands.txt · Ultima modifica: 04/02/2007 alle 15:29 (18 anni fa) da peppe