Как мне добавить несколько команд «+» в less из командной строки

Это похоже на состояние гонки: другое приложение может анализировать тот же ключ для переключения Wifi.

Это можно проверить, привязав ваш скрипт к несвязанному ключу: если этот другой ключ заставляет ваш скрипт работать, как ожидалось, значит, у вас есть состояние гонки на XF86WLAN.

4
19.04.2019, 01:21
3 ответа

Я не думаю, что понимаю первую часть вашего вопроса, основываясь на ваших более поздних комментариях. На мой взгляд, использование less + F + / файл журнала шаблона работает и продолжает выделять новые экземпляры шаблона по мере их появления в обновленном файле.

Что касается бонусной части вашего вопроса, вы можете попробовать одну из следующих команд:

less +\&DHCP$'\n' /var/log/syslog

или

less +\&DHCP^M /var/log/syslog

В этой второй команде ^ M генерируется нажатием Ctrl- V , затем Введите . Куда проще просто нажать Enter, когда меньше начинается, хотя, если вы не хотите писать скрипт или что-то в этом роде.

8
27.01.2020, 20:48

Насколько я понимаю, вы хотите прочитать файл / var / log / syslog и увидеть все записи с " DHCP "и продолжайте видеть новые записи по мере их появления. Если это правильно, это можно сделать с помощью tail -f / var / log / syslog | grep DHCP . Если моя интерпретация вашего запроса неверна, в чем я ошибся?

0
27.01.2020, 20:48

И на фронте огромного чрезмерного усложнения: автоматический хвост с изменяемыми условиями поиска через оболочку expect !

#!/usr/bin/env expect
#
# Sticky search wrapper for less; tails the given file, though with
# input of
#   /asdf
# or whatever will search for that new term then re-tail the file.
# Probably needs `less` with (the default) hilight mode enabled.

if {[llength $argv] == 0} {
  puts stderr {Usage: $argv0 [searchterm] file}
  exit 64
} elseif {[llength $argv] == 1} {
  set fname [lindex $argv 0]
  set search ""
} else {
  set fname [lindex $argv 1]
  set search [lindex $argv 0]
}

# FIXME soas to nix any default options (like turning off hilight) and
# on account of LESSOPEN and LESSCLOSE being security risks due to the
# defaults certain vendors set.
foreach ev [list LESS LESSOPEN LESSCLOSE] {
  if {[info exists env($ev)]} {
    unset env($ev)
  }
}

match_max 999
set timeout -1

spawn -noecho less $fname
expect {
  # TODO need better way to detect that less didn't fly...
  -ex "No such file or directory" { exit }
  -re "." { }
  default { exit }
}

if {$search ne ""} {
  send -- "/$search\r"
}
send -raw "F"
interact {
  -echo -re "/(.*)\[\n\r]" {
#   send_user "DBG search $interact_out(1,string)"
    send -raw "\003\r/"
    send -- $interact_out(1,string)
    send -raw "\rF"
  }
}
2
27.01.2020, 20:48

Теги

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