Corso UNIX per
principianti
Elisabetta Pace
Corso UNIX per principianti
2003
1
I sistemi UNIX (IBM, HP, Compaq,
Linux,...) sono dialetti: i comandi
principali sono fondamentalmente gli
stessi ma ci sono piccole differenze
(p.es. nel modo di dare le opzioni)
Useremo il sistema operativo dell’IBM,
il cui nome e’ AIX. L’indirizzo del
calcolatore IBM di Frascati e’
axcalc.lnf.infn.it
Elisabetta Pace
Corso UNIX per principianti
2003
2
Attenzione in UNIX:
• maiuscolo e minuscolo hanno un
diverso significato
• non esiste il concetto di versione di
file
Elisabetta Pace
Corso UNIX per principianti
2003
3
Come connettersi
Collegandosi da un PC o da un McIntosh,
comunque si usa il protocollo di comunicazione
telnet.
•Emulatori di finestre alfanumeriche da cui e’
possible dare solo comandi di linea
(p.es.finestra DOS)
•emulatore di x-terminal (p.es. exceed,
versaterm, putty)
Elisabetta Pace
Corso UNIX per principianti
2003
4
Operazione di login:
login: pace
password:
(la password non viene visualizzata
mentre la scriviamo)
Elisabetta Pace
Corso UNIX per principianti
2003
5
AIX Version 4
(C) Copyrights by IBM and by others 1982, 1996.
login: pace
pace's Password:
*************************************************************************************
***
*
*
*
*
* Welcome to AIX Version 4.3!
*
*
*
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System.
*
*
*
*
*
*************************************************************************************
***
Last login: Tue May 7 11:06:12 METDST 2002 on /dev/pts/28 from dxcalc.lnf.infn.it
You have mail.
TERM = (xterm)
Elisabetta Pace
Corso UNIX per principianti
2003
6
Una volta collegati, il sistema scrive una
serie di messaggi e poi chiede che tipo
di terminale si stia usando (vt100,
xterm)
Elisabetta Pace
Corso UNIX per principianti
2003
7
Per cambiare la password
passwd
passwd
Changing password for 'pace' in cell 'lnf.infn.it'.
Old password:
New password (RETURN to abort):
Retype new password:
Elisabetta Pace
Corso UNIX per principianti
2003
8
Che cosa e’ una shell
E’ l’interprete dei comandi, cioe’ l’interfaccia
tra l’utente ed il sistema.
Esistono diverse shell (p.es. Z shell, C shell,
tc-shell, Bourne shell, Korn shell): alcuni
comandi sono comuni alle varie shell, mentre
altri sono completamente diversi.
L’informazione della shell prescelta e’
contenuta nel file di sistema che contiene
tutte le informazioni riguardanti gli utenti.
Elisabetta Pace
Corso UNIX per principianti
2003
9
Per esempio in tc-shell il <TAB>
completa la parola mentre in altre shell
no (p.es. in c-shell)
Elisabetta Pace
Corso UNIX per principianti
2003
10
Che shell sto usando?
> chsh
Current available shells:
/bin/sh
/bin/bsh
/bin/csh
/bin/ksh
/bin/tsh
/usr/bin/sh
/usr/bin/bsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/tsh
/usr/sbin/sliplogin
/usr/sbin/uucp/uucico
/usr/bin/tcsh
/bin/tcsh
pace's current login shell:
/bin/tcsh
Change (yes) or (no)? >
Elisabetta Pace
Corso UNIX per principianti
2003
11
Parleremo solo della tc-shell
Elisabetta Pace
Corso UNIX per principianti
2003
12
Variabili di shell (locali)
set my_variable=value
Per verificarne il valore
echo $my_variable
oppure
set (per l’elenco di tutte le variabili)
Per deassegnare
unset my_variable
p.es. set history = 50
Attenzione: se prima del segno = c’e’ uno
spazio, deve esserci uno spazio anche dopo
Elisabetta Pace
Corso UNIX per principianti
2003
13
Variabili di ambiente (1)
setenv MY_VARIABLE value
Per verificarne il valore
echo $MY_VARIABILE
oppure env
oppure setenv
(per l’elenco di tutte le variabili)
Per deassegnare
unsetenv my_variable
p.es. setenv EDITOR emacs
Elisabetta Pace
Corso UNIX per principianti
2003
14
Variabili di ambiente (2)
setenv dichiara una variabile e la mette nella
“calling environment” di tutti i processi figli
Elisabetta Pace
Corso UNIX per principianti
2003
15
cat ex1
set formaggio=italiano
echo “1 : $formaggio”
subtest
echo “2: $formaggio”
cat subtest
echo “3 : $formaggio”
set formaggio = francese
echo “4 : $formaggio”
Elisabetta Pace
Corso UNIX per principianti
2003
16
source ex1
1 : italiano
3:
4 : francese
2: italiano
Elisabetta Pace
Corso UNIX per principianti
2003
17
Ma se avessi sostituito
setenv formaggio=italiano
in esempio1
il risultato sarebbe
source ex1
1 : italiano
3 : italiano
4 : francese
2: italiano
Elisabetta Pace
Corso UNIX per principianti
2003
18
alias
alias alias_name [’ |”]comando [’ |”]
Per verificarne il valore
alias alias_name
Per deassegnare
unalias my_variable
p.es. alias dir ls -a
Elisabetta Pace
Corso UNIX per principianti
2003
19
Sulle virgolette
• Chiudere una stringa tra virgolette a
sinistra (’), fa si’ che non venga
interpretata
• All’interno di virgolette doppie (“),
parametri e comandi vengono sostituiti.
• Una stringa tra virgolette destre (‘) viene
eseguita
Elisabetta Pace
Corso UNIX per principianti
2003
20
set A=’Hello’
echo $A
Hello
set B=’say $A’
echo $B
say $A
set C="say $A"
echo $C
say Hello
set D=‘date ‘
echo $D
Wed May 8 15:28:12 METDST 2002
Elisabetta Pace
Corso UNIX per principianti
2003
21
Execution e source di files
Si puo’ fare il source di un file contenente
codice tcshell (script): in questo modo non
sara’ fatto partire un nuovo processo e la
shell corrente eseguira’ i comandi dello
script.
source nome_file
Nel file ci devono essere SOLO comandi
tcshell.
Elisabetta Pace
Corso UNIX per principianti
2003
22
p.es.
Creo lo script il cui nome e’ provaScript
e che contiene la seguente riga
setenv EDITOR emacs
Per eseguire questo script, devo dare il
comando
source provaScript
Elisabetta Pace
Corso UNIX per principianti
2003
23
Un file contenente un codice tcshell e
che abbia come prima riga
#!/usr/local/bin/tcsh
Puo’ essere eseguito, iniziando cosi’ un
nuovo processo.
In questo modo si possono usare i
comandi della tcshell usando come
interpreti di comandi un’altra shell.
Elisabetta Pace
Corso UNIX per principianti
2003
24
p.es.
Creo lo script il cui nome e’ provaScript
e che contiene le seguenti righe
#!/usr/local/bin/tcsh
setenv EDITOR emacs
Per eseguire questo script, devo dare i
seguenti comandi
chmod u+x provaScript
del file
eseguibile)
./provaScript
Elisabetta Pace
(per cambiare le protezioni
e renderlo
(per eseguire lo script)
Corso UNIX per principianti
2003
25
Per uscire dalla tcshell
> exit
Elisabetta Pace
Corso UNIX per principianti
2003
26
Al momento del login, il sistema esegue alcuni
file, diversi per ogni shell.
Per la tc-shell questi file sono
• \etc\csh.cshrc e \etc\csh.login (se
esistono) file di sistema
• .tcshrc (o .cshrc ) stabilsce variabili e
parametri locali a questa shell
• .history (se tcshell e’ la shell di login)
ricostruisce la history list della shell
Elisabetta Pace
Corso UNIX per principianti
2003
27
• .login (se tcshell e’ la shell di login)
dovrebbe contenere i comandi che si
vogliono eseguire una sola volta
all’inizio di una sessione (per esempio
determinare il tipo di terminale)
• .cshdir (se tcshell e’ la shell di login)
ricostruisce il directory stack (per i
comandi pushd e popd)
Elisabetta Pace
Corso UNIX per principianti
2003
28
Al completamento della
sistema esegue .logout
Elisabetta Pace
Corso UNIX per principianti
2003
tcshell,
il
29
.login (esempio)
# LNF .login file (Sandro Angius 16/11/99)
#
echo ".login starting"
if ( $?ENVIRONMENT ) then
if ( "$ENVIRONMENT" == "BATCH" ) exit
endif
#################################################################
#
#
source /afs/lnf.infn.it/system/userenv/common/system_login
#################################################################
#
#
Execute GROUP level commands if a group file exists and is readable
#
if ( -r /afs/lnf.infn.it/system/userenv/common/${group}_login ) source /afs/lnf.
infn.it/system/userenv/common/${group}_login
Elisabetta Pace
Corso UNIX per principianti
2003
30
#################################################################
#
# Execute USER level commands if a user exists and is readable
#
if (-r $home/.alias) source $home/.alias
if (-r $home/.complete) source $home/.complete
if ( `uname` == "HP-UX" ) set opt = "-R"
if ( `uname` == "OSF1" ) set opt = "-M"
if ( `uname` == "SunOS" ) set opt = ""
setenv REMHOST `who $opt | grep $tty | cut -f2 -d"(" | cut -f1 -d")"`
setenv DISPLAY "$REMHOST":0
#
if ( "$REMHOST" == "hpxserv" && -f $home/.xmodmap ) then
source .xmodmap; echo "sourcing .xmodmap"
endif
#xhost +
#
echo ".login finished"
Elisabetta Pace
Corso UNIX per principianti
2003
31
File inquire operations
-d file
-e file
-f file
-o file
-r file
-w file
-x file
-z file
Elisabetta Pace
Il file e’ una directory
Il file esiste
Il file e’ un file normale
L’utente e’ l’owner del file
L’utente ha il permesso di read
L’utente ha il permesso di write
L’utente ha il permesso di execute
Il file ha dimensione nulla
Corso UNIX per principianti
2003
32
.cshrc (esempio)
#
# LNF .cshrc file (Sandro Angius 16/11/99)
#
echo "cshrc started"
if ( $?ENVIRONMENT ) then
if ( "$ENVIRONMENT" == "BATCH" ) exit
endif
#####################################################################
#
Execute SYSTEM level commands if file exists and is readable
#
echo "system_cshrc started"
source /afs/lnf.infn.it/system/userenv/common/system_cshrc
echo "system_cshrc ended"
Elisabetta Pace
Corso UNIX per principianti
2003
33
#####################################################################
#
Execute GROUP level commands if a group file exists and is readable
#
echo "group_cshrc started"
if ( -r /afs/lnf.infn.it/system/userenv/common/${group}_login ) \
source /afs/lnf.infn.it/system/userenv/common/${group}_login
echo "group_cshrc ended"
#####################################################################
umask 022
if ( $?prompt ) then
# shell is interactive.
set history=50
# previous commands to remember.
set savehist=50
# number to save across sessions.
set ignoreeof
# no logout with <Ctrl-D>
set noclobber
set notify
set filec
set autolist
# correct mispelled commands
set correct = cmd
set correct = all
Elisabetta Pace
Corso UNIX per principianti
2003
34
unset autologout
set matchbeep=nomatch
setenv EDITOR emacs
unsetenv http_proxy
unsetenv no_proxy
setenv PRINTER aen2b1
setenv WWW_HOME http://www.lnf.infn.it/~pace
Elisabetta Pace
Corso UNIX per principianti
2003
35
set prompt="%m:%~%B%#%b "
# tcsh prompt per AX IBM
if ( `uname` == "OSF1" ) then
set prompt="%T %m:%C %# " # tcsh prompt
set path = ( . $path /sbin /usr/bin/X11 /usr/local/X11R5/bin \
/usr/local/bin /usr/local/gnu/bin $home/bin $home/bin/osf )
else
set path = ( $path /etc /usr/local/bin /usr/local/X11R5/bin \
/usr/local/gnu/bin /usr/uimx2.9/bin $home/bin \
$home/bin/hpux . )
endif
if ( `uname` == "HP-UX" ) then
set prompt="%T %m:%C %# " # tcsh prompt
#
setenv LPATH /usr/lib:/lib:/usr/lib/X11/extensions:.
setenv LHC_ROOT /afs/cern.ch/atlas/offline/@sys/pro
#
setenv PATH ./:/u1/pace::$PATH
endif
if ( `uname` == "SunOS" ) then
set prompt="`date '+%H:%M:%S' ` `hostname`: >"
endif
Elisabetta Pace
Corso UNIX per principianti
2003
36
###################################################################
#
# Sample alias:
#
alias settitle 'echo -n "^[]2;$cwd^G"'
alias datebook /u1/pace/datebook/bin/datebook
alias edf emacs -ms white -cr white -bg black -fg white \
-fn -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1
alias ls ls -F
alias kk kill -KILL
alias edi 'emacs -ms white -cr white -bg black -fg white'
endif
echo "cshrc ended"
Elisabetta Pace
Corso UNIX per principianti
2003
37
#set path = ( . $path)
#set history=50
# previous commands to remember.
#set savehist=50
# number to save across sessions.
#set system=`hostname`
# name of this system.
#set prompt="%m:%~%B%#%b " # new tcsh prompt
#set ignoreeof
# no logout with <Ctrl-D>
#set noclobber
#set notify
#set filec
#set autolist
#setenv EDITOR vi
#
# EOF
#
Elisabetta Pace
Corso UNIX per principianti
2003
38
• !! ripete l’ultimo comando
• !?stringa? Ripete l’ultimo comando
contenente stringa
• !numero-evento
esegue
l’evento
numero-evento
Elisabetta Pace
Corso UNIX per principianti
2003
39
Help
• man comando (restituisce la pagina di
manuale relativa a comando)
• man –k parolaChiave (localizza le pagine di
manuale relative a parolaChiave)
• manprint comando (stampa la pagina di
manuale relativa a comando)
• xman comando (come man, ma su una nuova
finestra)
• whatis comando (descrive la funzione di
comando)
Elisabetta Pace
Corso UNIX per principianti
2003
40
man man
------------------------------------------------------------------------------Commands Reference, Volume 3
------------------------------------------------------------------------------man Command
Purpose
Displays manual entries online.
Syntax
man [ [ [ -c ] [ -t ] [ Section ] ] | [ -k | -f ] ] [ -MPath ] Title ...
Description
The man command provides reference information on topics, such as commands,
subroutines, and files. The man command provides one-line descriptions of
commands specified by name. The man command also provides information on all
commands whose descriptions contain a set of user-specified keywords.
Elisabetta Pace
Corso UNIX per principianti
2003
41
The man command formats a specified set of manual pages. If you specify a
section for the Section parameter, the man command searches in that section of
the manual pages for the title specified by the Title parameter. The value of
the Section parameter can be either an Arabic number from 1 through 8 or a
letter.
The Section letters are:
C Specifies commands (including system management commands).
F Specifies file-type manual pages.
L Specifies library functions.
n Specifies new.
l Specifies local.
o Specifies old.
p Specifies public.
Elisabetta Pace
Corso UNIX per principianti
2003
42
Note: The n, l, o, and p section specifiers are not valid for reading the
hypertext information bases, which contain the operating system
documentation.
The Section numbers are:
1 Indicates user commands and daemons.
2 Indicates system calls and kernel services.
3 Indicates subroutines.
4 Indicates special files, device drivers, and hardware.
5 Indicates configuration files.
6 Indicates games.
7 Indicates miscellaneous commands.
8 Indicates administrative commands and daemons.
Elisabetta Pace
Corso UNIX per principianti
2003
43
Note: The operating system documentation in the hypertext information
databases is grouped into three sections only: command manual pages (in
section 1, equivalent to section C), subroutine manual pages (in section 3,
equivalent to section L), and file manual pages (in section 4, equivalent to
section F). When searching for hypertext information, specifying section 1,
6, 7, or 8 will default to the command manual pages, section 2 or 3 will
default to the subroutine manual pages, and section 4 or 5 will default to
the file manual pages.
If the Section parameter is omitted, the man command searches all sections of
the manual.
The search path the man command uses is a list of directories separated by a :
(colon) in which manual subdirectories can be found. The MANPATH environment
variable value is used for the default path. The MANPATH environment variable is
not valid when reading the hypertext information bases.
The man command displays the manual pages as follows:
1. The man command searches the nroff directories (man?) under the
/usr/share/man directory.
Elisabetta Pace
Corso UNIX per principianti
2003
44
2. The man command searches the formatted version directories (cat?) under the
/usr/share/man directory. If the formatted version is available, and if it
has a more recent modify time than the nroff command source, the man
command displays the formatted version. Otherwise, the manual page is
formatted with the nroff command and displayed. If the user has permission,
the formatted manual page is deposited in the proper place, so that later
invocations of the man command do not format the page again.
Note: There is no nroff source for the supplied manual pages. However,
you can put nroff source for manual pages into the man directories and
the man command can locate and process the nroff source.
3. If the man command does not find a manual page in the /usr/share/man/man or
/usr/share/man/cat directory, the man command reads from the hypertext
information bases. The hypertext information bases reside in the
/usr/share/man/info directory structure and contain the operating system
documentation. When reading from the hypertext databases, the man command
does not put any manual pages in the /usr/share/man/cat directory
structure. The man command strips formatting information from the manual
page, wraps lines so the lines fit on the display, and displays the manual
page using the command described by the PAGER environment variable.
Elisabetta Pace
Corso UNIX per principianti
2003
45
When accessing the HTML databases, man looks for the AIX library before it
proceeds to other LPP libraries. Within these libraries, it processes
information in the following order:
cmds Commands Reference
libs Subroutines, System Calls
files Files Reference
If the standard output is a tty, the man command pipes its output using the more
command with the -s and -v flags. The -s flag eliminates multiple blank lines
and stops after each page on the screen. The -v flag suppresses the display of
nonprinting characters to the screen. To continue scrolling, press the space
bar. To scroll an additional 11 lines when the output stops, press the Ctrl-D
key sequence.
The PAGER environment variable can be set to whatever pager is desired. The
default value is the more command. To change the default pager, enter:
PAGER=Somepager
export PAGER
Elisabetta Pace
Corso UNIX per principianti
2003
46
For example, if there are customized manual pages which are formatted with
reverse or fractional line feeds, the PAGER environment variable may be set to
/usr/bin/pg so that the line feeds are not printed as control characters. This
procedure is not necessary for the AIX manual pages.
When the man command uses a hypertext database, it can retrieve several
articles. For example, man open displays several articles. The use of SIGINT
(Ctrl-C) exits the man command completely. On the other hand, man open close
also displays several articles but the use of SIGINT (Ctrl-C) causes man to
display the close command information instead of exiting. Using SIGINT (Ctrl-C)
again exits the man command completely.
When specifying one of the Network Computing System library routines that
contains a $ (dollar sign) in its name, enter a \ (backslash) preceding the $.
Flags
-c Displays the manual information using the cat command.
Elisabetta Pace
Corso UNIX per principianti
2003
47
-f Displays entries in the keyword database related only to the command name
given as the final parameter. You can enter more than one command name, each
separated by a space. Use this flag to search for command articles only. To use
the -f flag, a root user must have previously entered catman -w to create the
/usr/share/man/whatis file.
-k Displays each line in the keyword database that contains a string of
characters matching the title given as the final parameter. You can enter more
than one title, each separated by a space. To use the -k flag, a root user must
have previously entered catman -w to create the /usr/share/man/whatis file.
-MPath Changes the standard location where the man command searches for manual
information. The search path the man command uses is a list of directories
separated by a : (colon) in which manual subdirectories can be found. The
MANPATH environment variable value is used for the default path.
Note: The -M flag is not valid when the man command reads from the hypertext
databases.
-t Formats the manual information using the troff command. This flag is ignored
if the manual page is found in a hypertext information base.
Elisabetta Pace
Corso UNIX per principianti
2003
48
Exit Status
This command returns the following exit values:
0 Successful completion.
>0 An error occurred.
Examples
1. To display information about the grep command, enter:
man grep
2. To display information about the rpc_$register library routine, enter:
man rpc_\$register
3. To display all entries in the /usr/share/man/whatis keyword database that
contain the "mkdir" string , enter:
man -k mkdir
The output is equivalent to the apropos command. You receive output from
the -k flag only when the /usr/share/man/whatis keyword database already
exists.
Elisabetta Pace
Corso UNIX per principianti
2003
49
4. To display all entries from the keyword database related to the nroff and
troff commands, enter:
man -f nroff troff
The output is equivalent to the whatis command. You receive output from the
-f flag only when the /usr/share/man/whatis keyword database already
exists.
5. To display all ftp command related articles in the /usr/share/man or
/usr/share/man/local path, enter:
man -M/usr/share/man:/usr/share/man/local ftp
Files
/usr/bin/man Contains the man command.
/usr/share/man Standard manual directory structure.
/usr/share/man/cat?/* Directory containing preformatted pages.
/usr/share/man/whatis Contains the keyword database.
/usr/share/man/man?/* Directory containing nroff format manual pages.
Elisabetta Pace
Corso UNIX per principianti
2003
50
Related Information
The apropos command, catman command, more command, whatis command, whereis
command.
-------------------------------------------------------------------------------
Elisabetta Pace
Corso UNIX per principianti
2003
51
man -k fortran
f2c (1)
- Convert Fortran 77 to C or C++ . . .
f90 (1)
- Fortran 90 compiler
ftnchek (1)
- Fortran 77 program checker
g77 (1)
- GNU project Fortran Compiler (v0.5.24)
hepf77 (1)
- FORTRAN compiler front end
UNPACK_DATA_RECORD(3) - Use Unpack Data Record to unpack a data record
returned by FORTRAN binding input device inquiries.
asa(1)
- Prints FORTRAN files to AIX line-printer conventions.
fpr(1)
- Prints FORTRAN files to AIX line-printer conventions.
fsplit(1)
- Splits FORTRAN source code into separate routine files.
struct(1)
- Translates a FORTRAN program into a RATFOR program.
Elisabetta Pace
Corso UNIX per principianti
2003
52
Come aprire una nuova finestra X
xterm
xterm -sb (crea una finestra con scrollbar)
xterm -sl number (specifica il numero di
linee da salvare accessibili usando lo
scrollbar)
xterm –tn nome (determina il nome della
finestra)
xterm –bg colore (definisce il colore dello
sfondo della nuova finestra X)
xterm –e comando (esegue l’operazione
comando nella nuova finestra; e’ sempre
l’ultima opzione)
Elisabetta Pace
Corso UNIX per principianti
2003
53
showrgb
fornisce una lista dei colori disponibili
Elisabetta Pace
Corso UNIX per principianti
2003
54
Multitasking: background e
foreground
Multitasking: esecuzione contemporanea di
piu’ programmi (job control).
Un programma che gira in background ha la
stessa priorita’ di un programma che gira in
interattivo.
• &
• CTRL-z
• bg
• jobs
• fg
Elisabetta Pace
Corso UNIX per principianti
2003
55
Come vedere tutti i processi attivi
ps -ef
Le colonne dell’output ottenuto hanno il seguente significato
1. login name
2. processID
3. processID del processo padre
4. processor utilization for scheduling
5. data di inizio del processo
6. control terminal del processo
7. tempo di CPU consumatodal processo
8. nome del comando e suoi argomenti
Elisabetta Pace
Corso UNIX per principianti
2003
56
Come uccidere un comando in
esecuzione
kill – KILL proc-id
Elisabetta Pace
Corso UNIX per principianti
2003
57
Caratteri per nomi di files
Consiglio di usare qualsiasi lettera
maiuscola o minuscola, numeri, “_”, “-”,
“.”.
Elisabetta Pace
Corso UNIX per principianti
2003
58
File invisibili
Si chiamano file invisibili quelli con
nome che inizi con il carattere “.”
perche’ nomralmente il comando ls non li
mostra.
Elisabetta Pace
Corso UNIX per principianti
2003
59
Caratteri speciali da NON usare nei
nomi dei files:
&;|*?‘“’[ ]()$<>{}^#\/%!~
Elisabetta Pace
Corso UNIX per principianti
2003
60
Unix file system
I files sono organizzati in gerarchie di
directory.
Una directory speciale e’ root, che e’ la
directory piu’ alta (/).
Un filename e’ una sequenza di file
identifiers (cioe’ di nomi di directories)
separati dal carattere /.
Elisabetta Pace
Corso UNIX per principianti
2003
61
• path names assoluti: iniziano per / (p.es.
/exp/esperimento/user/utente/miofile)
• path names relativi: non iniziano per /
(p.es. miofile)
Elisabetta Pace
Corso UNIX per principianti
2003
62
• current directory ( . ) o directory di
lavoro
• parent directory ( .. )
• home directory (˜,˜username)
Elisabetta Pace
Corso UNIX per principianti
2003
63
File permissions
E’ una proprieta’ del file: tutti i link a
quel file avranno lo stesso modo.
Tre possibili permessi (mode bits): read
(r), write (w), execute (x). Il permesso
x e’ necessario per eseguire un file
compilato o uno shell script (cioe’ una
procedura di comandi).
Elisabetta Pace
Corso UNIX per principianti
2003
64
Cambiare il modo
chmod mode-list filename
P.es.
• chmod u+x file1
accorda il permesso di execute al
proprietario del file
• chmod g-r file1
toglie il permesso di read al gruppo
Elisabetta Pace
Corso UNIX per principianti
2003
65
Che cosa e’ AFS
E’ un file system distribuito che permette di
condividere file attraverso la rete, con dei
sistemi di autenticazione, access control list e
sistemi di cache migliori rispetto ad altri file
systems.
Per identificare gli utenti, AFS usa i token.
Un token puo’ essere ottenuto al momento del
login o usando il comando klog.
Un token ha un tempo di vita limitato.
Elisabetta Pace
Corso UNIX per principianti
2003
66
Un utente puo’ ottenere un solo token per
cella alla volta, ma piu’ token per celle diverse
P.es. se ho il token per [email protected], non
posso avere contemporaneamente quello per
[email protected], ma posso avere [email protected]
Posso vedere quali sono i miei token con il
comando tokens.
Elisabetta Pace
Corso UNIX per principianti
2003
67
comandi AFS
• klog
klog –h
klog –cell nome-cella –principal username
• tokens
Elisabetta Pace
Corso UNIX per principianti
2003
68
ACL per AFS
In AFS, l’accesso ai file e’ gestito da un
Access Control List (ACL). Solo le
directory hanno un ACL: non e’ possibile
assegnare un ACL ad un singolo file e
quindi tutti i file contenuti in una certa
directory hanno lo stesso ACL.
Elisabetta Pace
Corso UNIX per principianti
2003
69
AFS
• r
• w
• k
• l
• i
• d
• a
definisce i seguenti diritti di accesso:
read
write
lock
lookup
insert
delete
admin ACL
Elisabetta Pace
Corso UNIX per principianti
2003
70
fs listacl per vedere quale sia l’ACL di
una certa directory
fs setacl [userid|protectioGroup]
accessRights per cambiare un ACL
Elisabetta Pace
Corso UNIX per principianti
2003
71
ACL e permessi Unix
I mode bits dello Unix di group e word vengono
ignorati, mentre quelli dell’owner vengono esaminati
se c’e’ l’assenso dell’ACL e usati per dare il permesso
finale (read/write/execute) al file.
P.es. Se la flag di lettura di un file e’ non selezionata
(con un comando chmod –r) e si tenta di leggere quel
file, si otterra’ un errore del tipo ‘Permission denied’
anche se nell’ACL il permesso di read era selezionato.
Non
c’e’
un
permesso
ACL
corrispodente
direttamente al mode bit execute (x): per eseguire
un file AFS, l’utente deve avere il permesso di read
(r) e lookup (l) nell’ACL della directory in cui si trova
il file.
Elisabetta Pace
Corso UNIX per principianti
2003
72
Creazione di protection
groups
In AFS ogni utente puo’ creare fino a 20
protection groups. Un protection group
e’ un insieme di userid e/o group-id che
possono essere usate in ACL per
condividere delle directory tra utenti
AFS.
pts creategroup username:mygroup
Elisabetta Pace
Corso UNIX per principianti
2003
73
pts creategroup usertwo:mygroup
(per creare un protection group)
pts adduser –user newusername usertwo:mygroup
(per aggiungere utenti ad un protection group
esistente)
pts membership usertwo:mygroup
(per vedere l’elenco degli utenti di un protection
group)
pts listowned usertwo
(per elencare i protection groups posseduti)
Elisabetta Pace
Corso UNIX per principianti
2003
74
Checking volume quotas
Lo spazio file di AFS e’ composto da volumi.
Ogni volume contiene una certa quantita’ di
spazio allocata su un disco fisico su un certo
AFS server, montato coe directory ne
filesystem AFS. A ogni utente e’ associata una
quota di volume fissa.
fs listquota $HOME
(per vedere l’uso di spazio attuale e l’uso di
quota)
vos examine user.usetwo
(per esaminare l’uso di un certo volume)
Elisabetta Pace
Corso UNIX per principianti
2003
75
LNF AFS cell environment
Home directory structure:
• private
• public
• www
• .dotfiles
Elisabetta Pace
Corso UNIX per principianti
2003
76
Leggere la pagina WEB del centro di
calcolo per ulteriori informazioni su
AFS
Elisabetta Pace
Corso UNIX per principianti
2003
77
Bakup e restore dei files
sulle macchine LNF
cp $BACKUPVOL/private/main.c $HOME/private
(per recuperare un file dal backup notturno
(snapshot volumes) un file chiamato main.c)
Elisabetta Pace
Corso UNIX per principianti
2003
78
Come vedere il contenuto di
una directory
•
•
•
•
ls (directory list)
ls –l (long list)
ls –a (mostra anche i file nascosti)
ls –F (alla fine del nome del file viene
aggiunto un carattere che individua il tipo
di file: / indica una directory, * indica un
file eseguibile, @ indica un link soft)
• ls –ls (size in Kbytes)
Elisabetta Pace
Corso UNIX per principianti
2003
79
ls
ancoraUnaDir file1
ls -F
ancoraUnaDir/ file1
file2
file2
ls -l
total 8
drwxr-xr-x 2 pace
-rw-r--r-- 1 pace
-rw-r--r-- 1 pace
finuda
finuda
finuda
2048 May 07 12:40 ancoraUnaDir
32 May 07 12:39 file1
40 May 07 12:40 file2
ls -la
total 34
drwxr-xr-x
drwxr-xr-x
-rw-r--r-drwxr-xr-x
-rw-r--r--rw-r--r--
finuda
finuda
finuda
finuda
finuda
finuda
2048 May 07 14:29 .
10240 May 07 12:39 ..
28 May 07 15:04 .file3
2048 May 07 12:40 ancoraUnaDir
32 May 07 12:39 file1
40 May 07 12:40 file2
3 pace
25 pace
1 pace
2 pace
1 pace
1 pace
Elisabetta Pace
Corso UNIX per principianti
2003
80
ls -laFs
total 17
2 drwxr-xr-x
10 drwxr-xr-x
1 -rw-r--r-2 drwxr-xr-x
1 -rw-r--r-1 -rw-r--r--
3 pace
25 pace
1 pace
2 pace
1 pace
1 pace
finuda
finuda
finuda
finuda
finuda
finuda
2048
10240
28
2048
32
40
May 07 14:29 ./
May 07 12:39 ../
May 07 15:04 .file3
May 07 12:40 ancoraUnaDir/
May 07 12:39 file1
May 07 12:40 file2
nome
proprietario
mode bits
(il primo carattere
Indica il tipo del file)
Elisabetta Pace
gruppo
data ultimo accesso
dimensione
Corso UNIX per principianti
2003
81
comandi relativi alle directory
• pwd (indica la working directory) (print
working directory)
• cd directory (cambio working directory)
• mkdir dirname (creo una directory)
• du disk usage
• pushd
• popd
Elisabetta Pace
Corso UNIX per principianti
2003
82
Links
Un link permette a piu’ utenti di
accedere agli stessi dati.
Una directory entry relativa ad un file
contiene il nome del file ed un inode
number, che e’ una struttura dati
interna che contiene informazioni
relative a quel file.
Elisabetta Pace
Corso UNIX per principianti
2003
83
differenze tra un
collegamento soft e hard
Un collegamento soft è praticamente un
nome ulteriore che viene assegnato allo
stesso file. Non occupa spazio su disco (se
non per un inode), cioe’ non e’ una copia del
file
Un collegamento hard è una copia fisica del
file; inoltre ogni cambiamento fatto
all'originale
(o
alla
copia)
risulterà
effettuata
anche
sulla
copia
(o
sull'originale).
Elisabetta Pace
Corso UNIX per principianti
2003
84
ln filename nomelinkHard
ln –s filename nomelinkSoft
ls –i per vedere gli i-node dei file
Elisabetta Pace
Corso UNIX per principianti
2003
85
Se si cancella un collegamento soft il
file originale viene perso; se invece c'è
un collegamento hard e si cancella
l'originale, il collegamento (ed il suo
contenuto) non verranno modificati.
Elisabetta Pace
Corso UNIX per principianti
2003
86
axcalc:~/corsoUnix> ls -l
total 38
drwxr-xr-x 2 pace finuda 2048 May 07 12:40 ancoraUnaDir/
-rw-r--r-- 1 pace finuda
72 May 07 15:26 file
-rw-r--r-- 1 pace finuda
32 May 07 12:39 file1
-rw-r--r-- 1 pace finuda
72 May 07 15:26 file10
-rw-r--r-- 1 pace finuda
72 May 07 15:26 file2
-rw-r--r-- 1 pace finuda 12501 May 07 15:16 qq.qq
axcalc:~/corsoUnix> ln file1 file1LinkHard
axcalc:~/corsoUnix> ln -s file1 file1LinkSoft
axcalc:~/corsoUnix> ls -l
total 42
drwxr-xr-x 2 pace finuda 2048 May 07 12:40 ancoraUnaDir/
-rw-r--r-- 1 pace finuda
72 May 07 15:26 file
-rw-r--r-- 2 pace finuda
32 May 07 12:39 file1
-rw-r--r-- 1 pace finuda
72 May 07 15:26 file10
-rw-r--r-- 2 pace finuda
32 May 07 12:39 file1LinkHard
lrwxr-xr-x 1 pace finuda
5 May 08 14:21 file1LinkSoft@ -> file1
-rw-r--r-- 1 pace finuda
72 May 07 15:26 file2
-rw-r--r-- 1 pace finuda 12501 May 07 15:16 qq.qq
Elisabetta Pace
Corso UNIX per principianti
2003
87
Redirezione di input, output
e error log
• > redireziona l’output standard
• >> concatena l’output standard ad un file
esistente
• >! sovrascrive un file esistente con
l’output standard
• < operatore di redirezione dell’input
standard
• >& redirezione dell’output standard e
dell’error standard
Elisabetta Pace
Corso UNIX per principianti
2003
88
Nella tcshell lo standard error NON puo’
essere rediretto separateente dall’output
> cat x
cat: no such file
> cat y
this is y
> cat x y >& hold
cat: no such file
this is y
(il file x non esiste, mentre il file y contiene la sola riga ‘this is
y’)
Elisabetta Pace
Corso UNIX per principianti
2003
89
Per visualizzare un file
• cat filename (mostra tutto il file)
• more filename (mostra tutto il file, una
schermata alla volta)
• head [-n number] filename (mostra le prime
n righe del file)
• tail [-n number] filename (mostra le ultime
n righe del file)
Elisabetta Pace
Corso UNIX per principianti
2003
90
Come appendere un file
all’altro
• cat filename per vedere un file
• cat filename1 filename2 > filename3
concatena filename1 e filename2 e li
scrive in filename3
• cat filename1 >> filename2
appende filename1 a filename2
Elisabetta Pace
Corso UNIX per principianti
2003
91
• cat > filename1
Stringhe
CTRL+D
per creare il file filename1
• cat >> filename1
Stringhe
CTRL+D
per appendere al file filename1
Elisabetta Pace
Corso UNIX per principianti
2003
92
grep
grep stringa filename1
(visualizza le righe di filename1 contenenti stringa)
Elisabetta Pace
Corso UNIX per principianti
2003
93
sort
sort filename1 > filename2
ordina filename1 e lo scrive in filename2
Elisabetta Pace
Corso UNIX per principianti
2003
94
uniq filename1
cancella due
filename1
Elisabetta Pace
righe
adiacenti
Corso UNIX per principianti
2003
uguali
in
95
Come muovere un file
mv filename1 filename2
(per rinominare un file)
cp filename1 filename2
(per copiare un file)
cp –i per avere la conferma
Elisabetta Pace
Corso UNIX per principianti
2003
96
Per cancellare
rm filename
(per cancellare un file)
rm –i
(per cancellare un file dopo aver dato conferma)
rm –R
(per cancellare in modo ricorsivo una directory)
rmdir directoryname
(per cancellare una directory se e’ vuota)
Elisabetta Pace
Corso UNIX per principianti
2003
97
Come comparare due files
cmp file1 file2
(dice solo se i due files sono uguali o no)
diff file1 file2
(mostra anche le linee che diversificano
i due files)
Elisabetta Pace
Corso UNIX per principianti
2003
98
Come classificare i files
file [options] filename
permette di determinare il tipo di un
file: p.es. directory, data, ASCII text,
C-program source, archive, eseguibile,
empty, core file
Elisabetta Pace
Corso UNIX per principianti
2003
99
Come trovare un file
find pathlist criterion
permette di trovare un file con certe
caratteristiche in una parte del filesystem.
P.es. Se il criterion e’ –name, viene cercato
un file con un certo nome
find . –name nomefile –print
(se nomefile contiene wildcards, deve essere
messo tra virgolette, p.es. “*.html”)
Elisabetta Pace
Corso UNIX per principianti
2003
100
Come modificare un file
• vi
• emacs
Elisabetta Pace
Corso UNIX per principianti
2003
101
vi: comandi principali (1)
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
i
inserisci testo prima del cursore
a
inserisci testo dopo il cursore
A
inserisci testo alla fine della riga
I
inserisci testo all’inizio della riga
dd
cancella la riga corrente
x
cancella il carattere sotto il cursore
r
sostituisce il carattere sotto il cursore
<esc>
passo dalla modalita’ testo alla modalita’ comando visuale
/string<RET>
cerca string in avanti
/<RET>
cerca ancora string in avanti
:viusage
lista tutti icomandi vi
:viusage com
help breve del comando com
:q
esce dall’editor
:q!
esce dall’editor senza salvare le modifiche
:wq
salva le modifiche ed esce dall’editor
Elisabetta Pace
Corso UNIX per principianti
2003
102
vi: comandi principali (2)
frecce per muoversi nella pagina
• <space>, l o freccia-destra
sposta il cursore a destra
• h o freccia-a-sinistra
sposta il cursore a sinistra
• J o freccia-in-basso
sposta il cursore in basso
• K o freccia-in-alto
sposta il cursore in alto
Elisabetta Pace
Corso UNIX per principianti
2003
103
emacs
Editor orientato alla pagina
Elisabetta Pace
Corso UNIX per principianti
2003
104
sed
editor non interattivo
p.es.
sed ‘s/b/B/g’ file-name
sostituisce tutte le b con B nel file file-name
Elisabetta Pace
Corso UNIX per principianti
2003
105
awk
Cerca e processa dei pattern in un file
p.es.
awk –F “ “ ’{print $1 “+” $2}’ file-name
Elisabetta Pace
Corso UNIX per principianti
2003
106
Wildcards
• * qualsiasi stringa
• ? qualsiasi carattere
• [...] qualsiasi carattere di quelli tra
parentesi
• [char1-char2] qualsiasi carattere tra
char1 e char2
• ^pattern qualsiasi stringa che non sia
pattern
Elisabetta Pace
Corso UNIX per principianti
2003
107
[...] puo’ essere usato solo per caratteri
esistenti (quindi funziona con ls ma non con
mkdir)
Usare parentesi graffe per generare
argomenti
p.es. mkdir file{1,2,3,4,5}
(crea le directory file1, file2, file3, file4,
file5)
mv file{1,2}
(rinomina file1 in file2)
diff prova{.old,}
(guarda le differenze tra prova.old e prova)
Elisabetta Pace
Corso UNIX per principianti
2003
108
echo
echo stringa
scrive i suoi argomenti sullo standard
output
Elisabetta Pace
Corso UNIX per principianti
2003
109
Piping di operazioni
Permette di eseguire piu’ operazioni in
sequenza e di usare l’output della
operazione predente come input della
operazione successiva
p.es. ls –l | grep May
Elisabetta Pace
Corso UNIX per principianti
2003
110
• date ; who | more
• (date ; who) | more
• date ; du > file10
• (date ; du) > file10
Elisabetta Pace
Corso UNIX per principianti
2003
111
date
date
Elisabetta Pace
Corso UNIX per principianti
2003
112
Compressione di files
• compress nomefile
(genera un file compresso di nome nomefile.Z)
• gzip
•
•
•
•
(genera un file compresso di nome nomefile.gz)
zip unzip
tar xvf nomefile
tar cvf miofile ./*
gunzip
(decomprime file generati con gzip o compress)
Elisabetta Pace
Corso UNIX per principianti
2003
113
Un sistema di posta
elettronica: pine
pine
Elisabetta Pace
Corso UNIX per principianti
2003
114
Per vedere file postscript: gv
gv postscripFile
Elisabetta Pace
Corso UNIX per principianti
2003
115
Per vedere file pdf: acroread
acroread pdfFile
Elisabetta Pace
Corso UNIX per principianti
2003
116
Per vedere file grafici: xv
xv nomefilegrafico
Elisabetta Pace
Corso UNIX per principianti
2003
117
Per convertire file grafici
• display
• convert
Elisabetta Pace
Corso UNIX per principianti
2003
118
Come stampare un file a Frascati
• lpr –PnomeStampante@unixprint
filename
(per stampare SOLO file di testo o
postscript)
• lpq –PnomeStampante@unixprint
(per controllare lo stato di una coda di
stampa)
Elisabetta Pace
Corso UNIX per principianti
2003
119
• lprm –PnomeStampante@unixprint
(per cancellare una stampa)
lprm –a
(per cancellare tutti i miei file in
stampa su tutte le stampanti)
ATTENZIONE
lprm –a all
(cancella TUTTI i jobs su TUTTE le
stampanti, non solo i miei)
Elisabetta Pace
Corso UNIX per principianti
2003
120
Come interagire con sistemi
remoti
• telnet login remoto
• ssh login remoto in modo sicuro
• ftp trasferimento di files tra un
sistema remoto ed il sistema locale
• ping per verificare se un sistema
remoto e’ attivo
Elisabetta Pace
Corso UNIX per principianti
2003
121
Comandi principali per ftp
•
•
•
•
•
•
•
•
•
pwd
ls
get rfile lfile
mget
put lfile rfile
mput
ascii|binary
cd [rdir]
lcd [ldir]
Elisabetta Pace
nome della working dir remota
lista della working dir remota
copia il file remoto rfile nel file locale lfile
copia il file locale lfile nel file remoto rfile
seleziona il modo di trasferimento
cambia la working dir sulla macchina remota
cambia la working dir sulla macchina locale
Corso UNIX per principianti
2003
122
Login remoto sicuro: ssh
ssh [email protected]
ssh [email protected]
[email protected]'s password:
scp user@host1:file1 user@host2:file2
Elisabetta Pace
Corso UNIX per principianti
2003
123
ASIS
ASIS e’ un gruppo di programmi di utilita’ generale,
installati anche a Frascati su tutte le macchine UNIX.
Il link alla documentazione e’
http://wwwpdp.web.cern.ch/wwwpdp/ose/asis/products/
Elisabetta Pace
Corso UNIX per principianti
2003
124
Elisabetta Pace
Corso UNIX per principianti
2003
125
Come creare una propria
pagina WEB visibile anche
fuori dai LNF
Da un qualsiasi WEB browser, con l’indirizzo
http://www.lnf.infn.it/˜user
si accede al file ˜user/www/Welcome.html.
Elisabetta Pace
Corso UNIX per principianti
2003
126
Alcuni comandi di utilita’ generale
ps2ascii traduce PostScript o PDF in ASCII
ps2pdf traduce da Post Script a PDF
pdf2ps traduce da PDF a Post Script
epsffit forza un file encapsulated PostScript
(EPSF) in una certa dimensione
xgrab cattura l’immagine di una finestra
xpaint programma simile a Paint
ispell analizzatore ortografico interattivo
Elisabetta Pace
Corso UNIX per principianti
2003
127
xcal calendario per X11 con allarmi
xcalc calcolatrice scientifica
cut estrae byte, caratteri o campi selezionati
da ogni riga di un file
join per creare un nuovo file le cui colonne
sono costituite dai due file di input
id mostra l‘identificatore di sistema di un
utente specificato
Elisabetta Pace
Corso UNIX per principianti
2003
128
nohup command-line continua ad eseguire la
linea di comando anche dopo il logout
xwd salva una immagine dello schermo in un
file
xclock orologio
paste file-list legge le linee dei file nella
file-list e congiunge le linee corrispondenti
sull’output
Elisabetta Pace
Corso UNIX per principianti
2003
129
Esempio di paste
cat ex1
1
one
ONE
cat ex2
2
two
TWO
paste ex1 ex2
1
2
one two
ONE TWO
Elisabetta Pace
Corso UNIX per principianti
2003
130
Compilatori
• gcc
• f77
• f90
Elisabetta Pace
C e C++
fortran77
fortran90
Corso UNIX per principianti
2003
131
f77 (1)
f77 chiama:
1. preprocessore:
espande
le
definizioni delle macro
2. compilatore: crea codice assembler
corrispondente alle istruzioni del
programma sorgente
3. assembler: crea un “object code”
comprensibile per la CPU
Elisabetta Pace
Corso UNIX per principianti
2003
132
f77 (2)
4.
linker: cerca le librerie in cui si
trovano le funzioni usate nel mio
programma e combina tutti gli “object
file” necessari. Per default cerca libc.a ma
posso usare un’opzione a f77 per fargli
cercare altre librerie.
P.es.
f77 file.f –lm
fa il link con libm.a
f77 file.f –lgraphic
fa il link con libgraphic.a
In entrambi questi casi, il linker cerca le
librerie in /usr/lib o /lib
Elisabetta Pace
Corso UNIX per principianti
2003
133
f77 (3)
f77 file.f –Ldir1 –Ldir2 –lm
cerca libm.c in dir1, poi in dir2 ed infine
in /user/lib e /lib
Il linker crea un eseguibile chiamato
per default a.out e cancella tutti i .o
creati
Elisabetta Pace
Corso UNIX per principianti
2003
134
f77 –o prog f1.o f2.c f3.o
non ricrea f1.o e f2.o
f77 –O file.f
usa un ottimizzatore nella creazione
dell’eseguibile (non si puo’ usare quando si
voglia eseguire un debug)
f77 –g file.f
genera informazioni addizionali necessarie al
debugger (p.es. una tabella dei simboli che
contiene tutti i valori e tutti i tipi di variabili
usate nel programma)
Elisabetta Pace
Corso UNIX per principianti
2003
135
prova.f
program prova
read (5,*) b
a=b+1
print *,a
END
Elisabetta Pace
Corso UNIX per principianti
2003
136
Per compilare un
programma fortran
f77 programma.f
genera un eseguibile chiamato a.out
f77 –o programma programma.f
genera un eseguibile chiamato programma
f77 –c programma.f
genera un object file chiamato programma.o
Elisabetta Pace
Corso UNIX per principianti
2003
137
make (1)
Elisabetta Pace
Corso UNIX per principianti
2003
138
make (2)
Struttura di un Makefile
Target: lista-prerequisiti
<TAB> comandi-costruttivi
Target e’ il nome del file che dipende
dai file elencati nella lista-prerequisiti.
comandi-costruttivi sono i comandi per
la shell che servono per costruire il
Target
Elisabetta Pace
Corso UNIX per principianti
2003
139
make (3)
make esegue i comandi-costruttivi
quando la data di modifica di uno o piu’
file nella lista-prerequisiti e’ piu’
recente del Target file
Elisabetta Pace
Corso UNIX per principianti
2003
140
Makefile (1)
prova : prova.o
f77 -o prova prova.o
prova.o : prova.f
f77 -c prova.f
qui DEVE esserci un <TAB>
clean :
ls
rm prova.o
test :
echo "prova"
Elisabetta Pace
Corso UNIX per principianti
2003
141
make (4)
In un Makefile si possono usare delle
macro
ID=list
Dopo questa definizione di macro $ID
rappresenta sempre list nel resto del
Makefile
Elisabetta Pace
Corso UNIX per principianti
2003
142
Makefile (2)
ML=prova
$(ML) : $(ML).o
f77 -g -o $(ML) $(ML).o
echo "f77 -o prova prova.o"
$(ML).o : $(ML).f
f77 -g -c $(ML).f
echo "f77 -c prova.f"
clean :
ls
rm prova.o
test :
echo prova
Elisabetta Pace
Corso UNIX per principianti
2003
143
debug (1)
Un debugger simbolico di alto livello
permette di analizzare l’esecuzione di
un programma in termini di comandi di
linguaggio di programmazione, ma anche
di vedere cosa succede a livello piu’
basso, permettendo di analizzare
l’esecuzione di un programma a livello di
istruzioni macchina.
Elisabetta Pace
Corso UNIX per principianti
2003
144
debug (2)
•
•
•
•
•
dbx
gdb
adb
sdb
debug
Elisabetta Pace
Corso UNIX per principianti
2003
145