Согласно dlocate
, clear_console
является частью (пакета Debian )bash. Он не является частью восходящихbash
источников. Журнал изменений пакета сообщает вам, когда и откуда он появился:
-- Matthias Klose Thu, 23 Mar 2006 01:16:22 +0100 bash (3.1-3) unstable; urgency=low ... Merge from Ubuntu: * clear_console: New helper program to clear the console, including the scrollback buffer. * /etc/skel/.bash_logout: Install it again and use clear_console. Ubuntu #29405. Closes: #331504.
Упомянутые отчеты об ошибках -указывают причину, по которой они были добавлены:
When logging out of a F1-F6 terminal, all of your existing output of activies are left on the screen even when the next login screen appears. The screen should be cleared before the new login appears, so private output won't be viewed by other users.
It would be nice if bash would provide a default.bash_logout in /etc/skel for users to use by default to clean up the screen when login through console this is common request, specially in multi-user environments where people don't want others to see what they were working on.
Кстати, это упоминалось вместе с ncurses здесь:
Первая проблема была устранена путем адаптации функцииxterm
патча #107 в 1999 году (для консоли Linux ), а вторая никуда не исчезла из-за несовместимости лицензий.
Использование failglob
— это еще один вариант, когда сбой расширения глобуса приведет к сбою всей команды (вообще ничего не выполняется ). В сочетании с оператором командной оболочки no -op:
(двоеточие )это идеальный способ проверить результаты glob (успешно или нет ).
shopt -s failglob
: website-db-backup*
# The following code is purely indicative
if [ $? -eq 0 ]; then
echo "Success, website-db-backup* exists"
else
echo "Failed, nothing matches website-db-backup*"
fi
Это имеет преимущество перед ответом Хауке Лагинга в том, что он не затирает существующие позиционные параметры($1
и т. д. ), хотя вы можете обойти это, используя функцию:
shopt -s nullglob
argc() {
return $#
}
argc website-db-backup*
# Now check $? the same way as above
# $1, $2,... remain untouched
Массив Bash также является хорошим вариантом:
shopt -s nullglob
FILES=(website-db-backup*)
echo "${#FILES[@]}" # gives number of matched files
Это ИМО самое простое и элегантное решение.