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

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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.