Почему терминал Ubuntu не принимает & ldquo; \ & rdquo; персонаж?

Я не могу заставить свою терминальную оболочку принимать \ , когда я набираю ее. Ничего не происходит. Я гуглил, но не видел ничего, что могло бы решить эту проблему. Я понятия не имею, с чего бы мне начать стрелять.

РЕДАКТИРОВАТЬ:

Я могу использовать \ in eclipse, любой текстовый редактор (включая нано или другие инструменты командной строки). Точная команда:

find -type f -exec chmod -x {} \;    

Если я скопирую и вставлю эту строку, символ \ исчезнет. Если я попробую набрать его, ничего не произойдет.

Единственное место, где возникает эта проблема - это фактическая командная строка оболочки.

Спасибо.

РЕДАКТИРОВАТЬ ВТОРОЕ:

Кажется, это некоторая путаница. Если я скопирую приведенную выше команду в мою командную строку, БЕЗ НАЖМИТЕ ВВОД (то есть IE не выполняется). Это то, что находится в моей оболочке: 114] символ не появляется. Если я нажимаю клавишу ввода в любое время, когда эта команда была введена в указанных выше обстоятельствах, она НЕВОЗМОЖНА выполнить из-за; не передаваться в команду.

Редактировать 3:

Я использую GNOME 3.4.1.1 в Ubuntu 12.04 LTS

4
задан 9 September 2013 в 22:23

4 ответа

\ избегает любого персонажа, который следует за ним. ; явно заканчивает команду. \; означает экранирование ; и передачу его команде, которую вы вызываете внутри find (все после -exec. С \ точка с запятой применяется к chmod, тогда как без \ точка с запятой будет применяться к find.

]

Ваш терминал распознает \. Когда вы набираете его в своем терминале, вы указываете своему терминалу экранировать следующий символ, который вы не предоставляете.

Если вы хотите отобразить \ как персонаж, избегай его. Тип \\.

0
ответ дан 9 September 2013 в 22:23

Не знаю, является ли это основной причиной в вашем случае, но я могу воспроизвести подобное поведение, введя следующую команду:

stty eof \\

Это можно исправить с помощью:

stty sane

Возможно, вы захотите попробовать последнюю команду, чтобы увидеть, решит ли это вашу проблему.

0
ответ дан 9 September 2013 в 22:23

Я работаю над «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. Долго объяснять, но быстро и легко сделать! Ги де Пернон

0
ответ дан 9 September 2013 в 22:23

Одна из возможностей заключается в том, что клавиша обратной косой черты привязана к какой-либо команде readline (readline - это библиотека, которая позволяет редактировать команды оболочки на месте, например, связывать Ctrl + h к действию 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

0
ответ дан 9 September 2013 в 22:23

Другие вопросы по тегам:

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