Questão Por que o Ubuntu Terminal não aceita o caractere "\"?


Eu não consigo que meu terminal aceite uma \ quando eu digito. Nada acontece. Eu pesquisei, mas não vi nada que pareça resolver isso. Eu não tenho ideia de onde eu começaria a mexer.

EDITAR:

Eu posso usar o eclipse, em qualquer editor de texto (incluindo nano ou outras ferramentas de linha de comando). O comando exato em questão é:

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

Se eu copiar e colar essa linha, \ personagem desaparece. Se eu tentar digitá-lo, nada acontece.

O único lugar em que isso é um problema é a linha de comando atual do shell.

Obrigado.

EDITAR DOIS:

Parece ser uma confusão. Se eu copiar o comando acima em minha linha de comando, SEM PRESSIONAR ENTER (não estou executando) Isto é o que está no meu shell:

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

Se eu, então, tentar entrar \ para escapar do ; o símbolo não aparece. Se eu pressionar enter a qualquer momento enquanto este comando foi inserido nas circunstâncias acima, ele falha em executar, devido ao; não sendo passado para o comando.

Editar 3:

Estou usando o GNOME 3.4.1.1 no Ubuntu 12.04 LTS


4
2017-09-09 16:51


origem


E quanto a qualquer editor de texto? Funciona bem ..? - Saurav Kumar
Bem-vindo ao Ask Ubuntu! O que exatamente você quer dizer com "você não consegue fazer o terminal aceitar"? O que você quer dizer com "nada acontece"? O que exatamente é o comando que você está tentando fazer? - Alaa Ali
Você está dizendo que quando você aperta a tecla \ não entra no personagem? ou alguma outra coisa? Outras janelas aceitam a tecla e mostram a tecla \? Faça outros programas? - Thomas Ward♦
Thans, veja edições. - user2757729
Agora! Isso faz algum sentido .. :) - Saurav Kumar


Respostas:


Uma possibilidade é que a chave de barra invertida se tenha ligado a algum comando readline (readline é a biblioteca que permite a edição in-situ de comandos shell, por exemplo, binding Ctrl+h ao backward-delete-char açao).

Para testar se esse pode ser o caso, você pode tentar iniciar um subshell bash com a edição readline desabilitada

bash --noediting

Se a chave de barra invertida funcionar nessa subcamada, os locais para procurar a definição de atalhos de tecla falsos seriam /etc/inputrc para a configuração global e ~/.inputrc para configuração por usuário. Você também pode tentar imprimir e pesquisar as combinações de teclas atualmente definidas a partir da linha de comando usando

bind -P | grep '\\\\'

As barras invertidas extras são necessárias porque uma barra invertida literal aparecerá na configuração readline como \\, cada um dos quais precisa de mais uma fuga na casca. Obviamente, você só pode fazer isso no subshell, se a barra invertida estiver sendo ligada no shell normal.

FYI existe um bind opção de comando para remover uma ligação, mas não está claro como inserir keyseq argumento quando já está vinculado

-r  keyseq         Remove the binding for KEYSEQ.

Para mais informações, consulte help bind na linha de comando do bash


3
2017-09-10 00:12





\ escapa de qualquer personagem que o segue. ; explicitamente termina um comando. \; significa escapar do ; e passá-lo para o comando que você está invocando dentro de encontrar (tudo depois -exec. Com \ o ponto-e-vírgula se aplica a chmod enquanto que sem o ponto e vírgula se aplicaria a find.

Seu terminal reconhece \. Quando você digita no seu terminal, você diz ao seu terminal para escapar do próximo caractere - que você não fornece.

Se você quiser exibir \ como um caractere, escape dele. Tipo \\.


1
2017-09-09 18:01



Desculpe, não acho que você esteja entendendo. Não é que eu possa entrar no comando e tudo funciona. O caractere de escape nunca chega ao terminal. Veja a segunda rodada de edições. - user2757729
Oh, desculpe. Você está usando o terminal Gnome? - Jack
Eu estou no Ubuntu 12.04, coisas padrão. Eu acho que é o Gnome? Como eu iria checar? - user2757729
No menu, clique em Ajuda -> Sobre. - Jack
Adicionado esse detalhe ao quesiton como edição 3. - user2757729


Não faço ideia se essa é a causa raiz no seu caso, mas posso reproduzir um comportamento semelhante inserindo este comando:

stty eof \\

Pode ser corrigido com:

stty sane

Você pode querer tentar o último comando para ver se isso resolve o problema.


0
2017-09-09 19:34



Obrigado, deu um tiro. Sem sorte. - user2757729


Estou trabalhando em um "macBook Air" 2015, com "Parallels 11" e uma máquina virtual "Ubuntu". Meu teclado é o "reduzido" da Apple sem fio. Eu escolhi, "French Macintosh" (porque eu sou francês ...!) Para o keybord no MENU, mas no Terminal do Ubuntu, inicialmente, eu não pude fazer um "\" nem um "|". Então eu vou para o "Paramètres Système", "Saisie de texte" ("digitação de texto"?) E clique no botão "Paramètres du clavier" (Parâmetros do teclado) no canto inferior direito da janela. Na segunda nova janela, seleciono "Saisie" ("Digitando"?) E, em seguida, a linha "Touche de caractères alternatifs" ("alternativo chars Key"?); Agora clicando no lado direito da linha, é possível fazer uma escolha entre muitas chaves especiais ... No meu caso, nenhuma tecla foi definida inicialmente, e eu selecionei "Alt Esquerda" para emular a ação normal no Mac OS X. Tempo para explicar, mas rápido e fácil de fazer! Guy de Pernon


0
2018-02-02 15:24