Diskuse:Bash
Úklid adresářů
Stará verze úklidu adresářů nepracovala korektně se soubory obsahujícími v názvech souborů bílé znaky a byla nahrazena správným řešením s využitím parametru -print0 příkazu find a programu xargs.
#!/bin/bash
#
# 1) cp uklid /etc/init.d
# 2) update-rc.d uklid defaults
#
# nebo
#
# update-rc.d uklid start 93 S .
#
# pokud spustim pouze pri startu systemu (tecka je soucasti syntaxe)
case "$1" in
start)
echo "Starting script uklid "
# uklid pracovniho adresare
# -----------------------------------------------------------
NULL=/home/cepek/.null
for WORK in /home/cepek/work /home/cepek/.tmp
do
if ! test -d $NULL; then mkdir $NULL; fi
touch --date="6 days ago" $NULL/time-stamp
if ! test -d $NULL/`date -I` ; then
mkdir $NULL/`date -I`
fi
if ! test -s $WORK/tmp...; then touch $WORK/tmp...; fi # avoids empty dir
for i in $WORK/*
do
if test "$i" -ot $NULL/time-stamp; then
chmod -R u+w "$i" 2>/dev/null
touch "$i"
mv -v "$i" $NULL/`date -I`
fi
done
rmdir $NULL/`date -I` 2>/dev/null
if ! test -s $WORK/tmp...; then rm -f $WORK/tmp...; fi
touch --date="60 days ago" $NULL/time-stamp
for i in $NULL/*
do
if test "$i" -ot $NULL/time-stamp; then
rm -rf "$i"
fi
done
done
;;
stop)
echo "Stopping script uklid"
;;
*)
echo "Usage: /etc/init.d/uklid {start|stop}"
exit 1
;;
esac
exit 0