Jak wprowadzić dosłowny znak tabulacji w powłoce bash?

72

Na przykład chciałem użyć narzędzia sortującego z opcją -t, aby określić separatory tabulatorów, ale

sort -t "\t"

nie działa

znak
źródło

Odpowiedzi:

85

Nie używaj podwójnych cudzysłowów.

sort -t $'\t'

Czy też myślę, że Ctrl V wstawia Tab?

Edytować:

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

surfasb
źródło
Czy karta nie wstawia karty?
RedGrittyBrick
4
Karta @RedGrittyBrick została zakończona.
Daniel Beck
12
Sam Control-V nie zadziała; Control + V + Tab. $'...'Jednak podoba mi się ten trik; teraz ja nauczyłem się czegoś nowego. :-)
L2G
Zawsze nauczyłem się tego jako $' '. Pozwala wprowadzić ciąg znaków, ale także znaki specjalne. Podwójne cytowanie drukuje dosłownie. \tJeśli pominiesz cytaty, otrzymasz znak tabulacji.
surfasb
59

Spróbuj Control- vwtedy Tab. Jeśli zobaczysz kartę kursora po prawej stronie, zadziałało.

Zgodnie z komentarzem Marka możesz także spróbować Control- va następnie Control- i.

L2G
źródło
Kiedy to robię, otrzymuję prawdziwą zakładkę (tj. Wcięcie).
Daniel Beck
2
Ups Masz rację. Ale to jest wprowadzeniem znaku tabulatora, nie robi zakończenie wiersza polecenia (czyli to, co zwykle robi bash z karty). Próbowałem sort -t " "(z literalną zakładką jak opisano powyżej) i zadziałało to dla mnie.
L2G,
Tak, właśnie to miałem na myśli przez wcięcie. Nie znałem lepszego terminu.
Daniel Beck
1
Ctrl-v, Ctrl-i również będzie działać (znalazłem tę odpowiedź tutaj ). Myślę też, że Ctrl-q, Ctrl-v, Tab będzie działać. Dzięki L2G!
Mark
BTW, chciałbym zaakceptować obie odpowiedzi, ale ponieważ uważam, że rozwiązanie surfasb jest bardziej czytelne, zaakceptowałem jej. Ale ja też lubię twoją, więc zagłosowałem. Dzięki!
Mark