Я не могу заставить свою терминальную оболочку принимать \ kbd>, когда я набираю ее. Ничего не происходит. Я гуглил, но не видел ничего, что могло бы решить эту проблему. Я понятия не имею, с чего бы мне начать стрелять.
РЕДАКТИРОВАТЬ:
Я могу использовать \ in eclipse, любой текстовый редактор (включая нано или другие инструменты командной строки). Точная команда:
find -type f -exec chmod -x {} \;
Если я скопирую и вставлю эту строку, символ \
исчезнет. Если я попробую набрать его, ничего не произойдет.
Единственное место, где возникает эта проблема - это фактическая командная строка оболочки.
Спасибо.
РЕДАКТИРОВАТЬ ВТОРОЕ:
Кажется, это некоторая путаница. Если я скопирую приведенную выше команду в мою командную строку, БЕЗ НАЖМИТЕ ВВОД (то есть IE не выполняется). Это то, что находится в моей оболочке: 114] символ не появляется. Если я нажимаю клавишу ввода в любое время, когда эта команда была введена в указанных выше обстоятельствах, она НЕВОЗМОЖНА выполнить из-за; не передаваться в команду.
Редактировать 3:
Я использую GNOME 3.4.1.1 в Ubuntu 12.04 LTS
\
избегает любого персонажа, который следует за ним. ;
явно заканчивает команду. \;
означает экранирование ;
и передачу его команде, которую вы вызываете внутри find (все после -exec
. С \ точка с запятой применяется к chmod
, тогда как без \ точка с запятой будет применяться к find
.
Ваш терминал распознает \
. Когда вы набираете его в своем терминале, вы указываете своему терминалу экранировать следующий символ, который вы не предоставляете.
Если вы хотите отобразить \ как персонаж, избегай его. Тип \\
.
Не знаю, является ли это основной причиной в вашем случае, но я могу воспроизвести подобное поведение, введя следующую команду:
stty eof \\
Это можно исправить с помощью:
stty sane
Возможно, вы захотите попробовать последнюю команду, чтобы увидеть, решит ли это вашу проблему.
Я работаю над «MacBook Air» 2015 года с «Parallels 11» и виртуальной машиной «Ubuntu». Моя клавиатура - «уменьшенная» беспроводная сеть Apple. Я выбрал «французский Macintosh» (потому что я французский…!) Для клавиатуры в МЕНЮ, но в терминале Ubuntu изначально я не мог сделать ни «\», ни «|». Поэтому я перехожу к «Paramètres Système», «Saisie de texte» («набор текста»?) И нажимаю кнопку «Paramèt du du clavier» (Параметры клавиатуры) в правом нижнем углу окна. Во втором новом окне я выбираю «Saisie» («Печатать»?), А затем строку «Touche de caractères alternatifs» («Ключ альтернативных символов»?); Теперь, нажав правый конец этой строки, можно сделать выбор между многими специальными клавишами ... В моем случае изначально был определен ключ NO, и я выбрал «Alt Left», чтобы имитировать обычное действие под Mac OS X. Долго объяснять, но быстро и легко сделать! Ги де Пернон
Одна из возможностей заключается в том, что клавиша обратной косой черты привязана к какой-либо команде readline (readline
- это библиотека, которая позволяет редактировать команды оболочки на месте, например, связывать Ctrl kbd> + h kbd> к действию backward-delete-char
).
Чтобы проверить, так ли это, вы можете попробовать запустить подоболочку bash с отключенным редактированием readline
bash --noediting
Если в этой подоболочке работает ключ с обратной косой чертой, то где искать места мошенническое определение связывания клавиш будет /etc/inputrc
для глобальной конфигурации и ~/.inputrc
для конфигурации для каждого пользователя. Вы также можете попробовать распечатать и найти определенные в настоящее время сочетания клавиш из командной строки, используя
bind -P | grep '\\\\'
. Дополнительные обратные слеши необходимы, поскольку буквенная обратная косая черта будет отображаться в конфигурации readline как \\
, каждая из которых нуждается в дальнейший побег в скорлупе. Очевидно, что вы можете сделать это только в подоболочке, если обратная косая черта связана с обычной оболочкой.
К вашему сведению, имеется опция команды bind
для удаления привязки, но не ясно, как ввести аргумент keyseq
, когда он уже связан
-r keyseq Remove the binding for KEYSEQ.
Для получения дополнительной информации см. help bind
] в командной строке bash