Wie gebe ich ein literales Tabulatorzeichen in eine Bash-Shell ein?

72

Ich wollte zum Beispiel das Dienstprogramm sort mit der Option -t verwenden, um Tabulatortrennzeichen anzugeben, aber

sort -t "\t"

funktioniert nicht

Kennzeichen
quelle

Antworten:

85

Verwenden Sie keine doppelten Anführungszeichen.

sort -t $'\t'

Oder ich denke, Strg V fügt ein Tab?

Bearbeiten:

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

surfasb
quelle
Fügt ein Tabulator keinen Tabulator ein?
RedGrittyBrick
4
@ RedGrittyBrick Tab abgeschlossen.
Daniel Beck
12
Control-V alleine wird nicht funktionieren; Strg-V + Tab wird. Ich mag den $'...'Trick allerdings; jetzt habe ich was neues gelernt. :-)
L2G
Ich habe es immer gelernt als $' '. Sie können eine Zeichenfolge eingeben, aber auch Zeichen mit Escapezeichen verwenden. Doppelte \tAnführungszeichen werden buchstäblich gedruckt. Wenn Sie die Anführungszeichen weglassen, erhalten Sie ein Tabulatorzeichen.
Surfasb
59

Versuchen Sie Control- vdann Tab. Wenn Sie die Cursor-Registerkarte rechts sehen, hat es funktioniert.

Nach dem Kommentar von Markus kannst du es auch versuchen Control- vund dann Control- i.

L2G
quelle
Wenn ich das mache, bekomme ich eine echte Registerkarte (dh Einrückung).
Daniel Beck
2
Hoppla. Du hast recht. Es wird jedoch das Tabulatorzeichen eingegeben und keine Befehlszeilenvervollständigung durchgeführt (wie dies bei Bash normalerweise bei einem Tabulator der Fall ist). Ich habe es versucht sort -t " "(mit dem wörtlichen Tab wie oben beschrieben) und es hat bei mir funktioniert.
L2G
Ja, das habe ich mit Einrücken gemeint. Wusste keinen besseren Begriff.
Daniel Beck
1
Ctrl-v, Ctrl-i wird auch funktionieren (diese Antwort habe ich hier gefunden ). Ich denke auch, dass ein Strg-q, Strg-v, Tab funktionieren wird. Danke L2G!
Mark
Übrigens würde ich gerne beide Antworten akzeptieren, aber da ich der Meinung bin, dass die Lösung von surfasb besser lesbar ist, habe ich ihre akzeptiert. Ich mag auch deine, also habe ich sie gewählt. Vielen Dank!
Mark