Вариация на тему ответа Хантера С.Томпсона:
В файле запуска оболочки:
if [ -n "$SSH_CLIENT" ]; then
alias matlab='echo "restricted to local users only, sorry"'
alias firefox='echo "restricted to local users only, sorry"'
fi
Это не мешает никому обходить эти псевдонимы, поэтому вместо этого можно создать сценарий оболочки для каждого ограниченного программного обеспечения.
Например:/usr/local/bin/matlab
:
#!/bin/sh
if [ -n "$SSH_CLIENT" ]; then
echo 'restricted to local users only, sorry' >&2
exit 1
fi
exec /real/path/to/matlab
Это не мешает пользователю сбрасывать свою SSH_CLIENT
переменную окружения или выполнять настоящую matlab
программу напрямую.
Команда, которую я видел, была tput
. Можно было бы использовать его ± как в моем вопросе:
echo -n "$(tput home)"
Но, конечно, этот конкретный пример излишен; расточительно запускать стандартный вывод tput
в качестве аргумента, который echo
будет записывать в свой собственный стандартный вывод. Это может иметь немного больше смысла, если вам нужно сгенерировать строку echo -n "$(tput thing1)some text$(tput thing2)other text
— но, как указывает @icarus в комментарии ниже, это приведет к потере всех приемов синхронизации , о которых tput
знает.
Таким образом, утилиту лучше всего вызывать напрямую всякий раз, когда это целесообразно:
tput clear
tput blink
echo "DANGER WILL ROBINSON"
tput bel
sleep 5
reset # NOTE: this might be symlinked to tput also!
Это не основной/встроенный -инструмент, но он предоставляется как часть ncurses и в результате должен быть широко доступен. Я нашел хорошее введение/обзор , в котором дается некоторая предыстория, а также показаны связанные команды. И этот gist содержит удобный список всех именованных «возможностей», которые могут быть выведены.