2 - No hay forma directa de comprobar que un directorio no está vacío, no existe un "-s" para directorios. Sin embargo, hay opciones que podés usar. Para esta clase de dudas te recomiendo el sitio
http://mywiki.wooledge.org/BashFAQ/, que tiene muchas soluciones para problemas como este. El ejemplo que pongo a continuación es del mismo sitio (
http://mywiki.wooledge.org/BashFAQ/004)
Código BASH:
Ver originalcd directorio_donde_vas_a_buscar
# el siguiente comando shopt ('shell option') cambia la forma en que BASH expande los globs:
# - nullglob: si el * no coincide con ningún archivo, desaparece en vez de generar una entrada *
# - dotglob: * no coincide con las entradas '.' y '..' que existen en todo directorio
shopt -s nullglob dotglob
# creamos una matriz donde cada entrada es un archivo o directorio dentro del directorio actual
files=(*)
# en $files tenemos todas las entradas, bastaría con hacer un if que compruebe que ${#files[@]} es mayor que cero
echo "The current directory contains ${#files[@]} things."
También podés simplemente iterar sobre todos los subdirectorios de ~/importante con un código como este:
Código bash:
Ver originalfor DIR in ~/importante; do
if [[ -d $DIR ]]; then
# DIR es un directorio, seguir
else
# DIR no es un directorio, saltear
fi
done
5,21- La forma correcta es
o
Lo que te está fallando es que NO debe haber espacios entre el nombre de la variable y el signo de igual, ni entre el signo de igual y el valor que se quiere asignar a la variable. En tu caso, deberías usar
, siendo en este caso opcionales las comillas en el argumento de
date
13- Si ese es el caso, lo que debes hacer es algo como
tar -zcvf /media/backup/$nombre .
El punto al final es el directorio que querés comprimir, la idea es que uses el nombre del directorio que querés comprimir. Lee el manual de
tar para conocer el orden de los parámetros.
14- Esto lo podés hacer comprobando el código de salida de
tar, o probando si el archivo .tgz existe. En ambos casos usas variantes de
if
17- Cuidado con eso, porque una línea antes estás borrando
$fichero, con lo que el
mv te fallaría siempre. Creo que quisiste decir que sería
$nombre, no
$fichero. En cualquier caso, si arreglas la línea de
tar como te lo sugiero arriba, este
mv es innecesario.
A propósito: no uses sudo en scripts. En vez de eso, asegúrate de que los permisos en los archivos y carpetas sobre los que vas a trabajar son los apropiados para que todo funcione.
Saludos.