script bash e alias
Si possono salvare comandi più o meno complessi come file di testo in /home/nome_utente/bin/nome_del_comando per poterli eseguire semplicemente digitando il nome dato al comando nella konsole/terminale. Basta rendere il file eseguibile (chmod a+x nomefile o tasto destro > proprietà -> eseguibile).
Qui sotto una raccolta di script che ho collezionato nel tempo, un grazie a chi li ha scritti.
Un altro metodo per brevi comandi è di usare un alias in ~/.bashrc nella sezione a posto (o attivare il file .bash_aliases). Si deve riavviare il terminale in modo che legge il file di config cambiato.
alias cdl=”cd $1 && ls -la”
alias elimina=”rm -rfv”
alias dontzap=”xmodmap -e ‘keycode 22 = BackSpace BackSpace Terminate_Server’”
alias avviamodem=”slmodemd -c ITALY –alsa hw:0,6″
alias temp=”cat /proc/acpi/thermal_zone/THRM/temperature”
alias spazio=”du -h ~ | grep ‘[[:digit:]]G\b’|sort -rg”
alias reth=”sudo ifdown eth0 & sleep 3 & sudo ifup eth0″
alias color=”cat /usr/lib/X11/rgb.txt”
alias iberna=”sudo pm-hibernate”
alias sospendi=”sudo pm-suspend”
alias dataora=”sudo ntpd -s -d”
#per archlinux:
alias aggiorna=”sudo pacman -Syu”
alias installa=”sudo pacman -S”
alias cerca=”pacman -Ss”
alias rimouvi=”sudo pacman -R”
Per esempio: salvando il seguento questo qui come “~/bin/minuscolo” converte i nomi di tutti i file della cartelle nella quale viene eseguita in lettere minuscole, solo digitando nel terminale:
minuscolo
#!/bin/bash
#converte file contenute in cartella in minuscolofor FILE in *.*
do
mv “$FILE” `echo “$FILE” | tr A-Z a-z`
done
Questo qui fa il backup copiando solo i file che sono cambiati e quelli nuovi, cancella sul backup anche i file non più presenti in home. Editare i percorsi.
#!/bin/bash
# Questo script fa il backup della home su disco esterno, senza cestino e thumb
#–exclude=ESPRESSIONE esclude cartelle o file con ESPRESSIONE nel nomersync -auv –exclude=.local –exclude=.thumbnails –delete –stats /home/NOME/ /media/USBDISK/NOME
Per dettagli:
man rsync
Testa o croce, per le decisioni importanti:
#!/bin/bash
echo ‘import random; print random.choice(["Testa","Croce"])’ | python
Salvato come cleantrash in /etc/cron.daily elimina dal cestino i file cestinati più di due settimane fa. Editare il percorso e renderlo eseguibile:
#!/bin/bash
# Clean Trash 0.1
#
# Removes old files from the KDE trash folder.
# (c) 2005-2006 Bram SchoenmakersEXPIREDATE=`date -d’14 days ago’ +%Y%m%d`
TRASHDIR=/home/NOME/.local/share/Trash
cd $TRASHDIR/info
for ITEM in *.trashinfo; do
ITEMNAME=`echo “$ITEM” | sed -e ’s/.trashinfo//’`#extract date
TRASHDATE=`grep DeletionDate “$ITEM” |
sed -e ’s/^.*\(….\)-\(..\)-\(..\)T.*$/\1\2\3/’`if [ $TRASHDATE -le $EXPIREDATE ]; then
rm -rf “$TRASHDIR/files/$ITEMNAME”
rm -f “$TRASHDIR/info/$ITEM”
fi
done
Per riunire due immagini, modificare -tile per avere 2×2 o 1×4 e aggiungere $3 $4 ecc.
attacca-immagini img.123.jpg img.456.jpg
#!/bin/bash
#attacco due immagini orizzontalmente
IMG1=$1
IMG2=$2
montage -geometry 100% -tile 2×1 $IMG1 $IMG2 result.jpg
bmp2jpg
#!/bin/sh
#trasforma .bmp in .jpg
for i in *.bmp; do convert $i `basename $i `.jpg; done
dvdrip
#!/bin/bash
#dvd rip to avi file
mencoder dvd://1 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=”1200″ -vop scale -zoom -xy 640 -oac mp3lame -lameopts br=128 -o dvd.avi
m4a2mp3.sh
, trasforma i file di una cartella da m4a in mp3
#!/bin/bash#
# $Id: aac2mp3,v 1.2 2005/08/22 15:32:34 rali Exp $
##
# Convert one or more AAC/M4A files to MP3. Based on a script example
# I found at: http://gimpel.gi.funpic.de/Howtos/convert_aac/index.html
#ME=`basename ${0}`
AAC2WAV=”/usr/bin/mplayer”
WAV2MP3=”/usr/bin/lame”EXT=”m4a”
BITRATE=”192″do_usage() { # explanatory text
echo “usage: ${ME} [-b nnn] [-e ext] [-f] [-c] [-r] [-v] [-h] [file list]”
echo ” Convert music from AAC format to MP3″
echo ” -l /path/app Specify the location of lame(1)”
echo ” -m /path/app Specify the location of mplayer(1)”
echo ” -b nnn bitrate for mp3 encoder to use”
echo ” -e ext Use .ext rather than .m4a extension”
echo ” -f Force overwrite of existing file”
echo ” -c Delete original AAC|M4A file(s)”
echo ” -s Keep intermediate .wav file(s)”
echo ” -v Verbose output”
echo ” -h This information”
exit 0
}do_error() {
echo “$*”
exit 1
}file_overwrite_check() {
if [ "$FORCE" != "yes" ]
then
test -f “${1}” && do_error “${1} already exists.”
else
test -f “${1}” && echo ” ${1} is being overwritten.”
fi
}create_wav() { # use mplayer(1) to convert from AAC to WAV
file_overwrite_check “${2}”test $VERBOSE && echo -n “Creating intermediate WAV file”
${AAC2WAV} -really-quiet -ao pcm “${1}” -ao pcm:file=”${2}”
if [ $? -ne 0 ]
then
echo “”
echo “Conversion to WAV (${AAC2WAV}) failed.”
do_cleanup
do_error “Exiting”
fitest $VERBOSE && echo “. OK”
}create_mp3() { # use lame(1) to convert from WAV to MP3
file_overwrite_check “${2}”test $VERBOSE && echo -n “Creating output MP3 file”
${WAV2MP3} -h -b ${BITRATE} -S “${1}” “${2}”
if [ $? -ne 0 ]
then
echo “”
echo “Conversion to MP3 (${WAV2MP3}) failed.”
do_cleanup
do_error “Exiting”
fitest $VERBOSE && echo “. OK”
}do_cleanup() { # Delete intermediate and (optionally) original file(s)
test $VERBOSE && echo -n “Deleting intermediate file”
test ${SAVEWAV} || rm -f “${2}”
test ${RMM4A} && rm -f “${1}”
test $VERBOSE && echo “. OK”
}do_set_bitrate() {
test $VERBOSE && echo -n “Setting output bitrate to: $1 kbps”
BITRATE=$1
test $VERBOSE && echo “. OK”
}GETOPT=`getopt -o l:m:b:e:cfhrv -n ${ME} — “$@”`
if [ $? -ne 0 ]
then
do_usage
fieval set — “$GETOPT”
while true
do
case “$1″ in
-l) LAME=$2 ; shift ; shift ;;
-m) MPLAYER=$2 ; shift ; shift ;;
-b) do_set_bitrate $2 ; shift ; shift ;;
-e) EXT=$2 ; shift ; shift ;;
-f) FORCE=”yes” ; shift ;;
-c) RMM4A=”yes” ; shift ;;
-s) SAVEWAV=”yes” ; shift ;;
-v) VERBOSE=”yes” ; shift ;;
-h) do_usage ;;
–) shift ; break ;;
*) do_usage ;;
esac
donetest -f $LAME || do_error “$LAME not found. Use \”-l\” switch.”
test -f $MPLAYER || do_error “$MPLAYER not found. Use \”-m\” switch.”if [ $# -eq 0 ]
then # Convert all files in current directory
for IFILE in *.${EXT}
do
if [ "${IFILE}" == "*.${EXT}" ]
then
do_error “No files with extension ${EXT} in this directory.”
fiOUT=`echo “${IFILE}” | sed -e “s/\.${EXT}//g”`
create_wav “${IFILE}” “${OUT}.wav”
create_mp3 “${OUT}.wav” “${OUT}.mp3″
do_cleanup “${IFILE}” “${OUT}.wav”done
else # Convert listed files
for IFILE in “$*”
do
test -f “${IFILE}” || do_error “${IFILE} not found.”OUT=`echo “${IFILE}” | sed -e “s/\.${EXT}//g”`
create_wav “${IFILE}” “${OUT}.wav”
create_mp3 “${OUT}.wav” “${OUT}.mp3″
do_cleanup “${IFILE}” “${OUT}.wav”
done
fi
exit 0
