Я сделал скрипт, который работает следующим образом
bash users.sh -u "user" [-f | -d | -g]
- -f, показывает количество файлов указанного пользовательского каталога.
- -d, показывает количество папок указанного пользовательского каталога.
- -g, показывает группы, к которым принадлежит указанный пользователь.
#!/bin/bash
user="" ;
directory="" ;
while getopts u:fgd options; do
case "$options" in
u)
if grep -q "^$OPTARG" /etc/passwd ; then
user="$OPTARG";
echo "user existe";
else
echo "user no existe"
fi
;;
g)
if [ -n "$user" ] ; then
echo "los grupos del usuario son: ";
groups "$user" ;
else
echo "user missing"
fi
;;
d)
if [ -n "$user" ] ; then
directory=$(grep $user /etc/passwd | cut -d : -f 6);
directory+=/*/;
echo "numero de carpetas";
ls -d $directory | wc -l
else
echo "user missing"
fi
;;
f)
if [ -n "$user" ] ; then
directory=$(grep $user /etc/passwd | cut -d : -f 6);
echo "numero de archivos";
ls -p $directory | grep -v / | wc -l
else
echo "user missing"
fi
;;
*) echo "opcion invalida $options" ;;
esac
done
Дело в том, что мой текущий скрипт "должен" включать пользователя в качестве аргумента. Но я бы этого хотел, если аргумент username отсутствует
bash users.sh -u [-f | -d | -g]
Показывает указанную опцию для каждого пользователя системы вместо определенного пользователя