Как в Linux в Shell (на C) написать фразу в конкретном месте экрана?
Например как фразу "Hellow, World" написать в центре экрана?
На языке С?
Заранее спасибо за ответ!
>Как в Linux в Shell (на C) написать фразу в конкретном месте
>экрана?
>Например как фразу "Hellow, World" написать в центре экрана?
>На языке С?
>Заранее спасибо за ответ!Воспользуйтесь esc-последовательностями, см.:
http://subscribe.ru/archive/comp.soft.prog.shellandawk/20030...
http://subscribe.ru/archive/comp.soft.prog.shellandawk/20030...
Кстати. Вспомнил свои давние попытки сделать цвет фона ярко-белым. То бишь не 7-ым цветом, а 15-ым. Так ничего не получилось. Может все-таки можно как-нибудь ?
>Кстати. Вспомнил свои давние попытки сделать цвет фона ярко-белым. То бишь не
>7-ым цветом, а 15-ым. Так ничего не получилось. Может все-таки можно
>как-нибудь ?Ниже фрагмент моих первых "научных" экспериментов (я тогда про curses еще не слышал) под Линукс. Вроде ответ и на твой вопрос тоже.
//================================
#define black 0
#define red 1
#define green 2
#define brown 3
#define blue 4
#define magenta 5
#define cyan 6
#define gray 7
#define ltred 9
#define ltgreen 10
#define yellow 11
#define ltblue 12
#define ltmagenta 13
#define ltcyan 14
#define white 15void gotoxy(int col, int row) {
printf("\x1B[%i;%iH",row,col);
}void clrscr(void) {
puts("\x1B[H\x1B[J");
}void textattr(unsigned char attr) {
if (attr & 8) printf("\x1B[1m");
else printf("\x1B[0m");
printf("\x1B[3%im\x1B[4%im",attr & 7, (attr >> 4) & 7);
}main() {
unsigned char textcolor=white;
unsigned char backcolor=red;
clrscr();
gotoxy(10,10);
textattr(textcolor+16*backcolor);
printf("Hello, world\n");
textattr(gray+black*16);
gotoxy(10,11);
puts("press ENTER");
getchar();
printf("\033c");
}
//===============================
Неа. Он тоже ставит цвет фона 7, хотя задается 15. Тоже происходит со всеми цветами из старшей октавы. Есть подозрение, что при выводе в байт атрибута выполняется "attr &= 0x7F", дабы очистить бит мигания невзирая на выключенное предварительно мигание (теоретически в линухе - включенное 16 цветов фона; реально у адаптера так и есть).
>Неа. Он тоже ставит цвет фона 7, хотя задается 15. Тоже происходит
>со всеми цветами из старшей октавы. Есть подозрение, что при выводе
>в байт атрибута выполняется "attr &= 0x7F", дабы очистить бит мигания
>невзирая на выключенное предварительно мигание (теоретически в линухе - включенное 16
>цветов фона; реально у адаптера так и есть).
Торможу временами :))). Я с чего-то решил что тебя цвет текста интересует :))). Под ДОС я такие фокусы через int 10h проделывал, а под Линукс не знаю, может и есть какие эскейпы - покопаюсь на досуге.
>Кстати. Вспомнил свои давние попытки сделать цвет фона ярко-белым. ТоМожет так ярко будет-
:
#
setcolor black lt_cyan
echo "^[[1m"
banner Hello!
setcolor -n
#
У меня нет утилит setcolor и banner. Но ставить bold ( [1m ) я пробовал - изменяется только цвет символов. В Konsole можно добиться ярких цветов фона пользуя инверсию ( tput rev, теоретически [7m ), но в обычной консоли оно не помогает - все равно цвет 7 вместо 15 получается.
>У меня нет утилит setcolor и banner. Но ставить bold ( [1m
>) я пробовал - изменяется только цвет символов. В Konsole можно
>добиться ярких цветов фона пользуя инверсию ( tput rev, теоретически [7m
>), но в обычной консоли оно не помогает - все равно
>цвет 7 вместо 15 получается.
Да вообщето эти утилиты из SCO
Но чтото подумал в UNIX машинах все утилиты стандартные.