Я часто чувствую, что хочу создавать файлы и папки с датой.

Например, я хотел бы иметь возможность создать папку с меткой даты yymmdd под названием «160408-projectA», набрав:

mkdir <ctrl-;>-projectA

Я пытался использовать bindkey -cs '^;' '`date +%y%m%d | perl -pe chomp`'

... но там написано "плохой ключ spec ^;" Даже при переключении на другую клавишу, например ^ o, он выдает ошибку «160408: Команда не найдена».

Это возможно с tcsh?

1 ответ1

0

Я подозреваю, что Ctrl - ; не возможно Прежде чем углубляться в причины, позвольте мне обсудить, что возможно.

bindkey -s '^;' '`date +%y%m%d | perl -pe chomp`'

Просто уберите "c" из вашей попытки использовать Ctrl - O, и все работает отлично.

Команда tcsh вероятно, не поддерживает Ctrl - ; Это очень разумный дизайн, потому что tcsh предназначен для работы с традиционным терминалом Unix (или некоторым программным обеспечением, которое ведет себя аналогично), а традиционные терминалы Unix не поддерживают Ctrl - ;,

Итак, почему терминалы Unix не поддерживают Ctrl - ;?

Главной целью всех этих последовательностей Ctrl было обеспечение простого способа ввода / представления первых 32 символов ASCII, поскольку эти символы не имеют легко вводимых символов. Прямой эквивалент Ctrl - ; не так уж сложно набирать текст без необходимости использовать последовательность Ctrl , поэтому обычно не поддерживается специальный символ Ctrl (например, Ctrl - ;).

Я уточню. Во-первых, я отмечу, что большая часть этого ответа была сделана со ссылкой на некоторую информацию, которую я задокументировал, о последовательностях Ctrl , на моем веб-сайте по адресу ] [CyberPillar] [: последовательности клавиш Ctrl.

Одно из правил для символов Ctrl заключается в том, что если вы удерживаете нажатой клавишу Ctrl и нажимаете символ со значением ASCII от 63 до 95, в результате вы получите символ, который на 64 символа меньше значения ASCII, чем нажатый символ. (Да, 64 вычитается из 63, если применимо. Это будет обсуждаться позже.)

Другое правило заключается в том, что если вы удерживаете клавишу Ctrl и нажимаете символ со значением ASCII от 96 до 122, в результате вы получите символ, который на 96 меньше, чем введенный вами символ. В результате Ctrl - Shift - A (заглавная буква) и Ctrl - a (строчная буква) будут заканчиваться одним и тем же символом. Вот почему, если вы нажмете Ctrl- c, вы можете увидеть, что Ctrl- C отозвался обратно. Терминал преобразует ASCII 3 в строку, представляющую Ctrl- C, при подготовке выходного сообщения, игнорируя тот факт, что вы нажали Ctrl- c, чтобы сгенерировать ASCII 3.

; (Точка с запятой) представляет собой ASCII 59, который не является ASCII 64–95 или ASCII 96–122. Следовательно, только что указанные правила (охватывающие ASCII 63–122) не предоставляют какой-либо общей интерпретации для ASCII 59 (для охвата Ctrl - ;).

Одно значение, которое выглядит как исключение, является обычно поддерживаемым правилом, которое для Ctrl - ? , Если Ctrl - ; если бы имелась общая интерпретация, то общая интерпретация, вероятно, будет следовать той же схеме, что и Ctrl - ? , ? символ ASCII 63. Таким образом, вычитая 64 из 63 дает -1, что в основном равняется 127 с условием недостаточного потока, которое можно игнорировать. Результатом является то, что Ctrl - ? комбинация нажатий клавиш в итоге добавляет 64, поэтому 63 + 64 = 127. ASCII 127 часто соответствует клавише Delete , которую может быть сложно представить, так как Delete имеет общее специальное поведение (то есть удаление текста). Таким образом, ASCII 127 часто может существенно выиграть, имея общепринятую последовательность Ctrl. Таким образом, человек может относительно легко набрать код ASCII 127, используя последовательность клавиш.

Следуя этой схеме (добавив 64), Ctrl - ; приведет к ASCII 123, который является левой фигурной скобкой (" { "). Люди не поддержали Ctrl - ; как общий стандартный способ ввода {, поскольку { имеет свой собственный относительно простой способ ввода его с клавиатуры (путем нажатия Shift - [).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .