Наиболее переносимым способом будет использование set
и globstar для всех оболочек, совместимых с POSIX -. Это было показано в ответе Жиля на родственный вопрос. Я немного адаптировал метод в функцию:
rm -rf empty_dir/
mkdir empty_dir/
pwd
cd empty_dir/
pwd
dir_empty(){
# https://stackoverflow.com/a/9911082/3701431
if [ -n "$ZSH_VERSION" ]; then
# https://unix.stackexchange.com/a/310553/85039
setopt +o nomatch
fi
set -- *.*
echo "$@"
for i; do
[ "$i" = "." ] || [ "$i" = ".." ] && continue
[ -e "$i" ] && echo "Not empty" && return 1
done
echo "Empty" && return 0
}
dir_empty
touch '*'
dir_empty
Большая проблема с zsh
заключается в том, что в то время как ksh
и bash
ведут себя более или менее последовательно -, то есть когда мы делаем set *.*
, у вас будет 3 позиционных параметра *...
в действительно пустом виде. каталог -в zsh
вы получите *.*
в качестве позиционных параметров. К счастью, по крайней мере for i ; do... done
для перебора позиционных параметров работает стабильно. Остальное — просто итерация и проверка существования имени файла, при этом .
и ..
пропускаются.
Проблема заключалась в моем файле cups.conf. Так как я был в основном в офисе, сервер чашек офиса был настроен Я редактировал файл /etc/cups/client.conf
с помощью
Servername localhost:631
и принтер появился везде в системе.