Aspetti Avanzati
Non sono conoscenze necessarie in un primo apprendimento dell'operatività Linux, ma sono utili apprendimenti successivi per migliorare le prestazioni di utilizzo.
Linea di Comando
Durante l'editazione di un comando vi sono una serie di caratteri di controllo che si possono usare per avere più produttività.
Comando | Effetto |
---|---|
Ctrl-A | All'inizio del comando |
Ctrl-E | Alla fine del comando |
Ctrl-U | Cancella intera linea (salva nel buffer) |
Ctrl-W | Cancella parola precedente (salva nel buffer) |
Ctrl-Y | Paste del buffer |
Ctrl-B | Indietro di un carattere |
Ctrl-F | Avanti di un carattere |
Ctrl-P | Comando precedente |
Ctrl-N | Comando seguente |
Ctrl-T | Inverte i due caratteri precedenti |
Ctrl-O | Esegue la linea di comando |
Ctrl-R stringa | Ricerca all'indietro nella storia per la stringa |
Ctrl-L | Pulisce il video |
Ctrl-X Ctrl-E | Inserisce la linea di comando in una sessione di editor, e lo esegue quando l'editor termina |
Quale editor venga usato è dato dal valore della variabile d'ambiente EDITOR
.
tput
Invia una sequenza di controllo al terminale, come specificata in terminfo
(cf. oltre).
Comando tput | Effetto |
---|---|
tputcolors | ritorna il numero di colori supportati |
tput lines | ritorna il numero di linee delterminale corrente |
tput cols | ritorna il numero di colonne del terminale corrente |
tput sc | salva la posizione del cursore |
tput rc | restore della posizione del cursore |
tput home | cursore in alto a sinistra (0, 0) |
tput cup x y | cursore a posizione (x, y) |
tput cud1 | cursore giù si una linea |
tput cup1 | cursore su di una linea |
tput civis | cursore invisibile |
tput cnorm | cursore normale |
tput bold | testo in bold |
tput smul | inizio testo sottolineato |
tput rmul | fine testo sottolineato |
tput rev | testo a colori invertiti |
tput blink | testo lampeggiante |
tput invis | testo invisibile |
tput smso | testo a modalità standout |
tput rmso | fine modalità standout |
tput sgr0 | toglie tutti gli attributi al testo |
tput setaf valore | colore di foreground |
tput setab valore | valore di background |
tput smcap | salva l'intero schermo |
tput rmcap | restore dello schermo |
tput el | pulisce fino a fine linea |
tput el1 | pulisce fino a inizio linea |
tput ed | pulisce dal cursore a fine video |
tput clear | pulisce tutto il video |
I valori per i colori sono:
Valore | Colore |
---|---|
0 | nero |
1 | rosso |
2 | verde |
3 | giallo |
4 | blu |
5 | magenta |
6 | ciano |
7 | bianco |
8 | non usato |
9 | restore dei colori originali |
Non tutti i terminali possiedono tutte le capabilities.
Il seguente programma testa l'acquisizione dinamica delle dimensioni del terminale corrente.
Fa uso del fatto che X Window invia il segnale WINCH al terminale al variare delle proprietà della finestra del terminale.
(size.sh)
#!/bin/bash
# term_size2 - Dynamically display terminal window size
redraw() {
clear
echo "Width = $(tput cols) Height = $(tput lines)"
}
trap redraw WINCH
redraw
while true; do
:
done
Il prossimo programma testa vari attributi del testo.
(tput.sh)
!/bin/bash
# tput_characters - Test various character attributes
clear
echo "tput character test"
echo "==================="
echo
tput bold; echo "This text has the bold attribute."; tput sgr0
tput smul; echo "This text is underlined (smul)."; tput rmul
# Most terminal emulators do not support blinking text (though xterm
# does) because blinking text is considered to be in bad taste ;-)
tput blink; echo "This text is blinking (blink)."; tput sgr0
tput rev; echo "This text has the reverse attribute"; tput sgr0
# Standout mode is reverse on many terminals, bold on others.
tput smso; echo "This text is in standout mode (smso)."; tput rmso
tput sgr0
echo
Il prossimo programma prova varie combinazioni di colori.
(colors.sh)
#!/bin/bash
# tput_colors - Demonstrate color combinations.
for fg_color in {0..7}; do
set_foreground=$(tput setaf $fg_color)
for bg_color in {0..7}; do
set_background=$(tput setab $bg_color)
echo -n $set_background$set_foreground
printf ' F:%s B:%s ' $fg_color $bg_color
done
echo $(tput sgr0)
done
L'ultimo programma illustra la visualizzazione di alcune proprietà del sistema, guidata da menù.
(menu.sh)
#!/bin/bash
# tput_menu: a menu driven system information program
BG_BLUE="$(tput setab 4)"
BG_BLACK="$(tput setab 0)"
FG_GREEN="$(tput setaf 2)"
FG_WHITE="$(tput setaf 7)"
# Save screen
tput smcup
# Display menu until selection == 0
while [[ $REPLY != 0 ]]; do
echo -n ${BG_BLUE}${FG_WHITE}
clear
cat <<- EOF
Please Select:
1. Display Hostname and Uptime
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
EOF
read -p "Enter selection [0-3] > " selection
# Clear area beneath menu
tput cup 10 0
echo -n ${BG_BLACK}${FG_GREEN}
tput ed
tput cup 11 0
# Act on selection
case $selection in
1) echo "Hostname: $HOSTNAME"
uptime
;;
2) df -h
;;
3) if [[ $(id -u) -eq 0 ]]; then
echo "Home Space Utilization (All Users)"
du -sh /home/* 2> /dev/null
else
echo "Home Space Utilization ($USER)"
du -s $HOME/* 2> /dev/null | sort -nr
fi
;;
0) break
;;
*) echo "Invalid entry."
;;
esac
printf "\n\nPress any key to continue."
read -n 1
done
# Restore screen
tput rmcup
echo "Program terminated."
Il seguente comando aggiorna perennemente la data e l'ora ponendole nell'angolo in alto a destra dello schermo.
while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-20));date +'%D %T';tput rc;done &
Colori
Alcuni terminali supportano 256 colori. Si possono ottenere mandando direttamente a terminale le sequenze di escape ANSI.
Il seguente programma prova tutti i colori di foreground e background:
(fbcolors.sh)
#! /bin/bash
for code in {0..255}
do
echo -e "\e[38;05;${code}m $code: Test"
done
for code in {0..255}
do
echo -e "\e[48;05;${code}m $code: Test \e[48;05;0m"
done