Terminal bagunçado

0

Eu às vezes consigo deixar meu terminal bagunçado até eu digitar "clear". Isso ocorre de várias maneiras, às vezes ao escrever comandos individuais, às vezes ao editar algo em um editor de texto. Agora eu tenho o Mac OS X Lion, mas lembro-me de ter esse problema anos atrás, mesmo quando ainda estava usando o Solaris.

Aqui está um caso que consegui reproduzir. Se eu cometer um erro com cURL:

Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo efghijk=bar http://localhost:1234/do_something_cool
curl: (6) Couldn't resolve host 'efghijk=bar'
foo Bemmu-Sepponens-MacBook-Pro:b2 bemmu$

Curl emitido "foo" e uma mensagem de erro. Agora, se eu pressionar a seta para cima para voltar a editar esse comando, ele se torna assim:

Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo efghijk=bar http://localhost:1234/do_something_cool
curl: (6) Couldn't resolve host 'efghijk=bar'
foo Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo efghijk=bar http://localhost:1234/do_something_cool

Tudo ainda parece OK, mas note que a linha anterior foi colocada depois de "foo", que veio da cURL. Agora, se eu tentar pressionar a seta para a esquerda o suficiente para chegar ao local onde o erro estava e começar a digitar, as coisas ficarão confusas:

foo Bemmu-Sepponens-MacBook-Pro:b2 bemmu$ curl --data abcde=foo&ijk=bar http://localhost:1234/do_something_cool

Tudo o que fiz foi ir ao local imediatamente depois de "abcde = foo" e pressionar o backspace uma vez e depois colocar um e comercial. Ele deveria ter se tornado "abcde = foo & fghijk = bar", mas ao invés disso ele se tornou "abcde = foo & ijk = bar".

Isso é normal ou tenho algo errado em algum lugar?

    
por Bemmu 12.03.2012 / 09:22

2 respostas

1

Isso é esperado se o curl falhar na saída de uma nova linha após foo . Você pode tentar pressionar ⌃C uma vez antes de pressionar para editar seu comando.

Observe também que você deve escapar da string de dados para que o "e" comercial não seja interpretado como o comando para executar um trabalho em segundo plano .

Por exemplo:

charon:~ werner$ curl --data abcde=foo&efghijk=bar http://localhost:3000/
[1] 96980
-bash: http://localhost:3000/: No such file or directory

O [1] indica que um trabalho foi colocado em segundo plano, ou seja, este:

[1]+  Exit 2                  curl --data abcde=foo

Então, no e comercial, seu comando foi truncado. O que você pode fazer em vez disso é isso - escape do & com uma barra invertida.

charon:~ werner$ curl --data abcde=foo\&efghijk=bar http://localhost:3000/

Alternativamente, você também pode colocar sua string de dados em aspas simples para evitar qualquer expansão :

charon:~ werner$ curl --data 'abcde=foo&efghijk=bar' http://localhost:3000/
    
por 12.03.2012 / 10:32
1

Você pode redefinir o terminal no OS X, e todos os outros * nix que eu já vi, digitando:

echo ^V ESC c

no seu terminal. ^ V significa "segure o controle e pressione a tecla 'V'", "ESC" está apenas pressionando a tecla de escape, e "c" é, obviamente, a tecla "c".

O que você está fazendo é ecoar a sequência de escape.

^ V significa que a próxima tecla que você pressionar (ESC, neste caso) é colocada no terminal literalmente (pressionando ESC sem que isso não daria muito), o seguinte "c" é o código real. Você pode obter uma lista completa aqui: link

Este é um hard reset, então ele consertará praticamente qualquer loucura em que seu terminal possa entrar, embora às vezes você possa estar digitando cego.

    
por 18.03.2012 / 04:55