Где функция дана, “которые запрашивают” определенный?

На основе manatworkблестящий мало "или ничто" не взламывает в другом вопросе, я предлагаю это, которое добавляет способность получить два цвета подсветки:

 $ myprogram | \
   GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
   GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'

Таким образом, Вы работаете grep по выводу дважды, с другим GREP_COLORS переменная среды каждый раз.

'01; 32' значения означают, что "полужирный зеленый" и другой означают "полужирный красный". См. статью Wikipedia о кодах ANSI для большего количества идей.

Увы, это требует GNU grep версия 2.5.3 или выше. Более старые версии GNU grep поддерживали другой механизм окраски, но те версии имеют ошибку, которая препятствует тому, чтобы Вы использовали функцию в конвейере несколько раз. BSD grep эмулирует более старый GNU grep окраска механизма, и это будет работать дважды в конвейере, но это вопит о "пустом подвыражении" из-за manatwork взлом.

Можно удалить обратные косые черты в конце первых двух строк для создания всего этого одной строкой. Я только что разделил его здесь для ясности и играть по правилам с форматом страниц SE.

3
08.11.2013, 00:14
2 ответа

Команда, которую Вы получаете, когда Вы работали which функция, вызванная prompt. Вывод является своим определением.

Вы видите, что он использует эту команду также:

$ declare -f prompt

Где является подсказка () функцией?

Это немного более хитро. Необходимо будет обратиться к использованию инструмента такой как grep найти строку"prompt ()". Обычные места для взгляда следующие:

удар

(N.B. не используйте which в ударе использовать type вместо этого)

$ grep -R "prompt ()" .bashrc .bash_profile /etc/bashrc /etc/profile*

zsh

$ grep -R "prompt ()" <files>

Из страницы справочника это файлы это zsh использует:

   $ZDOTDIR/.zshenv
   $ZDOTDIR/.zprofile
   $ZDOTDIR/.zshrc
   $ZDOTDIR/.zlogin
   $ZDOTDIR/.zlogout
   ${TMPPREFIX}*   (default is /tmp/zsh*)
   /etc/zshenv
   /etc/zprofile
   /etc/zshrc
   /etc/zlogin
   /etc/zlogout    (installation-specific - /etc is the default)

Это должно быть в одном из тех местоположений. Если это не обнаружится ни в одном из тех мест затем, то необходимо будет развернуть поиск. Я предложил бы искать просто строку"prompt".

3
27.01.2020, 21:20
  • 1
    Достаточно странно поведение вывода функционального определения при вызове с именем функции характерно для type вместо which. Я предполагаю, что ArchLinux переопределяет which так или иначе. Я не знал бы. Но я предполагаю, что настоящая проблема OP определяет, который файл определяет prompt функция. –  Joseph R. 08.11.2013, 00:09
  • 2
    Это действительно хорошо знать, поблагодарить Вас! Моя immidiate проблема не решена этим ("подсказка, функция оболочки"), но я изучил что-то сегодня, что =) –  Jens 08.11.2013, 00:12
  • 3
    @Jens - извините, я не считал целый Q 8-). Я включил раздел, как найти подсказку (). –  slm♦ 08.11.2013, 00:13
  • 4
    В zsh (в противоположность другим оболочкам, таким как Bourne, тире, удар или ksh), which встроенное и может использоваться без раскаяния. –  Gilles 'SO- stop being evil' 08.11.2013, 00:43
  • 5
    @JosephR. Действительно, нет ничего характерного для Arch здесь. –  Gilles 'SO- stop being evil' 08.11.2013, 00:50

prompt отдельно не полезно: это вызывает другую вызванную функцию set_prompt, Вам нужен этот также (и все его зависимости).

Первой вещью искать была бы автоматически загруженная функция.

print -rl $fpath/prompt(N)

Запрет этого, поиска в Ваших файлах инициализации и в файлах на функциональной загрузке соединяет каналом для функционального определения.

grep -E '^ *function +prompt($|[^0-9A-Z_a-z])|^ *prompt *\(' ~/.z* /etc/zsh/*(.N) /etc/z*(.N) $fpath/*(.)

prompt функция определяется …/Prompts/promptinit: это - часть быстрого компонента тем. В дополнение к promptinit, Вам будет нужно prompt_*_setup файл для Вашей выбранной быстрой темы. Загляните Ваш ~/.zshrc для Вашего выбора быстрой темы — вызов к prompt функция.

1
27.01.2020, 21:20

Теги

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