Вопрос Почему терминал Ubuntu не принимает символ «\»?


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

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

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

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

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

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

Благодарю.

EDIT TWO:

Кажется, это путаница. Если я скопирую приведенную выше команду в свою командную строку, БЕЗ ПРЕССА ВВЕДИТЕ (I.E не выполняется) Это то, что находится в моей оболочке:

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

Если я затем попытаюсь ввести \ избежать ; символ не появляется. Если я нажимаю кнопку ввода в любое время, пока эта команда была введена в вышеуказанных обстоятельствах, она НЕ ВЫБРАТЬ, из-за; не передается в команду.

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

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


4
2017-09-09 16:51


происхождения


Как насчет текстового редактора? Это нормально работает? - Saurav Kumar
Добро пожаловать в Ask Ubuntu! Что именно вы имеете в виду, «не может заставить терминал принять»? Что вы подразумеваете под «ничего не происходит»? Какова именно команда, которую вы пытаетесь сделать? - Alaa Ali
Вы говорите, что когда вы нажимаете клавишу \, он не вводит символ? или что-то другое? Другие окна принимают нажатие клавиши и показывают \ клавишу? Другие программы? - Thomas Ward♦
Thans, см. Правки. - user2757729
Теперь! Это имеет смысл ... :) - Saurav Kumar


ответы:


Одна из возможностей заключается в том, что ключ обратной косой черты стал привязан к некоторой команде readline (readline это библиотека, которая позволяет на месте редактирования команд оболочки, например, привязки Ctrl+час к backward-delete-char действие).

Чтобы проверить, может ли это быть так, вы можете попробовать запустить bash subshell с отключением редактирования readline

bash --noediting

Если клавиша обратной косой черты работает в этой подоболочке, то места поиска определения определения бранного ключа будут /etc/inputrc для глобальной конфигурации и ~/.inputrc для конфигурации каждого пользователя. Вы также можете попробовать распечатать и найти текущие определенные привязки клавиш из командной строки, используя

bind -P | grep '\\\\'

Требуется дополнительная обратная косая черта, потому что буквальная обратная косая черта появится в конфигурации readline как \\, каждый из которых нуждается в дальнейшем выходе в оболочку. Очевидно, вы можете сделать это только в подоболочке, если обратная косая черта связана с обычной оболочкой.

FYI есть bind command, чтобы удалить привязку, но неясно, как вводить keyseq аргумент, когда он уже связан

-r  keyseq         Remove the binding for KEYSEQ.

Для получения дополнительной информации см. help bind в командной строке bash


3
2017-09-10 00:12





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

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

Если вы хотите отобразить \ в качестве символа, убегите. Тип \\,


1
2017-09-09 18:01



Извините, я не думаю, что вы понимаете. Дело не в том, что я могу войти в команду, и все работает. Эвакуационный персонаж никогда не попадает в терминал. См. Второй раунд изменений. - user2757729
Ой, извини. Вы используете терминал Gnome? - Jack
Я нахожусь на ubuntu 12.04, по умолчанию. Я думаю, что это Гном? Как я могу проверить. - user2757729
В меню нажмите Справка -> О программе. - Jack
Добавлена ​​эта деталь для quesiton как edit 3. - user2757729


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

stty eof \\

Его можно исправить следующим образом:

stty sane

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


0
2017-09-09 19:34



Спасибо, дал это выстрел. Не повезло. - user2757729


Я работаю над «macBook Air» 2015, с «Parallels 11» и виртуальной машиной «Ubuntu». Моя клавиатура - это «сокращенная» беспроводная сеть Apple. Я выбрал «Французский Macintosh» (потому что я французский ...!) Для keybord в МЕНЮ, но в Терминале Ubuntu изначально я не мог создать «\» и «|». Поэтому я перехожу к «Paramètres Système», «Saisie de texte» («text typing»?) И нажмите кнопку «Paramètres du clavier» (параметры клавиатуры) в правом нижнем углу окна. Во втором новом окне я выбираю «Saisie» («Ввод»?), А затем линию «Touche de caractères alternatifs» («Alternate chars Key»?); теперь щелкнув по правому краю этой линии, можно сделать выбор между многими специальными ключами ... В моем случае сначала была выбрана клавиша NO, и я выбрал «Alt Left» для эмуляции обычного действия под Mac OS X. Долго объяснять, но быстро и легко сделать! Гай де Пернон


0
2018-02-02 15:24