Telegram Group & Telegram Channel
📌 Рубрика "Надо было знать, но я не знал"

Всегда писал:

grep ... | less

и грустил, потому что grep выводит цветной текст, а в less всё становится монохромным.

Думал, что это less тупой. Оказалось, что не он, а я.

Но почему?

grep, как и многие другие Unix-утилиты (ls, diff, ripgrep и т. д.), проверяет, является ли стандартный вывод (stdout) терминалом и в зависимости от этого включает или выключает цвета.

Это логично: чтобы выделить слово цветом, в терминале нужно добавить специальные управляющие последовательности в начало и в конец. Эти символы интерпретируются терминалом, но не нужны в файле или пайпе.

Такая проверка выполняется с помощью isatty(3):

isatty(STDOUT_FILENO)

Этот функция возвращает 1, если вывод идёт в терминал, и 0, если в файл или пайп. Если isatty возвращает 0, утилита отключает цвет.

Нашёл даже коммит, в котором этот функционал добавили в grep:
🔗 Коммит в grep

Как спастись?

Чтобы grep, ripgrep, ls, diff и другие челы не отключали цвета при передаче вывода в less, нужно явно указать, что цвет всегда должен быть включен:

grep --color=always ... | less

(Вроде как надо еще -R добавлять к less, но у меня и без этого работает 🤔)

При этом опасно добавлять --color=always в алиасы, потому что это может поломать разные скрипты, которые используют grep.
(спасибо @asokol123, теперь я еще знаю, что алиасы не пролезают в скрипты)

Надеюсь, кому-то теперь тоже станет проще жить)

🔗 Обсуждение на SuperUser



group-telegram.com/misha_writes_code/217
Create:
Last Update:

📌 Рубрика "Надо было знать, но я не знал"

Всегда писал:

grep ... | less

и грустил, потому что grep выводит цветной текст, а в less всё становится монохромным.

Думал, что это less тупой. Оказалось, что не он, а я.

Но почему?

grep, как и многие другие Unix-утилиты (ls, diff, ripgrep и т. д.), проверяет, является ли стандартный вывод (stdout) терминалом и в зависимости от этого включает или выключает цвета.

Это логично: чтобы выделить слово цветом, в терминале нужно добавить специальные управляющие последовательности в начало и в конец. Эти символы интерпретируются терминалом, но не нужны в файле или пайпе.

Такая проверка выполняется с помощью isatty(3):

isatty(STDOUT_FILENO)

Этот функция возвращает 1, если вывод идёт в терминал, и 0, если в файл или пайп. Если isatty возвращает 0, утилита отключает цвет.

Нашёл даже коммит, в котором этот функционал добавили в grep:
🔗 Коммит в grep

Как спастись?

Чтобы grep, ripgrep, ls, diff и другие челы не отключали цвета при передаче вывода в less, нужно явно указать, что цвет всегда должен быть включен:

grep --color=always ... | less

(Вроде как надо еще -R добавлять к less, но у меня и без этого работает 🤔)

При этом опасно добавлять --color=always в алиасы, потому что это может поломать разные скрипты, которые используют grep.
(спасибо @asokol123, теперь я еще знаю, что алиасы не пролезают в скрипты)

Надеюсь, кому-то теперь тоже станет проще жить)

🔗 Обсуждение на SuperUser

BY Миша пишет код




Share with your friend now:
group-telegram.com/misha_writes_code/217

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Two days after Russia invaded Ukraine, an account on the Telegram messaging platform posing as President Volodymyr Zelenskiy urged his armed forces to surrender. False news often spreads via public groups, or chats, with potentially fatal effects. At its heart, Telegram is little more than a messaging app like WhatsApp or Signal. But it also offers open channels that enable a single user, or a group of users, to communicate with large numbers in a method similar to a Twitter account. This has proven to be both a blessing and a curse for Telegram and its users, since these channels can be used for both good and ill. Right now, as Wired reports, the app is a key way for Ukrainians to receive updates from the government during the invasion. Telegram boasts 500 million users, who share information individually and in groups in relative security. But Telegram's use as a one-way broadcast channel — which followers can join but not reply to — means content from inauthentic accounts can easily reach large, captive and eager audiences. You may recall that, back when Facebook started changing WhatsApp’s terms of service, a number of news outlets reported on, and even recommended, switching to Telegram. Pavel Durov even said that users should delete WhatsApp “unless you are cool with all of your photos and messages becoming public one day.” But Telegram can’t be described as a more-secure version of WhatsApp.
from jp


Telegram Миша пишет код
FROM American