цвета терминала gnome

«Символ за раз» является неправильным термином (как и идея о том, что символьные устройства обязательно не поддерживают поиск и определение). На самом деле, "блочные" (т.е. строго ориентированные на запись, такие как ленточный накопитель*) устройства должны быть символьными устройствами. Такова же идея, что символьное устройство обязательно должно быть недоступным для поиска - драйверы символьных устройств определяют полную структуру file_operations, которая может свободно определять llseek или нет в зависимости от того, поддерживает ли устройство операцию. Символьные устройства, которые большинство людей считают примерами, — это null, urandom, устройства TTY, звуковая карта, мышь и т. д., которые невозможно найти из-за специфики этих устройств, но /dev/vcs, /dev/fb0 и /dev/kmem также являются символьными устройствами, и все они доступны для поиска.

Как я уже упоминал, драйвер символьного устройства определяет структуру file_operations, которая имеет указатели функций для всех операций, которые кто-то может захотеть вызвать с файлом — поиск, чтение, запись, ioctl и т. д. — и каждая из них вызывается один раз, когда соответствующий системный вызов выполняется при открытом файле устройства. И поэтому чтение и запись могут делать со своими аргументами все, что захотят — они могут отказаться принимать запись, которая слишком велика, или писать только то, что подходит; он может прочитать только данные, соответствующие одной записи, а не все запрошенное количество байтов.

Итак, что такое блочное устройство? По сути, блочные устройства представляют собой дисковые накопители. Ни одно другое устройство (кроме виртуальных дисков, таких как ramdisk и loopback) не является блочным устройством.Они интегрированы в систему запросов ввода/вывода, уровень файловой системы, систему буферов/кэшей и систему виртуальной памяти таким образом, что символьные устройства не интегрированы, даже когда вы обращаетесь, например. /dev/sda из пользовательского процесса. Даже «необработанные устройства», упомянутые на этой странице в качестве исключения , являются символьными устройствами.

*Некоторые системы UNIX реализовали так называемый «режим с фиксированными блоками», который позволяет ядру группировать и разделять запросы ввода-вывода, чтобы соответствовать сконфигурированным границам блоков более или менее таким же образом, как это делается для дисковых накопителей. как блочное устройство. Символьное устройство необходимо для «режима переменного блока», который сохраняет границы блока из пользовательской программы, поскольку одиночный вызов write(2) записывает один блок, а одиночный вызов read(2) возвращает один блок. Поскольку переключение режимов теперь реализовано как ioctl, а не как отдельный файл устройства, используется символьное устройство. Ленточные накопители с переменной записью в основном не поддерживают поиск, поскольку поиск включает подсчет количества записей, а не количества байтов, а собственная операция поиска реализована как ioctl.

1
13.04.2017, 15:37
1 ответ

Нет, gnome-terminal не предназначен для того, чтобы вести себя иначе, чем другие, хотя точный оттенок 16 основных цветов несколько отличается во всех эмуляторах терминала. (Обновление основано на комментарии JdeBP ниже: в некоторых палитрах, например Solarized, эти цвета намеренно совершенно разные.)

Вы должны осмотреться в диалоге редактирования gnome-terminal -> Настройки профиля -> Цвета и выбрать схему, которая соответствует вашему вкус.

В escape-последовательности \ e [01; 32m 01 обозначает яркий и / или полужирный шрифт (в эмуляторах терминалов есть путаница), а 32 обозначает зеленый передний план. 38 , с другой стороны, означает передний план эмулятора терминала по умолчанию, который является зеленым, если по умолчанию используется цветовая схема «зеленый на черном», но чаще всего это белый или черный цвет.

Предположим, что ваша оболочка - bash , его приглашение PS1 требуется для включения всех escape-последовательностей между \ [ и \] , вот как bash знает, что их печать не продвигает курсор, и, следовательно, редактирование командной строки не развалится. Предполагая, что они действительно присутствуют парами в PS1 , bash потребляет их и никогда не выводит на терминал, поэтому gnome-terminal не может сделать там что-нибудь неприятное. Возможно, они неправильно сбалансированы в вашем PS1 .

0
28.01.2020, 01:07

Теги

Похожие вопросы