Начини плаћања Abuse

Боје Линук терминала

26.09.2021, 22:47

Предност Линук-а је у томе што, по жељи, можете конфигурисати било шта у њему. Ово изражава предност пројективних система у односу на процедуралне. Ово је нека врста конструктора који се састоји од засебних блокова, од којих се сваки може прилагодити по жељи.

Посебно је занимљиво ако не копирате само готова решења, већ покушате да схватите шта и како функционише. Чак и када решавате неозбиљан проблем, научите нешто ново.

Бојење излазних боја

На пример, желели сте да прилагодите боје линук терминала у излазу команде ls .

Из документације за ls можете разумети да се подешавање боја за излаз врши помоћу услужног програма дирцолорс, који или поставља параметре боја из сопствене базе података или их преузима из ~/.dircolors датотеке. Такође је поменуто да се иницијализација употребе боја дешава преко ~/.bashrc , фајла са подешавањима љуске, а сами параметри се дефинишу преко променљиве LC_COLORS .

Следећи скрипт је пронађен у .bashrc :

Његова суштина се своди на проверу присуства услужног програма дирцолорс у систему, додељивање вредности променљивој и, ако је успешно, коришћење опције --color=auto сваки пут када се позове ls .

Када покренете услужни програм дирцолорс, он штампа вредност променљиве LC_COLOR .

Такође је могуће приказати вредност променљиве LC_COLORS у структурираном облику навођењем кључа:

 $ dircolors -p

Пошто је закључак дугачак, нећу га дати.

Ако преусмерите излаз dircolors -p > ~/.dircolors , биће креирана структурирана датотека из које ће бити преузета подешавања боја. Уређивањем ове датотеке постављају се поставке боје за ls излаз.

Постоји наговештај у генерисаној датотеци .dircolors :

Постављањем секвенце одвојене тачком и зарезом, добијамо боју која нам је потребна у Линукс конзоли, у складу са наведеним. Боје Линук терминала су од 30 до 37 за боју фонта и од 40 до 47 за позадину. на пример:

ДИР 01;34 значи да ће имена директоријума бити означена подебљаним и плавим.

Али овај метод производи само осам боја, а савремени емулатори терминала могу да дају најмање 256 боја.

Постоје и други начини за подешавање боје. На пример, вредност ЕКСЕЦ 38;5;208;1 даје наранџасти дебели фонт за извршне датотеке.

Да не бисте ручно пролазили кроз линукс боје, постоји готова табела боја

Заменом 38;5;к у вредност боје - где је к боја из табеле, добијамо тражени резултат. Испада нешто овако:

Како ово функционише? Чињеница је да се подешавање боје излаза информација у емулатору терминала врши помоћу АНСИ излазних кодова. Ово је специфичан низ знакова који се не приказује на екрану, али утиче на излаз. Зове се тако јер почиње са [ - кодом "Есц". Пошто постоји много терминала и емулатора терминала, ови контролни кодови су стандардизовани. Управљање бојама кроз низ од 30 до 37 је ЕЦМА-48 стандард. Информације о томе налазе се у одељку console_codes .

Бојење линије позивнице

Након што смо схватили како да подесимо линук боје путем есц кодова, неће бити тешко преправити и обојити линију за брзу претрагу. ПС1 променљива, која је дефинисана у ~/.bashrc датотеци, одговорна је за њен излаз

У Линук Минт-у, његова скрипта за иницијализацију изгледа овако:

То јест, прво се утврђује да ли је скрипту покренуо роот или обичан корисник. Пошто се у огромној већини случајева јавља друга опција, потребно је да уредите ред после првог 'друго'. Формат стринга се дешифрује у басх документацији, у одељку „Промминг“. Из тога следи да есц секвенца мора да почиње са „[“ и да се завршава са „]“. овако:

  • [[01;32м] - поставља зелену боју;
  • u - приказује корисничко име;
  • h - приказује име хоста;
  • [[00м] - брише инсталиране атрибуте;
  • [[01;34м] - поставља плаву боју;
  • w - приказује назив радног директоријума;
  • Здраво! - пример да било који изведени текст може бити излаз.

Шта још може да се прикаже у линији упита:

  • d - датум, у формату "Среа 28. децембра";
  • A - време у 24-часовном формату;
  • ! - број тренутног тима у историји;
  • - пренети излаз на другу линију;

Хајде да представимо нешто занимљивије:

 PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '

И линија за промпт ће изгледати овако: