Сценарий оболочки, передающий файл с датой от (1 ноября) до (1 декабря) по имени

Согласно стандарту ECMA -48,[— это 7 -битов, эквивалентных 8 -битам управляющего символа C1 CSI. Ваш эмулятор терминала из-за большой исторической инерции ведет себя так, как будто он не чист на 8 -бит.

Любая входная управляющая последовательность терминала видаCSIPs1;Ps2~является управляющей последовательностью DECFNK.(Ps2 и, следовательно, ;являются необязательными, по умолчанию в обычном стиле ECMA -48 равным 1, если они отсутствуют. )Это де-факто стандартная последовательность управления, созданная в терминалах DEC и скопированная другими терминалами и эмуляторами терминалов на протяжении многих лет.

В VT510 Video Terminal Programmer Information управляющая последовательность DECFNK описана на страницах с 5—53 по 5—53, хотя и не с именами ключей IBM PC, к которым вы привыкли. Это клавиша Пред. Экран . Он находится в верхней группе области клавиатуры редактирования этой клавиатуры VT320 :

.

See the Prev Screen on this VT320 keyboard

Из этого вы можете догадаться, что такое клавиатура IBM PC Model M, но, продолжая обращаться к документации, вы также найдетеCSI5~в таблице 8–3 на странице 8–7 VT520/VT525 Video. Информация о программаторе терминала . Эта таблица подтверждает, что она выгравирована Page Up на клавиатуре в стиле IBM PC.

Используйте подобный справочный документ для поиска последовательностей управления с клавиатуры.

Обратите внимание, что это относится к терминалам, использующим протоколы DEC VT. Не все терминалы и эмуляторы терминалов работают. Если вы встретите последовательность управления вводом, начинающуюся с CSIили SS3, которая не находится в формеCSIPs1;Ps2 ~, она обычно будет (, если это не настоящий ECMA -48 управляющая последовательность )должна использовать другой широко используемый протокол, который первоначально был принят для клавиш клавиатуры IBM PC на консоли SCO Xenix.

Документация DEC VT документирует некоторые из этих управляющих последовательностей как режим совместимости «SCO Console». Они полностью задокументированы на странице руководства клавиатуры (HW)в SCO Unix System Administrators Reference .

Вы обнаружите, что они используются, например, во встроенном -эмуляторе терминала ядра FreeBSD для функциональных клавиш F13 и выше. (Он использует управляющие последовательности DEC VT для F1 по F12 . Существуют последовательности управления DEC VT для функциональных клавиш до F22 . В консоли SCO Xenix задокументированы последовательности управления функциональными клавишами с F1 по F48 ,отражая общее соглашение IBM PC об использовании клавиш-модификаторов для четырехкратного увеличения количества функциональных клавиш.)

Дополнительная литература

0
08.04.2020, 18:21
2 ответа

команда даты — это то, что вам нужно

$ date -d 1/25/2020 +%Y%m%d
20200125

-d mm/dd/yyyy-дать команде дату ввода.

+%Y%m%d-что вы хотите получить на выходе.

  • %Y-год четырьмя цифрами
  • %m-месяц двумя цифрами
  • %d-число месяца двумя цифрами.
0
28.04.2021, 23:18

Если я вас правильно понял:

# Here you set the range of dates
from="20200121" 
to="20200125"
for f in *.xls; do 
  [[ $(date -d "${f:6:8}" +%s) -ge $(date -d "$from" +%s) ]] &&
  [[ $(date -d "${f:6:8}" +%s) -le $(date -d "$to" +%s) ]] &&
  echo "$f in range" || # Here your actions
  echo "$f not in range" 
done

Выход:

Meter_20200120100846.xls not in range
Meter_20200121100846.xls in range
Meter_20200122100846.xls in range
Meter_20200123100846.xls in range
Meter_20200124100846.xls in range
Meter_20200125100846.xls in range
1
28.04.2021, 23:18

Теги

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