Что такое «зарегистрированный пользователь»?

Публикация желаемого вывода без указания правил/логики, которые необходимо применить для его получения, на самом деле не поможет решить вашу проблему. Кто-то может просто повторить/распечатать вывод без привязки к вводу.Предполагая, что вы хотите, чтобы строки между \begin{code}и \end{code}исключались, попробуйте

sed -n '/\\begin/,/\\end/ {/{code}/!p}' file
code1
  -- comment1
  code1A
  -- comment2
  code1B
codeB

Если вам нужны пустые строки, добавьте /^ *$/pк скрипту sed.

РЕДАКТИРОВАТЬ:Вот так:

$ sed -n '/\\begin/,/\\end/ {/{code}/!p}; /^ *$/p' file
code1
  -- comment1
  code1A

  -- comment2
  code1B

codeB
0
13.01.2021, 13:27
1 ответ

Системы Unix/Linux поддерживают базу данных зарегистрированных в данный момент -пользователей, в файле /var/run/utmp(в некоторых вариантах Unix также есть параллельный файл utmpx, но оба они служат одной и той же цели ). Программа login, которая управляет входом в систему на физической консоли, демон ssh или программы входа в систему с графическим интерфейсом для машин с X-серверами обновляют информацию в этом файле, когда пользователь входит в систему или выходит из нее. Команда whoсчитывает информацию из этой базы данных.

Оболочка, которую вы запускаете с помощью su -, является оболочкой «логина» в том смысле, что она ведет себя так же, как оболочка входа, запущенная программой loginили демоном ssh (, выполняет те же файлы инициализации и т. д., ), но он не записывает логины в файл utmp, поэтому вы не видите эти оболочки в выводе команды who.

С другой стороны, если вы, например. запустите сеанс screen, screenзаписывает запись в файл utmp, и вы можете увидеть сеанс в выводе команды who.

Также в некоторых графических DE каждое новое окно терминала, которое вы открываете, считается новым логином и записывается в utmp, а в других не -в utmpесть только одна основная запись для пользователя, зарегистрирован на весь сеанс DE. Конечно, это зависит от терминального приложения.

2
18.03.2021, 22:36

Теги

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