Utility

Cambia il valore in un file di configurazione

L’assegnazione di una variabile in un file di configurazione viene modificato al volo:

cat test.txt
VAR1=TEST
VAR2=1
VAR3=VALUE

VAR=VAR2
VAL=1
sed  -i "s/^${VAR}=.*/${VAR}=${VAL}/" test.txt

cat test.txt
VAR1=TEST
VAR2=1
VAR3=VALUE

Converte una elenco in una lista con separatore

È possibile trasformare una lista di elementi in una serie di elementi separati da “,” (o altro separatore), racchiudendo eventualmente gli elementi tra apici

$ cat lista_testo.txt
pippo
pluto
paperino

$ awk '{if(NR>1) printf ",";printf "%c%s%c",39,$0,39;}END{print "";}' \
lista_testo.txt
'pippo','pluto','paperino'

Formattazione automatica di una tabella

Incolonnamento di una tabella

$ cat unformatted.txt
pippo pluto paperino
paperino pippo pluto
pippo topolino paperino
paperino topolino pippo
pippo topolino pluto paperino

Formatta automaticamente

$ awk '{for(i=1;i<=NF;i++){M[i]=(length($i)>M[i])?length($i):M[i];}}
  END{printf "awk :{printf \"";for(i=1;M[i]>0;i++){printf "%%-%ss ",M[i]+1} 
      printf "\\n\"";
      for(i=1;M[i]>0;i++){printf ",$%s",i}printf ";}: 
unformatted.txt
\n"
}' 
unformatted.txt
|tr -s ":" "'" | bash
pippo     pluto     paperino
paperino  pippo     pluto
pippo     topolino  paperino
paperino  topolino  pippo
pippo     topolino  pluto     paperino

Valorizzo più variabili dall’output di un comando

$ read A B C < <(echo 1 2 3)
$ echo $A - $B - $C
1 - 2 - 3

Codice ascii di un carattere

Ricava il codice ascii di un carattere

$ X=A
$ ASC=`printf "%d\n" "'$X"`
$ echo $ASC
65

Carattere corrispondente ad un codice ascii

Visualizza il corrispondente carattere

$C=65
$awk -v c=$C 'BEGIN{printf "%c\n",c;}'

Caratteri speciali nei nomi di file

Cancellare un file che si chiama \303\271
Il reale nome del file è dato dai caratteri con codici ascii 303 e 271 in ottale che corrispondono a 195 e 185 in decimale: questa sequenza corrisponde al carattere ù in UTF8

A=`echo "x" | awk '{ printf "%c\n",195;}'`
B=`echo "x" | awk '{ printf "%c\n",185;}'`
rm "$A$B"

Check sul filesystem

Controlla lo spazio libero e in uso nel filesystem corrente (in kbyte)

$ df -k .

In particolare visualizza lo spazio occupato da una cartella

$ du -ks nomecartella

Testi colorati

Settate le variabili d’ambiente:

export ESC="\033"
export F0="${ESC}[0;30m"
export F1="${ESC}[0;31m"
export F2="${ESC}[0;32m"
export F3="${ESC}[0;33m"
export F4="${ESC}[0;34m"
export F5="${ESC}[0;35m"
export F6="${ESC}[0;36m"
export F7="${ESC}[0;37m"

E utilizzare nel seguente modo

printf "${F0}Nero${RESET}\n"
printf "${F1}Rosso${RESET}\n"
printf "${F2}Verde${RESET}\n"
printf "${F3}Giallo${RESET}\n"
printf "${F4}Blu${RESET}\n"
printf "${F5}Magenta${RESET}\n"
printf "${F6}Ciano${RESET}\n"
printf "${F7}Bianco${RESET}\n"

Premi un tasto

Premi un tasto per fare quello che vuoi

function press_a_key
{
  STTY=$(stty -g)
  stty -echo -icanon time 0 min 0
  k=""
  while test ! -n "$k"
  do
    read k
  done
  echo $k
  stty $STTY
}

r=""
while test "$r" != "x"
do
  echo "Premi il tasto 'x' per uscire"
  r=$(press_a_key)
  echo "Hai premuto '$r'"
done