Выделение текста в ударе при использовании обратного поиска истории использование Ctrl-R

Не очень симпатичный, но за исключением парсинга sudo -l как Вы делаете, я не знаю альтернативу: просто выполните свою команду с -n переключатель:

-n (неинтерактивная) опция препятствует тому, чтобы sudo предложил пользователю пароль. Если пароль будет требоваться, чтобы команда работала, sudo отобразит сообщение об ошибке и выход.

Пример:

me$ sudo -l 
User me may run the following commands on this host:
    (ALL) NOPASSWD: /usr/bin/vim
    (ALL) /usr/bin/nano
me$ sudo -n nano /etc/hosts
sudo: a password is required
me$ echo $?
1
me$ sudo -n vim /etc/hosts
# :q
me$ echo $?
0

Проблема с этим состоит в том, что Вы не можете сказать непосредственно из кода выхода если sudo отказавший, потому что это потребовало пароля, или если команда Вы работали отказавший. Таким образом, необходимо будет проанализировать вывод. (К счастью, сообщение об ошибке статично, так, чтобы не должно было быть слишком твердым. Остерегайтесь локализации все же.)

6
22.05.2014, 03:05
2 ответа
  1. readline[1174542] (который [1174543]bash[1174544] использует для своего строчного редактора) не имеет такой возможности.

  2. zsh[1174546] делает это по умолчанию, однако, по умолчанию. По умолчанию, он выделяет искомый текст с помощью подчёркивания, но вы можете это изменить. Например:

  3. или:

([1174547]zle[1174548] - это [1174549]zsh[1174550] строчный редактор, как [1174551]readline[1174552] - это [1174553]bash[1174554]).[1174186].
4
27.01.2020, 20:29

Итак, начиная с Bash 5.1 и Readline 8.1, вы действительно можете это сделать.

Изhttps://lwn.net/Articles/839212/:

The most visible new feature is in Readline: the addition of `faces', which highlights the text between the point and mark (the region, so this is also called the 'active region'). This was added to show visibly the text inserted by bracketed paste, and also marks the text found by incremental and non-incremental history searches. Faces are currently tied to bracketed paste and are enabled and disabled along with bracketed paste mode. Bracketed paste mode is enabled by default.

https://www.reddit.com/r/archlinux/comments/ka5xek/latest_readline_upgrade_causes_it_to_highlight

Источник изображения:https://www.reddit.com/r/archlinux/comments/ka5xek/

Так как он включен по умолчанию, вы должны добавить следующее в ваш inputrc, чтобы отключить его:

set enable-bracketed-paste off
0
14.04.2021, 19:27

Теги

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