Quando eu não grep nenhum arquivo particular, o terminal pára de funcionar

0

Estou aprendendo a usar o shell. Ao brincar com alguns comandos básicos, encontrei um problema. Isso é bem básico e peço desculpas se isso aborrecer algumas pessoas.

Na minha área de trabalho, existe um arquivo chamado "myFirstShellScript.txt". Nesse arquivo há uma string de texto "show system".

Então, se ao abrir o shell, eu digito cd desktop e então grep "show system" myFirstShellScript.txt" o shell retorna a sentença onde a string aparece. Bem.

Mas eu queria mexer. Eu digitei grep "show system" e pressione enter. Gostaria de saber se o grep iria pesquisar em todo o desktop, já que era / é o meu pwd.

Mas o que parece ter acontecido é que o terminal parou de funcionar. No começo eu pensei que poderia estar ocupado procurando, mas já faz um tempo. Eu então verifiquei se outros comandos funcionariam - pwd - não faz nada, quando eu pressiono, insiro o cursor e movo para uma nova linha.

Eu então tentei sair. Eu tentei "exit", "end" e "quit". Nada. A janela do terminal não está respondendo como esperado.

Eu sei que poderia facilmente abrir outra guia, mas queria perguntar o que eu fiz no terminal aqui?

    
por Doug Fir 04.06.2013 / 16:55

2 respostas

3

Quando você executar grep , se você incluir um nome de arquivo ( grep pattern file ), ele procurará esse arquivo. Quando você não faz isso, ele procura a entrada padrão (stdin). Se você incluí-lo em um pipe ( foo | grep ), ele lê o pipe. Quando você executa apenas grep pattern , ele lê a entrada do console. Este é um padrão muito comum entre os utilitários Unix e Linux. Quando você digita exit , end , quit ou qualquer outra coisa, ele compara com o padrão e imprime se corresponder, como se você tivesse fornecido um arquivo. Tente inserir uma linha que corresponda ao padrão - você verá que ela ecoou de volta para você.

Para sair disso, pressione Ctrl + D para sinalizar o final do arquivo. Ctrl + C mata a maioria dos programas, mas é menos limpo que Ctrl + D .

    
por 04.06.2013 / 17:00
2

Grep sem nenhum argumento lê a entrada padrão, que é o seu terminal. Ele continuará lendo até encontrar o caractere de final de arquivo. O caractere de final de arquivo é Ctrl-D . Digite isso e o grep está pronto.

Se isso não funcionar, execute stty -a e procure eof = ... para encontrar seu caractere eof.

Receber alerta : não digite Ctrl-D duas vezes; o segundo será lido pelo seu shell. Se é o seu login shell, você pensa que está pronto e sai. Sempre que seu shell de login sair (assim como quando você digita exit ), sua sessão de login termina e o prompt login: aparece novamente. Em outras palavras, você está desconectado.

    
por 04.06.2013 / 17:02

Tags