Intereting Posts
Как использовать команду find для выполнения двух условий в Linux Установка Linux на планшет Помогите мне понять, почему тест $? -eq 0 истинно, даже если я ожидаю, что оно будет ложным Отправка текста из сценария на экран найти с -exec eval $ 0 Добавлена ​​дополнительная группа пользователей, но «группы (1)» не отображаются изменения Grep для строки в первой строке всех файлов в каталоге и потомках Экспортируйте плейлист m3u в каталог, чтобы они отображались в списке воспроизведения Как объединить grep с несколькими аргументами и разными выходными переключателями Как можно упростить настройки макета xkb? Как обновить debian 6.0 в момент CURRENT Удалить из курсора в конец строки на VI пропустить строку, которая не содержит конкретного символа, например .colon Как получить информацию о жестком диске на терминале Linux? Почему несколько консольных консольных консолей доступны / работают одновременно в системах RHEL?

Как получить исходный вывод форматирования команд?

Я хотел бы знать, какие контрольные последовательности отправляются в bash программами для форматирования своих выходов.

Например, если я сброшу man less я могу различить, какие части выделены жирным шрифтом или подчеркнуты.

 DDEESSCCRRIIPPTTIIOONN _L_e_s_s is a program similar to _m_o_r_e (1), but which allows backward move- ment in the file as well as forward movement. 

Но если я отправлю вывод ls -G в файл, нет данных о его цветовом формате.

Я использую Mac OS X.

Используйте script /tmp/output чтобы начать запись в новой оболочке, затем введите свои команды и посмотрите в файле /tmp/output , например, с помощью редактора или cat -vet . Введите exit в оболочку, чтобы выйти из записи.

Вероятно, лучше всего запустить вывод через шестнадцатеричный просмотрщик (например, od , hexdump , xxd ):

 % man less | hexdump -C | head -5 00000000 4c 45 53 53 28 31 29 20 20 20 20 20 20 20 20 20 |LESS(1) | 00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00000040 20 20 20 20 20 20 20 4c 45 53 53 28 31 29 0a 0a | LESS(1)..| 00000050 0a 0a 4e 08 4e 41 08 41 4d 08 4d 45 08 45 0a 20 |..N.NA.AM.ME.E. | % 

Как и тогда, вы можете искать любые непечатаемые символы в ascii(7) .

Что касается «не работает» ерунды, быстрый просмотр руководства ls(1) приводит к:

 % env TERM=xterm-color CLICOLOR_FORCE=1 ls -G | hexdump -C | head -3 00000000 1b 5b 33 34 6d 41 70 70 6c 69 63 61 74 69 6f 6e |.[34mApplication| 00000010 73 1b 5b 6d 1b 5b 6d 0a 1b 5b 33 34 6d 44 65 73 |s.[m.[m..[34mDes| 00000020 6b 74 6f 70 1b 5b 6d 1b 5b 6d 0a 1b 5b 33 34 6d |ktop.[m.[m..[34m| % 

Для ls вы можете сделать

 export CLICOLOR_FORCE=X ls -G | cat -vet 

Большинство основных утилит ведут себя по-разному, когда выводятся на интерактивный терминал. Если они обнаруживают, что вы вывешиваете файл или канал, они не форматируются (это разумно: мы не хотим, чтобы escape-последовательности цветов были обработаны списком файлов со сценарием). Для ls вы можете заставить это:

 CLICOLOR_FORCE=1 ls -G 

(Это для OSX, в Linux это будет ls --color=always .)

Другие инструменты имеют аналогичные ключи (например, grep ).

Может быть, просто:

  $ ls --color=always | od -cAn 

будет достаточно.