Então, eu constantemente cometo o erro de digitar errado meus comandos grep.
Quero digitar. grep searchstring *
No entanto, muitas vezes esqueço de colocar o * e acabo pressionando enter depois de digitar grep searchstring
.
Isso faz com que minha linha de comando fique congelada e não consigo descobrir como sair dela.
Não importa o que eu tente digitar depois disso, não consigo escapar do > doom. Tenho que fechar minha sessão e reiniciá-la, perdendo assim todo o meu progresso.
Qual é o segredo para escapar desse problema?
Tentei ctrl + z, ctrl + x, ctrl +d, esc, outro *, ', ", ;, literalmente qualquer coisa que eu possa pensar, mas não sei como consertar depois que "baguncei" meu grep.
O que acontece quando esqueço de colocar onde pesquisar e como posso corrigir isso?
Para maior clareza:
Normalmente, quando você está trabalhando na linha de comando, você obtém um prompt de comando. Por exemplo, agora meu prompt de comando é bash-5.2$. Então minha tela se parece com isso:
bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring *
file1.txt:searchstring
file2.txt:searchstring
bash-5-2$
A indicação do bash-5.2$
significa que o prompt está pronto para um novo comando. O grep acima foi digitado corretamente, com um *, e portanto ele produziu o resultado e voltou para um prompt regular.
Agora, quando cometo esse erro grep, é assim que fica:
bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring //here I forgot the *
>
Esse >
não é um prompt normal. Ele não aceita comandos. Ele não faz nada além de criar mais deles se eu pressionar Enter:
bash-5.2$ pwd
/bin/bash
bash-5.2$ ls
file1.txt file2.txt
bash-5.2$ grep searchstring
>
>
>
Não sei como voltar para um prompt normal. Não sei como escapar > land. Tentei ctrl + todas as letras, nada funciona.
Um resumo de alguns cenários possíveis:
$ grep searchstring "*
ou$ grep searchstring '*
esperará uma citação de fechamento ( " ou ' ) antes de tentar qualquer coisa.
Aqui o
$PS2
prompt será mostrado, a string padrão para este prompt é>
$ grep searchstring *
olha dentro de todos os arquivos no diretório atual
$ grep searchstring
esperará dados do stdin, por exemplo, algum texto colado ou uma lista para fazer check-in...
$ grep searchstring <<EOF
esperará que o texto seja colado (como acima) com uma única linha contendo apenas
EOF
- para marcar o final do texto.Para todas essas ações, CTRL+D marca o fim do texto colado ou CTRL-C deve interromper qualquer ação posterior.
Se isso não funcionar: Observe que PODE haver uma
.inputrc
configuração Shell habilitada (por exemplo, ?)para ter COPY & PASTE em CTRL-C e V.
Isso, é claro, inibirá CTRL-C de agir como a "tecla stop".
Essa mesma configuração PODE permitir o uso da BREAKtecla - como uma substituição.
Experimente parar com isso:
$ while true ; do echo -n "." ; sleep 1 ; done