Подсветка автозаполнения пути ZSH

Для первой строки ввода вы должны перебрать все поля, чтобы найти поле, равное строке free. Вы должны запомнить этот номер поля, а затем использовать его для вывода только этого поля :

.
awk 'NR==1 { for (i=1;i<=NF;++i) if ($i=="free") { n=i; break }} { print $n }'

NR==1заставляет следующий блок выполняться только для самой первой строки, то есть строки заголовка. Переменная nбудет содержать номер поля free.

Тестирование на vmstat 1 1|tail -2представленных вами данных (, считанных из файла с именем fileздесь):

$ awk 'NR==1 { for (i=1;i<=NF;++i) if ($i=="free") { n=i; break }} { print $n }' file
free
24998752

В моем исходном ответе использовалось FNR, а не NR. К сожалению, awkв SunOS не имеет переменной FNR, но в этом случае можно использовать переменную NR, ничего не меняя.

Также обратите внимание, что вывод vmstatв некоторых системах показывает столбец freeкакfre(OpenBSD, например ). Это означает, что вы можете использовать $i ~ "^fre"вместо $i == "free".

-1
07.05.2020, 08:42
1 ответ

Цветное завершение zsh настроено с помощью list-colorszstyle (подробности см. в info zsh list-colors).

Ваш ~/.zshrcили любой другой файл настройки, который он вызывает, может иметь что-то вроде:

zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

Чтобы это основывалось на содержимом переменной $LS_COLORS(, чтобы вы получали те же цвета в завершениях zsh, что и в выводе GNU ls --color).

$LS_COLORS— это переменная, используемая GNU ls, и обычно устанавливается вызовом чего-то вроде:

eval "$(dircolors --sh ~/.dircolors)"

(может быть раньше в вашем ~/.zshrcили в вашем~/.zprofile).

В

zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

однако $LC_COLORSрасширяется и разделяется на:во время интерпретации ~/.zshrc.

Если вы измените $LS_COLORS, эта команда zstyleне будет запускаться снова автоматически, и если вы снова используете источник ~/.zshrcпосле изменения $LS_COLORS, возможно, команда dircolorsповторно создает $LS_COLORSна основе конфигурации, сохраненной в ~/.dircolors, также будет запущен снова, отменяя ваши изменения.

Итак, вам нужно:

  1. узнать, где list-colorszstyle определен в ваших файлах запуска
  2. , если он основан на $LS_COLORS, узнайте, как этот $LS_COLORSопределяется, и исправьте его. А если нет, настройте этот вызов на zstyle, чтобы он соответствовал вашим цветовым предпочтениям.
1
28.04.2021, 23:18

Теги

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