[>a2385.html>] [<a2383.html<] [^a2.html^]
Come si utilizzano le variabili nella shell bash?
---------
In genere si utilizzano nomi di variabili con caratteri maiuscoli e si dichiarano da riga di comando nel seguente modo:
NOMEVARIABILE=valore
e l'utilizzo della variabile si effettua con il simbolo $ davanti il nome della variabile:
RICOMP_KERNEL=/usr/src/linux cd $RICOMP_KERNEL
Come si visualizzano tutte le variabili d'ambiente del sistema?
il comando è:
#
set
[Invio]
Per vedere il contenuto di una variabile si utilizza il comando:
#
echo $NOME_VARIABILE
[Invio]
e per svuotarne il contenuto si usa:
#
unset NOME_VARIABILE
[Invio]
Ad ogni riavvio della shell o ad ogni cambio shell, le variabili si riazzerano. Per rendere disponibile una variabile anche all'esterno, si usa il comando:
#
export NOME_VARIABILE
[Invio]
Come si personalizza l'aspetto del prompt con la shell bash?
---------
Il prompt si personalizza assegnando formattatori particolari alla variabile PS1:
#
PS1="\w\$>"
[Invio]
Ecco i formattatori:
\d data; \h nome macchina; \n a capo; \s nome della shell; \t ora; \u nome utente; \w directory corrente; \W il nome di base della directory corrente; \# il numero del comando corrente; \$ emette # se l'utente è root altrimenti $; \! il numero nello storico del comando corrente; \\ backslash; \[ inizia una sequenza di caratteri non stampabili; \] chiude la sequenza.
Quali sono le variabili di sistema più comuni?
HOME directory home; HOSTTYPE tipo di macchina; PS1 prompt primario; PWD directory corrente; UID numero identificativo utente; $ PID della shell; ! PID dell'ultimo processo in background.
Che prompt mi consigliate di usare? Ne avete uno utile e pratico?
---------
Metti nel tuo file /home/.profile
(o /home/.bash_profile
) la seguente riga: (a scopo pratico la riga degli esempi di prompt, sono state suddivise in 3; ricordate di ricomporle su una stessa riga una di seguito l'altra)
export PS1='\[\033[1;34m\]\n\u@\h \[\033[1;33m\]---\[\033[1;34m\ ][`pwd`] \[\033[1;33m\]---\[\033[1;34m\] [\t]\[\033[1;33m\]--- \ [\033[1;31m\]\!\n\[\033[1;31m\]*\[\033[0;37m\] '
export PS1="\[\033[1;31m\][\u@\h]\[\033[1;35m\]:\ [\033[1;33m\][\d]\[\033[1;35m\]:\[\033[1;36m\][\t] \[\033[1;35m\]:\[\033[1;32m\][\w]\[\033[1;35m\]:\n\[\033[0;34m\] -\[\033[1;34m\]-\[\033[1;31m\]>\033[1C\[\033[0m\]"
export PS1="\[\033[0;44m\]\u@\h \[\033[1;45m\]\w\[\033[0;39m\]# "
export PS1="\[\033[1;34m\]\n\u@\h \[\033[1;33m\]--- \[ \033[1;34m\]\w\[\033[1;33m\]---\[\033[1;34m\] [\t] \[\033[1;33m\]--- \[\033[1;31m\]\!\n\[\033[1;31m\]$\[\033[0;39m\] "
YLOBRN='\[\033[01;33;43m\]' WHTBRN='\[\033[01;37;43m\]' REDBRN='\[\033[00;31;43m\]' REDBLK='\[\033[00;31;40m\]' PPLBLK='\[\033[01;35;40m\]' WHTBLK='\[\033[01;37;40m\]' NONE='\[\033[00m\]' HBLK='\[\033[00;30;30m\]' HBLU='\[\033[01;34;34m\]' BLU='\[\033[00;34;34m\]' YEL='\[\033[00;33;33m\]' WHT='\[\033[01;37;37m\]' PRPL='\[\033[00;34;35m\]' RED='\[\033[01;31;31m\]' NORM='\[\033[01;00;0m\]' CYAN='\[\033[00;31;36m\]' case "$TERM" in xterm | xterm-color | xterm-debian | rxvt) # nei terminali grafici (xterm) imposta anche il titolo della finestra e dell'icona PS1="\[\033]1;\u: \w\007\033]2;\u: \w\007\033[01;37m\]$NORM\u@\h: $WHT\w $HBLU<\t>$NORM\n$CYAN"'\$'"$NORM " ;; linux) # in console PS1="$NORM\u@\h: $WHT\w $HBLU<\t>$NORM\n$CYAN"'\$'"$NORM " ;; *) # altrimenti un prompt semplice PS1='\u@\h: \w \$ ' ;; esac export PS1
Come posso disabilitare una console virtuale?
---------
Apri il file /etc/inittab
, ci sono delle righe come queste:
1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6
corrispondenti alle sei console virtuali. Commenta (apponendo # all'inizio della riga) quelle che non ti interessano.
Gli apici retroversi (`), a cosa servono esattamente?
---------
Esattamente la shell effettua un'espansione, eseguendo il comando all'interno degli apici inversi e catturandone lo standard output. Quest'ultimo verrà poi opportunamente sostituito.
Lo stesso risultato si può ottenere utilizzando le due forme:
`nome_comando` e $(nome_comando)
Alcuni esempi:
#
ls -l `which man`
[Invio]
espansione: il comando which man ha come standard output /usr/bin/man
, la shell eseguirà quindi ls -l /usr/bin/man
#
BLA= `cat /etc/inetd.conf`
[Invio]
#
echo $BLA
[Invio]
nella variabile BLA viene registrato tutto l'output del comando cat /etc/inetd.conf, infatti con echo $BLA possiamo rivedere tutto il contenuto del file.
#
kill -1 `pidof inetd`
[Invio]
il comando pidof inetd restituisce in standard output l'attuale pid di inetd, quindi la shell eseguirà kill -1 63, per esempio.
Come si utilizza lo storico dei comandi?
---------
si da il comando:
#
history
[Invio]
e viene visualizzata una lista di comandi eseguiti con il numero corrispondente. Per eseguire uno di questi comandi si utilizza il punto esclamativo (!)davanti al numero del comando da rieseguire:
#
!267
[Invio]
Per richiamare dallo storico tutti i comandi che iniziano con una stringa si utilizza:
#
!stringa
[Invio]
Da quando ho installato Linux la prima console virtuale (quella che si attiva premendo Alt+F1) si riempie di messaggi che finiscono su /dev/console
, lasciando comunque la possibilità di fare login.
Come posso mandare questi messaggi su un'altra console virtuale?
---------
Basta aggiungere nel file /etc/lilo.conf
la riga:
append="console=tty6"
nella sezione image.
Esempio:
image=/boot/vmlinuz-2.0.36-1 label=linux root=/dev/hda2 append="console=tty6" read-only
Poi devi dare il comando:
#
/sbin/lilo
[Invio]
per rendere effettive le modifiche.
Come si fa a cambiare la modalità grafica della console? (adesso ho 80x25 ma vorrei aumentare il numero delle righe)
---------
se usi LILO come gestore degli avvii, puoi usare la direttiva 'vga' con vga=extended e avrai 80x50
(altri valori sono 'normal','ask','number')
Altrimenti puoi usare vidmode (rdev) per impostare la modalità video.
Quella predefinita è impostata attraverso la variabile SVGA_MODE nel Makefile del kernel.
Quando da utente root provo a passare ad un utente con il comando 'su utente', mi viene restituito il seguente messaggio:
#
su pinco
[Invio]
shell-init: could not get current directory: getcwd: cannot access parent directories
---------
Se esegui:
$
su - nome_utente
[Invio]
carichi anche l'ambiente dell'utente.
Dalla console, se lancio l'utilità setup i riquadri di contorno delle finestre appaiono con a accentate e altri caratteri non congrui.
---------
Prova a scrivere, sempre da console:
#
export TERM=vt100
[Invio]