Comment entrer un caractère de tabulation littéral dans un shell bash?

72

Par exemple, je voulais utiliser l'utilitaire de tri avec l'option -t pour spécifier des séparateurs de tabulation, mais

sort -t "\t"

ne fonctionne pas.

marque
la source

Réponses:

85

N'utilisez pas de guillemets doubles.

sort -t $'\t'

Ou je pense que Ctrl V insère un onglet ??

Modifier:

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

surfasb
la source
Onglet n'insère pas un onglet?
RedGrittyBrick
4
@RedGrittyBrick Tab complète.
Daniel Beck
12
Control-V seul ne fonctionnera pas; Control-V + Tab sera. J'aime le $'...'truc, cependant; maintenant j'ai appris quelque chose de nouveau. :-)
L2G
Je l'ai toujours appris comme $' '. Il vous permet d'entrer une chaîne, mais aussi d'avoir des caractères d'échappement. La double citation s'imprime littéralement. \tSi vous laissez les citations de côté, vous obtenez un caractère de tabulation.
surfasb
59

Essayez Control- v, alors Tab. Si vous voyez l'onglet du curseur à droite, cela a fonctionné.

Selon le commentaire de Mark, vous pouvez également essayer Control- vet ensuite Control- i.

L2G
la source
Lorsque je fais cela, je reçois un véritable onglet (c.-à-d. Indentation).
Daniel Beck
2
Oops. Vous avez raison. Mais il est entre dans le caractère de tabulation, fait pas l' achèvement de ligne de commande (qui est ce que bash normalement avec un onglet). J'ai essayé sort -t " "(avec l'onglet littéral décrit ci-dessus) et cela a fonctionné pour moi.
L2G
Oui, c'est ce que je voulais dire par indentation. Je ne connaissais pas un meilleur terme.
Daniel Beck
1
Ctrl-v, Ctrl-i fonctionnera également (j'ai trouvé cette réponse ici ). De plus, je pense qu'un Ctrl-q, Ctrl-v, Tab fonctionnera. Merci L2G!
Mark
BTW, j'aimerais bien accepter les deux réponses, mais comme je pense que la solution de surfasb est plus lisible, j'ai accepté la sienne. J'aime aussi le tien aussi, alors vota. Merci!
Mark