Linux HOWTO


Выполнять команду только в том случае, если TERM=my_term_type


Иногда команды нужно выполнять только для некоторых типов терминалов. Сделать это для команды stty несложно, так как она использует оператор переадресации потока < , чтобы определить, для которого терминала выдана команда. Но как быть с псевдонимами или функциями оболочки? вы можете захотеть сделать функцию для команды ls, так чтобы она выдавала распечатку каталогов в цвете только на цветных терминалах или консолях. Для одноцветных терминалов вы хотите использовать функцию с тем же самым именем (но с другим телом функции), которая использует символы как замену цветовым кодам. Где помещать такие определения функций, которые должны быть различными для различных терминалов?

Вы можете поместить их внутри конструкции "if" в файле /etc/profile, который выполняется каждый раз при входе пользователя в систему. Условное выражение "if" определяет некоторые функции и т.д. только в том случае, если терминал имеет определенный тип. Вот пример работы с dircolors :

if [ $TERM = linux ]; then eval `dircolors`; elif [ $TERM = vt220 ]; then ls () { command ls -F $* } declare -xf ls else echo "From /etc/profile: Unknown terminal type $TERM" fi




Начало  Назад  Вперед



Книжный магазин