Corso UNIX per principianti Elisabetta Pace Corso UNIX
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 Mc. Intosh, 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: 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'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 (vt 100, xterm) Elisabetta Pace Corso UNIX per principianti 2003 7
Per cambiare la password 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/bsh /usr/bin/csh /usr/bin/ksh /usr/bin/tsh /usr/sbin/sliplogin /usr/sbin/uucp/uucico /usr/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 ex 1 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 ex 1 1 : italiano 3: 4 : francese 2: italiano Elisabetta Pace Corso UNIX per principianti 2003 17
Ma se avessi sostituito setenv formaggio=italiano in esempio 1 il risultato sarebbe source ex 1 1 : italiano 3 : italiano 4 : francese 2: italiano Elisabetta Pace Corso UNIX per principianti 2003 18
alias_name [’ |”]comando [’ |”] Per verificarne il valore 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’ prova. Script e che contiene la seguente riga setenv EDITOR emacs Per eseguire questo script, devo dare il comando source prova. Script 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’ prova. Script 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 prova. Script del file eseguibile). /prova. Script 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 • etccsh. cshrc e etccsh. 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` == "OSF 1" ) set opt = "-M" if ( `uname` == "Sun. OS" ) set opt = "" setenv REMHOST `who $opt | grep $tty | cut -f 2 -d"(" | cut -f 1 -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 aen 2 b 1 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` == "OSF 1" ) then set prompt="%T %m: %C %# " # tcsh prompt set path = (. $path /sbin /usr/bin/X 11 /usr/local/X 11 R 5/bin /usr/local/bin /usr/local/gnu/bin $home/bin/osf ) else set path = ( $path /etc /usr/local/bin /usr/local/X 11 R 5/bin /usr/local/gnu/bin /usr/uimx 2. 9/bin $home/bin $home/bin/hpux. ) endif if ( `uname` == "HP-UX" ) then set prompt="%T %m: %C %# " # tcsh prompt # setenv LPATH /usr/lib: /usr/lib/X 11/extensions: . setenv LHC_ROOT /afs/cern. ch/atlas/offline/@sys/pro # setenv PATH. /: /u 1/pace: : $PATH endif if ( `uname` == "Sun. OS" ) 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 /u 1/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 -iso 8859 -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 parola. Chiave (localizza le pagine di manuale relative a parola. Chiave) • 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 ---------------------------------------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 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 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? /* 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 f 2 c (1) - Convert Fortran 77 to C or C++. . . f 90 (1) - Fortran 90 compiler ftnchek (1) - Fortran 77 program checker g 77 (1) - GNU project Fortran Compiler (v 0. 5. 24) hepf 77 (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 -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. process. ID 3. process. ID 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 file 1 accorda il permesso di execute al proprietario del file • chmod g-r file 1 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 yyy@lnf. infn. it, non posso avere contemporaneamente quello per xxx@lnf. infn. it, ma posso avere yyy@cern. ch Posso vedere quali sono i miei token con il comando tokens. Elisabetta Pace Corso UNIX per principianti 2003 67
comandi AFS • 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 definisce i seguenti diritti di accesso: • r read • w write • k lock • l lookup • i insert • d delete • a 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|protectio. Group] access. Rights 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 ancora. Una. Dir file 1 ls -F ancora. Una. Dir/ file 1 ls -l total 8 drwxr-xr-x 2 pace -rw-r--r-- 1 pace ls -la total 34 drwxr-xr-x -rw-r--r-drwxr-xr-x -rw-r--r-- file 2 finuda 2048 May 07 12: 40 ancora. Una. Dir 32 May 07 12: 39 file 1 40 May 07 12: 40 file 2 3 pace finuda 25 pace finuda 1 pace finuda 2048 May 07 14: 29. 10240 May 07 12: 39. . 28 May 07 15: 04. file 3 2048 May 07 12: 40 ancora. Una. Dir 32 May 07 12: 39 file 1 40 May 07 12: 40 file 2 Elisabetta Pace Corso UNIX per principianti 2003 80
ls -la. Fs total 17 2 drwxr-xr-x 10 drwxr-xr-x 1 -rw-r--r-2 drwxr-xr-x 1 -rw-r--r-- 3 pace 25 pace 1 pace 2 pace 1 pace finuda finuda 2048 10240 28 2048 32 40 May 07 14: 29. / May 07 12: 39. . / May 07 15: 04. file 3 May 07 12: 40 ancora. Una. Dir/ May 07 12: 39 file 1 May 07 12: 40 file 2 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 nomelink. Hard ln –s filename nomelink. Soft 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: ~/corso. Unix> ls -l total 38 drwxr-xr-x 2 pace finuda 2048 May 07 12: 40 ancora. Una. Dir/ -rw-r--r-- 1 pace finuda 72 May 07 15: 26 file -rw-r--r-- 1 pace finuda 32 May 07 12: 39 file 1 -rw-r--r-- 1 pace finuda 72 May 07 15: 26 file 10 -rw-r--r-- 1 pace finuda 72 May 07 15: 26 file 2 -rw-r--r-- 1 pace finuda 12501 May 07 15: 16 qq. qq axcalc: ~/corso. Unix> ln file 1 Link. Hard axcalc: ~/corso. Unix> ln -s file 1 Link. Soft axcalc: ~/corso. Unix> ls -l total 42 drwxr-xr-x 2 pace finuda 2048 May 07 12: 40 ancora. Una. Dir/ -rw-r--r-- 1 pace finuda 72 May 07 15: 26 file -rw-r--r-- 2 pace finuda 32 May 07 12: 39 file 1 -rw-r--r-- 1 pace finuda 72 May 07 15: 26 file 10 -rw-r--r-- 2 pace finuda 32 May 07 12: 39 file 1 Link. Hard lrwxr-xr-x 1 pace finuda 5 May 08 14: 21 file 1 Link. Soft@ -> file 1 -rw-r--r-- 1 pace finuda 72 May 07 15: 26 file 2 -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 filename 1 filename 2 > filename 3 concatena filename 1 e filename 2 e li scrive in filename 3 • cat filename 1 >> filename 2 appende filename 1 a filename 2 Elisabetta Pace Corso UNIX per principianti 2003 91
• cat > filename 1 Stringhe CTRL+D per creare il filename 1 • cat >> filename 1 Stringhe CTRL+D per appendere al filename 1 Elisabetta Pace Corso UNIX per principianti 2003 92
grep stringa filename 1 (visualizza le righe di filename 1 contenenti stringa) Elisabetta Pace Corso UNIX per principianti 2003 93
sort filename 1 > filename 2 ordina filename 1 e lo scrive in filename 2 Elisabetta Pace Corso UNIX per principianti 2003 94
uniq filename 1 cancella due filename 1 Elisabetta Pace righe adiacenti Corso UNIX per principianti 2003 uguali in 95
Come muovere un file mv filename 1 filename 2 (per rinominare un file) cp filename 1 filename 2 (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 file 1 file 2 (dice solo se i due files sono uguali o no) diff file 1 file 2 (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-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 • [char 1 -char 2] qualsiasi carattere tra char 1 e char 2 • ^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 file 1, file 2, file 3, file 4, file 5) mv file{1, 2} (rinomina file 1 in file 2) diff prova{. old, } (guarda le differenze tra prova. old e prova) Elisabetta Pace Corso UNIX per principianti 2003 108
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 > file 10 • (date ; du) > file 10 Elisabetta Pace Corso UNIX per principianti 2003 111
date Elisabetta Pace Corso UNIX per principianti 2003 112
Compressione di files • compress nomefile (genera un file compresso di nomefile. Z) • gzip • • (genera un file compresso di 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 Elisabetta Pace Corso UNIX per principianti 2003 114
Per vedere file postscript: gv gv postscrip. File Elisabetta Pace Corso UNIX per principianti 2003 115
Per vedere file pdf: acroread pdf. File 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 –Pnome. Stampante@unixprint filename (per stampare SOLO file di testo o postscript) • lpq –Pnome. Stampante@unixprint (per controllare lo stato di una coda di stampa) Elisabetta Pace Corso UNIX per principianti 2003 119
• lprm –Pnome. Stampante@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 user@macchina. Remota. dominio. Remoto ssh pace@dxcalc. lnf. infn. it's password: scp user@host 1: file 1 user@host 2: file 2 Elisabetta Pace Corso UNIX per principianti 2003 123
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 ps 2 ascii traduce Post. Script o PDF in ASCII ps 2 pdf traduce da Post Script a PDF pdf 2 ps traduce da PDF a Post Script epsffit forza un file encapsulated Post. Script (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 X 11 con allarmi xcalcolatrice 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 filelist e congiunge le linee corrispondenti sull’output Elisabetta Pace Corso UNIX per principianti 2003 129
Esempio di paste cat ex 1 1 one ONE cat ex 2 2 two TWO paste ex 1 ex 2 1 2 one two ONE TWO Elisabetta Pace Corso UNIX per principianti 2003 130
Compilatori • gcc • f 77 • f 90 Elisabetta Pace C e C++ fortran 77 fortran 90 Corso UNIX per principianti 2003 131
f 77 (1) f 77 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
f 77 (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 f 77 per fargli cercare altre librerie. P. es. f 77 file. f –lm fa il link con libm. a f 77 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
f 77 (3) f 77 file. f –Ldir 1 –Ldir 2 –lm cerca libm. c in dir 1, poi in dir 2 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
f 77 –o prog f 1. o f 2. c f 3. o non ricrea f 1. o e f 2. o f 77 –O file. f usa un ottimizzatore nella creazione dell’eseguibile (non si puo’ usare quando si voglia eseguire un debug) f 77 –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 f 77 programma. f genera un eseguibile chiamato a. out f 77 –o programma. f genera un eseguibile chiamato programma f 77 –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 f 77 -o prova. o : prova. f f 77 -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 f 77 -g -o $(ML). o echo "f 77 -o prova. o" $(ML). o : $(ML). f f 77 -g -c $(ML). f echo "f 77 -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
- Slides: 145