Зачем пара псевдотерминалов?

Ваш код:

awk -F, '{ if ($1 == "201731") { print } }' file.dat

Это почти правильно, за исключением того факта, что $1при чтении с ,в качестве разделителя полей также будет содержать двойные кавычки, присутствующие в данных. Другие попытки аналогичны по своей природе, но я не уверен, что, по вашему мнению, toupper()будет делать с числом.

Вы можете просто использовать $1 ~ /201731/для сопоставления первого поля с регулярным выражением (или $1 ~ /^"201731"$/для полного указания содержимого поля от начала поля до самого конца, чтобы защитить от ложных срабатываний. )или, если вы хотите свериться с фиксированной строкой, а не выполнять сопоставление с регулярным выражением, проверьте поле с \"201731\".

Итак, у вас либо

awk -F ',' '$1 ~ /^"201731"$/' file.in

или

awk -F ',' '$1 == "\"201731\""' file.in
2
12.10.2019, 05:17
1 ответ

To facilitate moving the terminal emulation into userland, while still keeping the TTY subsystem (session management and line discipline) intact, the pseudo terminal or pty was invented.

У парня по имени Линус Акессон есть демистифицированная TTY-страница со всей картинкой. (Я нашел это через Arch Linux wiki ДОБАВЛЕНО :mosvy, кажется, ненавидит это... ).

Несколько дней спустя мне все еще нравится тот ответ, который я привел выше. Даже в википедии есть ссылка. После некоторых обсуждений (см. комментарии, увы )я свободно отредактировал нижеследующее. Различия можно увидеть в кнопке "отредактировано..."..."PTMX" и "TTY Subsystem" являются новыми словами. Хороший чиновник (? )источник:drivers/tty/Kconfig


И «эмуляция терминала в пользовательской области » — это то, что делают xterm (и т. д. ). XTerm, вместе с X и оконным менеджером, должен сделать так, чтобы «bash» работал на Linux VT.

Прямым следствием того, что X заботится обо всем, что находится в пользовательской среде, является :после запуска многих xterm/bash, каждый xterm подключается к pts/0, а каждый bash к pts/1, pts/2,.. Я также могу запустить дочерние xterms/bash изнутри одного с помощью xterm &. Или запустите новый слой оболочки в xterm с помощью bash. В любом случае пользователь вскоре теряет связь с зависимостями ---, поэтому легко с помощью PTY создавать окна с оболочками.

VT (= VC )из "подсистемы TTY" используются более статические , с 64 в качестве (в первую очередь? ), и только 6 настроены после загрузки. С точки зренияgetty/agetty("открывает tty-порт,..." )это может выглядеть иначе.


Вот мои специальные файлы с мажором 5 в/dev:

crw-rw-rw- 1 root tty      5, 0     tty
crw------- 1 root root     5, 1     console
crw-rw-rw- 1 root tty      5, 2     ptmx

Пары? Этот термин, по-видимому, происходит от BSD-стиля PTY, когда каждый новый pty помещался в файл "p" и "s". В UNIX98 _PTY это:

/dev/ptmx :MX как MULTIPLEX(не MASTER X )для концептуальной главной стороны. И для клиентской стороны /dev/pts/1-n. Про /dev/pts/0 сейчас ничего не скажу. Один занятый ГЛАВНЫЙ и много занятых ПОДЧИНЕННЫХ.Это скорее отношение 1 -к -n, чем пара.

Эти три специальных файла символьных устройств с major=5 на самом деле являются специальными специальными файлами . Как файлы они мало что делают. Но за каждым файлом устройства стоит какой-то код, и вот он drivers/tty/*.c. Обработка клавиатуры не имеет большого значения. Это и коммутация ТН, и линейная дисциплина, а может и то и другое одновременно.

Существует каталог /dev/pts/с другим файлом ptmx и всеми основными файлами = 136 подчиненных устройств. Нормальный /dev/ttyNимеет мажор=4.


спин-офф из (удален? )комментарии :Это один из ioctl_consoleзапросов, которые обсуждал другой Q. «tty не является виртуальным терминалом» , говорит С.К. в ioctl VT _GETSTATE...tty не является vt(в последнем комментарии здесь, извините)

   VT_GETSTATE
          Get global vt state info.  argp points to a

              struct vt_stat {
                  unsigned short v_active;  /* active vt */
                  unsigned short v_signal;  /* signal to send */
                  unsigned short v_state;   /* vt bit mask */
              };

          For each vt in use, the corresponding bit in the v_state mem‐
          ber is set.  (Kernels 1.0 through 1.1.92.)

Изconfig UNIX98_PTY(Kconfig в драйверах/tty)

Typical programs for the master side are telnet servers and xterms.

Это процессы bash получают /dev/pts/1 -255, а не xterm. xterm и wm являются посредниками между x и bash. Это совместная работа с самого начала xinit wm xили xinit client -- server display.

0
27.01.2020, 22:24

Теги

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