Visualizzazione post con etichetta bash. Mostra tutti i post
Visualizzazione post con etichetta bash. Mostra tutti i post

23 gennaio 2011

bash tip: impostare redirezione output dall'interno di uno script

Piccola ma utile tip.
Se si ha per qualche motivo la necessità di impostare la redirezione dell'output di uno script (stdout e/o stderr) senza utilizzare gli operatori per la redirezione (come ben descritto per esempio sul sito dell'ILDP) dall'interno dello script o direttamente dalla linea di comando, ecco una possibile soluzione:


#!/bin/sh

exec > prova.log 2 > &1

echo "queste due linee stampate"
echo "andranno in prova.log"

06 luglio 2009

esempi bash: zenity radiolist e rhythmbox-client


Gli script in bash vanno ben oltre l'idea di semplici sequenze di comandi eseguiti l'uno dopo l'altro.
Si può persino avere GUI, interfacciarsi con altri programmi, mostrare notifiche, barre di scorrimento, finestre di dialogo.
Questo è un esempio di un semplicissimo player che utilizza zenity e rhythmbox-client per controllare un'instanza di rhythmbox.


#!/bin/bash
# Copyright (C) 2009 Lorenzo Sfarra

# Rhythmobx is running?
RHYTHMBOXPID="`pidof rhythmbox`"
if [ "x$RHYTHMBOXPID" == "x" ]; then
# Launch rhythmbox...
rhythmbox &
else
echo "Found a rhythmbox instance with PID: $RHYTHMBOXPID";
fi

RHYTHMBOX="rhythmbox-client --no-start"

# ACTIONS AND INFOS
commands=( Pause Play Next Previous Info Details Close )
actionslist=""
command="zenity --title Player --list --radiolist --column=* --column=Action "

# Add the commands to the list
for act in ${commands[@]}
do
actionslist="$actionslist $act $act"
done
command="$command $actionslist --height 300"


# Infinite loop
while [ 1 ]; do
action="`$command`"
case "$action" in
Pause)
$RHYTHMBOX --pause
;;
Play)
$RHYTHMBOX --play
;;
Next)
$RHYTHMBOX --next
;;
Previous)
$RHYTHMBOX --previous
;;
Info)
# Display track name and track artist
playing="`$RHYTHMBOX --print-playing`"
zenity --info --title "Now playing..." --text "$playing"
;;
Details)
# A detailed list of info about the currently played song
playing="`$RHYTHMBOX --print-playing-format "%tt (%td) from %at (%ay, %ag) by %ta"`"
zenity --info --title "Details about the current track" --text "$playing"
;;
Close)
$RHYTHMBOX --quit
break;
;;
*)
break;
;;
esac
done

#vim: ai ts=2 sw=2 et sts=2


Per vedere il codice formattato e con l'highlight della sintassi, clicca qui.

22 giugno 2009

5 utility e comandi che potresti non conoscere, numero 2

Elencherò alcune utility e comandi più o meno particolari, sarebbe interessante vedere (magari anche scrivendolo nei commenti) chi li conosceva tutti, e se la risposta fosse negativa, quali di questi non conosceva.

  1. iotop: "porting" del comando top per controllare l'uso dell' I/O;
  2. sudo !!: ripetere il comando dato in precedenza, che non era andato a buon fine per mancanza di permessi;
  3. !i: esegui l'ultimo comando che hai usato che comincia con la 'i';
  4. $ </var/log/messages grep foo:mettere il file all'inizio del comando in modo da facilitare la modifica della/e stringa/he da cercare;
  5. STRING="qualcosa";NAIL="cos";echo $STRING | grep -qi $NAIL && echo "Yes, I found it." || echo "no way, there isn't.": controllare se una stringa è all'interno di un'altra (su idea di Andrea Olivato).

10 giugno 2009

15 utility e comandi che potresti non conoscere

Elencherò alcune utility e comandi più o meno particolari, sarebbe interessante vedere (magari anche scrivendolo nei commenti) chi li conosceva tutti, e se la risposta fosse negativa, quali di questi non conosceva.
Cominciamo:
  1. highlight: trasforma il codice sorgente in formato HTML, XHTML, RTF, LaTeX, TeX o XSL-FO evidenziando la sintassi. Supporta oltre 80 linguaggi di programmazione;
  2. trickle: semplice programma per limitare il consumo di banda dei programmi, in userspace;
  3. cpulimit: programma per limitare l'uso della CPU da parte di un processo, espresso in percentuale;
  4. chage: cambia il numero di giorni in cui la password di un utente scade, o la data in cui è stata cambiata l'ultima volta;
  5. mytop: "porting" del comando top, per MySQL;
  6. tload: rappresentazione grafica, nel terminale, del load average del sistema;
  7. sudo fuser -vn tcp : quale processo usa quella porta con protocollo TCP;
  8. sudo nmap -sP 192.168.1.0/24: tutti gli ip di una LAN (specificata dalla classe di indirizzi) attivi;
  9. espeak: l'unica tua possibilità di sentirti dire che sei bello e intelligente: espeak -v it "sei bello e intelligente"!
  10. sloccount: programma per contare le righe di codice;
  11. iptraf: monitorare la LAN graficamente (ncurses), con varie statistiche possibili;
  12. pv: strumento per monitorare il "traffico" dei dati attraverso una pipeline: può essere inserito in qualunque pipeline tra due processi per una indicazione visuale della velocità del trasferimento, tracciare quanto manca alla fine, etc...;
  13. xclip: interfaccia da linea di comando per selezionare testo (e non solo) in X. Al momento soffre purtroppo di un bug;
  14. e2fsck -ccfv: check del disco che utilizza badblocks che trova e ripara (o marca) settori danneggiati;
  15. export HISTIGNORE="comando*"; comando -opzioni dati; export HISTIGNORE="";: non scrivere il comando nella history (utile per comandi che usano dati sensibili).
Potrebbe diventare un appuntamento settimanale o mensile, con altri comandi :)