Программно обнаружьте управляющий код ANSI, поддерживаемый терминалом

[1173103] Первое препятствие - получение файлов в правильном порядке. Подстановочный шаблон [1173505]SSt12.precip.*.sub.climatology.ctl[1173506] расширяет имена файлов в лексикографическом, а не в числовом порядке, поэтому помещает файлы в порядок 2874, 374, 3764, 6774.

В zsh это легко исправить благодаря [1173507]n

glob классификатору [1173510] ([1173511]SSt12.precip.*.sub.climatology.ctl(n)[1173512]). В других оболочках для этого требуется больше работы. Вы можете извлечь числа и отсортировать их. Вот способ, который работает до тех пор, пока имена ваших файлов не содержат никакой новой строки. Я извлекаю число, удаляя первые два сегмента, разделенных точками, а затем все, кроме первого сегмента, разделенного точками.

1
18.03.2019, 05:58
2 ответа

Вы имеете в виду определенные операции?

Вот пример использования стандартного режима , который на многих терминалах даст сильный видимый результат:

tput smso; echo hello, world; tput rmso

Если вы передадите последовательность, скажем, cat , выделение станет пустой операцией, потому что конвейер не является устройством, которое понимает режим standout:

( tput smso; echo hello, world; tput rmso ) | cat

Интересные характеристические пары можно найти в man 5 terminfo , некоторые из которых следующие:

  • Выдающиеся: smso и rmso
  • Подчеркните: smul и rmul
  • Blink (да!): blink
  • Doublewide: swidm и rwidm
  • Reverse: rev
  • Отменить все: sgr0
3
27.01.2020, 23:17

Фактически можно запросить терминалы DEC (и их клоны и эмуляции, включая xterm) об их возможностях; только не о поддержке отдельной escape-последовательности (или ее полноте). UNIX обычно не использует эту функцию, полагаясь на базы данных termcap / terminfo (которые также документируют причуды).

Для справки, это последовательности DA («Атрибуты устройства», стандарт ANSI) и DECID («Идентифицировать терминал», частный DEC).

2
27.01.2020, 23:17

Теги

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