c shell1 c shell2 b shell scripts 1 b shell scripts 2 b shell scripts 3 modifica testo su line di comando: ctrl H: elimina carattere a sinistra (Backspace) ctrl D: elimina carattere a destra ctrl K: cancella fino a fine riga ctrl U: cancella da inizio riga ctrl Y: incolla il testo cancellato ctrl A: sposta cursore inizio riga ctrl E: sposta cursore fine riga ctrl F: sposta cursore a destra (freccia) ctrl B: sposta cursore a sinistra (freccia) ctrl T: inverte due caratteri lista eventi della history list: history riesegui l'ultimo comando: !! riesegui il comando n: !n riesegui il comando nella posizione relativa -n: !-n riesegui il comando piu' recente che inizia per stringa: !stringa lista degli alias: alias crea un alias: alias aliasname command cancella un alias: unalias aliasname lista dei job attuali: jobs kill del job numero n: kill %n manda il job in foreground: fg %n sospendi il job e manda in background: C-Z bg sospendi il job e manda in foreground: stop %n fg %n avvisa quando un job cambia stato: notify %n ridirige standard output e standard error: cat a b >& filename mostra il contenuto dello stack: dirs aggiunge unadirectory nello stack: pushd dirname inverte le ultime due directory dello stack: pushd rimuove la top directory dallo stack: popd pulisce lo schermo: clear stampa una stringa: echo "stringa" separatore di comandi: clear ; echo "seconda riga" inibisce il newline: echo -n "la data di oggi: " ; date dichiara e assegna una variabile di stringa: set var = stringa set var = "stringa" variabile con contenuto NULL: set var = usa il contenuto di una variabile: echo $var lista delle variabili dichiarate: set rimuove una variabile dalla lista: unset var concatenamento di stringhe: set sentence = "Hi" set sentence = "$sentence there everybody" dichiara e assegna un array: set colors = (rosso blue giallo) usa il contenuto di un array: echo $colors usa un elemento di un array: echo colors[2] variabile del numero di elementi di un array: $#colors dichiara un array vuoto: set colors ('' '' '') assegna un elemento di un array: set colors[2] = rosso range di un array: echo colors[2-3] echo colors[2-] aggiungi un elemento in fondo ad un array: set colors = ($colors giallo) aggiungi un elemento in mezzo ad un array: set colors = ($colors[1-2] giallo $colors[3-]) elimina il primo elemento di un array: shift color dichiara e assegna una variabile numerica: @ count = 3 echo $count espressioni numeriche: @ num = ( 5 * 3 + 4 / 2 ) incremento e decremento: @ num++ @ num-- espressioni relazionali, (vero 1 - falso 0): @ result = ( $count <= 5 ) == equal (either strings or numbers) != not equal (either strings or numbers) =~ string match !~ string mismatch <= numerical less than or equal to >= numerical greater than or equal to > numerical greater than < numerical less than dichiara un array numerico: set vec = (0 0 0 0 0) assegna un elemento di un array numerico: @ vec[3] = 5 uso di un array numerico: echo $vec echo $vec[3] echo $vec[$n] valore di input da terminale (the shell will pause until the user types a carriage return $< set var = $< variabile logica su dichiarazione di variabile, vale 1 se la variabile esiste: $?count ${?count} if ($?dirname) then ls $dirname endif Utilizzo dell'output di un comando all'interno di un altro comando: `command` echo "Le righe nel file sono `wc -l filename`" --------------built in variables: la lista si ottiene col comando: set $cwd -- current working directory $user -- who am I? $hostess -- name of the computer I am logged on to $path -- my execution path (list of directories to be searched for executables) $term -- what kind of terminal I am using $status -- a numeric variable, usually used to retun error codes of last command $shell -- which shell am I using (usu. either /bin/csh or /bin/sh) $history -- lenght of history list $prompt -- what I am currently using for a prompt set prompt = '! % ' variabile del process id number: $$ cp file tempfile.$$ mostra il valore di una variabile di ambiente: echo $Var mostra tutte le variabili di ambiente: printenv assegna una variabile di ambiente: setenv Var xyz (in bash: export Var=xyz) dichiara una variabile di ambiente: (esportata anche dei child processes): setenv PATH (/usr/bin /bin .) $argv array degli argomenti di un comando $argv[n] si abbrevia in $n $* indica tutti gli argomenti $#argv indica il numero di elementi $HOME pathname della home directory $PATH array con i pathnames ----------variabili di shell come switches hanno effetto se la variabile e' stata dichiarata quindi si annullano con unset set echo mostra i comandi prima di eseguirli set noclobber previene la sovrascrittura di un file con lo standard output set notify avvisa quando un comando in bg termina -------------------script gli script devono contenere nella prima riga #!/bin/csh una volta compilati devono essere resi eseguibili: chmod u+x scriptname quindi eseguiti con: ./scriptname opzione debugging: csh -xv scriptname in alternativa possono essere eseguiti con: source scriptname .login questo script viene eseguito all'inizio di ogni sessione .cshrc questo script viene eseguito ad ogni shell o esecuzione di script .logout questo script viene eseguito a fine sessione -----------strutture di controllo if (expression) command if (expression) then commands endif if (expression) then commands else commands endif if (expression) then commands elseif (expression) then commands else commands endif goto label .. label: .. onintr label .. label: .. while (expression) commands end @ n = 5 while ($n) # do something @ n-- end per uscire da un loop: break per uscire dalla shell: exit file queries: -e file file merely exists (may be protected from user) -r file file exists and is readable by user -w file file is writable by user -f file file is an ordinary file -d file file is a directory if (-e file) then ... endif operatori booleani: ! || && if (! -e file) then ... endif if (-e file && -w file) then ... endif multiway branch: switch ( expression ) case a: commands breaksw case b: commands breaksw endsw switch ($argv[$1]) case quit: breaksw # leave the switch statement case list: ls breaksw endsw