Como insiro um caractere de tabulação literal em um shell bash?

72

Por exemplo, eu queria usar o utilitário de classificação com a opção -t para especificar separadores de tabulação, mas

sort -t "\t"

não funciona

Marca
fonte

Respostas:

85

Não use aspas duplas.

sort -t $'\t'

Ou acho que Ctrl V insere uma guia?

Editar:

http://www.gnu.org/s/bash/manual/html_node/ANSI_002dC-Quoting.html#ANSI_002dC-Quoting

surfasb
fonte
A guia não insere uma guia?
RedGrittyBrick
4
A guia @RedGrittyBrick é concluída.
Daniel Beck
12
Control-V sozinho não funcionará; Control-V + Tab será. Eu gosto do $'...'truque; agora eu aprendi algo novo. :-)
L2G 28/11
Eu sempre aprendi isso como $' '. Ele permite que você insira uma string, mas também possui caracteres de escape. As \taspas duplas são impressas literalmente. Se você deixar de aspas, obterá um caractere de tabulação.
Surfasb #
59

Tente Control- ventão Tab. Se você vir a guia do cursor para a direita, funcionou.

De acordo com o comentário de Mark, você também pode tentar Control- ve depois Control- i.

L2G
fonte
Quando faço isso, recebo uma guia real (ou seja, recuo).
Daniel Beck
2
Opa Você está certo. Mas ele está inserindo o caractere de tabulação, sem concluir a linha de comando (que é o que o bash normalmente faz com uma tabulação). Eu tentei sort -t " "(com a guia literal como descrito acima) e funcionou para mim.
L2G
Sim, é isso que eu quis dizer com recuo. Não conhecia um termo melhor.
Daniel Beck
11
Ctrl-v, Ctrl-i também funcionará (encontrei esta resposta aqui ). Além disso, acho que um Ctrl-q, Ctrl-v, Tab funcionará. Obrigado L2G!
Mark
BTW, eu adoraria aceitar as duas respostas, mas como acho que a solução do surfasb é mais legível, aceitei a dela. Também gosto do seu, então votei nele. Obrigado!
Mark