Название заголовка говорит само за себя: я хотел бы получить эти аккуратные цветные столбцы с выводом чего-то вроде ls -al
, скажем, как в ответе 10basetom на этот вопрос .
8
Название заголовка говорит само за себя: я хотел бы получить эти аккуратные цветные столбцы с выводом чего-то вроде ls -al
, скажем, как в ответе 10basetom на этот вопрос .
sed
илиawk
и вставить escape-последовательность ANSI .Ответы:
Это выполнимо с
awk
. К сожалению, поскольку форматls -l
не определен, невозможно найти решение, которое будет работать в каждой системе, поэтому в некоторых системах потребуется некоторая регулировка того, какой цвет использовать для какого столбца.Прежде всего, мы хотим сохранить оригинальные пробелы, используемые
ls -l
. В противном случае выравнивание столбцов будет неправильным. Мы можем сделать это с помощьюFPAT
опции, благодаря такому ответу :В
awk
, каждый позиционный параметр ($1
,$2
и т. Д.) Относится к одному полю, то есть к одному столбцу в текущей строке. То, что былоFPAT
сделано выше, это переопределение каждого поля, чтобы включить все предыдущие пробелы, поэтому, когда выprint
возвращаете его обратно, он сохраняет пробелы, чтобы столбцы оставались в том же положении.Теперь мы можем просто отредактировать каждое поле, чтобы вставить код цвета , а затем распечатать отредактированный вывод:
Обратите внимание, что каждый столбец сбрасывается обратно по умолчанию (
0
между[
иm
) впоследствии. Если вы хотите, чтобы цвет проходил через несколько столбцов, вы можете пропустить этот код. Лично я предпочитаю указывать каждый столбец независимо.Вы можете определить команду многократного использования в вашем
.bashrc
. Например:Вам может потребоваться перезапустить
bash
сеанс (или запуститьsource ~/.bashrc
), чтобы запустить определение этой функции.Отсюда вы можете просто позвонить
lsc
, чтобы получить желаемый результат:источник
--color=always
. Пока вы не применяете разные цвета к столбцу имени файла ($9
в моем примере), ихawk
следует пропустить.--color=always
- это расширение GNU, поэтому если вы работаете не в системе GNU (например, macOS, другие BSD), вам нужно либо установить версию GNU, либо использовать альтернативную версию .Это напечатает второй столбец
ls -alF
красным цветом, третий - восьмой - синим, а девятый - черным:Это только в качестве примера. Вы можете настроить это по своему усмотрению.
Для тех, кто предпочитает их код в несколько строк:
подробности
tput
утилита для генерации разнообразных управляющих кодов для вашего терминала Например,tput setaf n
задает цвет переднего плана,n
гдеn
может варьироваться от 0 до 7Вы можете прочитать больше о
tput
его цветовых возможностях здесь .В AWK код определяет переменные
black
,red
иblue
которые содержат концевые коды черный, красный и синий, соответственно. Эти коды размещаются в начале любого столбца, который мы хотим раскрасить.Одна хитрость в том, что цветовые коды не сбрасываются самостоятельно. Таким образом, независимо от того, какой последний цвет вы укажете в одной строке, будет, если не указана другая цветовая команда, цветом по умолчанию для следующей строки.
источник
awk
! Я бы посоветовал вам включить шаблон для сохранения выравнивания столбцов :)FPAT
трюк для поддержания правильного расстояния.