Приложение: escape-последовательности для других терминалов
Большинство современных терминалов являются производными xterm или rxvt
и поддерживают те же escape-последовательности, которыми мы пользовались раньше. Некоторые фирменные терминалы, идущие вместе с различными версиями Unix, имеют свои собственные escape-последовательности.
IBM aixterm
aixterm понимает escape-последовательности xterm.
SGI wsh, xwsh и winterm
Эти терминалы устанавливают $TERM=iris-ansi и используют escape-последовательности:
Для полного списка escape-последовательностей
xwsh:
man 1G xwsh.
Терминалы Irix также поддерживают последовательности xterm для установки заголовка окна и имени иконки раздельно, но не для установки и того и другого вместе.
Sun cmdtool и shelltool
cmdtool и shelltool устанавливают $TERM=sun-cmd
и используют последовательности:
Это ужасная программа - пользуйтесь чем-нибудь другим.
CDE dtterm
dtterm устанавливает $TERM=dtterm и понимает как последовательности xterm, так и Sun cmdtool
(проверено на Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20).
HPterm
hpterm устанавливает $TERM=hpterm и использует последовательности:
Простая программа на C, вычисляющая длину строки и выводящая ее, выглядит примерно так:
#include <string.h>
int main(int argc, char *argv[])
{
printf("\033&f0k%dD%s", strlen(argv[1]), argv[1]);
printf("\033&f-1k%dD%s", strlen(argv[1]), argv[1]);
return(0);
} |
Можно написать простой скрипт, использующий ${#string}
(zsh, bash, ksh) или ${%string}
(tcsh) для вычисления длины строки. Для zsh:
case $TERM in
hpterm)
str="\e]0;%n@%m: %~\a"
precmd () {print -Pn "\e&f0k${#str}D${str}"}
precmd () {print -Pn "\e&f-1k${#str}D${str}"}
;;
esac |