Muszę przeglądać duże pliki dzienników za pomocą powłoki bash. Używałem less
do otwierania plików, ale ponieważ linie są zbyt długie, trwa pewnego rodzaju zawijanie wierszy / słów.
Ponieważ pliki są dziennikami Log4J, a na początku każdej linii znajduje się wzorzec, zawijanie linii utrudnia analizowanie danych wyjściowych, więc zacząłem używać, less -S
które odcinają długie linie.
Ale teraz muszę użyć tail -f
, a także linia otacza wyjście. Czy można wyłączyć zawijanie wiersza w powłoce bash dla wszystkich poleceń?
Uwaga: istnieje odpowiedź na inne pytanie, które wspomina sekwencję ucieczki echo -ne '\e[?7l'
, ale wydaje się, że nie działa na bash.
screen
poleceniu „zawiń”. Wxterm
, istnieje-aw
opcja, aby zapobiec automatycznej okłady linii. Prawdopodobnie istnieją pewne zasoby X dla innych emulatorów terminali. Z jakiego emulatora korzystasz?gnome-terminal
.+aw
dlaxterm
:) Ale to rozwiązuje problem z danymi wyjściowymi (np.ls -l
Z kilkoma długimi nazwami Windows z TPB, działa dobrze), dla wprowadzania , podczas wprowadzania polecenia, prawdopodobnie nadal chcesz zawijać (a przynajmniej nie chcesz, aby było tak, jak jest teraz+aw
: spróbuj napisać poza „ramką kolumny”, a następnie cofnij się w poszukiwaniu ogromnego błędu GFX).urxvt
nierxvt
może wyłączyć zawijania linii.Odpowiedzi:
Czy naprawdę potrzebujesz
tail -f
lub chciałbyś cośless +F
zrobić? Ponieważ brzmi to tak, jakbyś nadal chciał mieć interaktywny pager, wydaje mi się, że o wiele łatwiej byłoby się go trzymaćless
niż samodzielnie go wdrożyć.Ostatnia uwaga: czy zastanawiałeś się
tail -f file | less
?źródło
screen
ixterm
ponieważ te emulatory mają opcje zapobiegania zawijaniu się linii. Ale istnieje duża różnica między obcięciem linii a ukryciem ogona linii, abyśmy mogli ją zobaczyć, jeśli chcemy. Używanietail -f file | less -S
nie jest idealne, ponieważ wydaje się, że wyłącza,-f
ale jest to najlepsze rozwiązanie, jakie znalazłem.less
bezpośrednio.Próbować:
less -S +F filename
źródło
less -S
. Bardzo przydatny również na laptopie.Znalazłem dobrą odpowiedź od superużytkownika , który działa od razu po instalacji
gnome-terminal
i prawdopodobnie także dla innych terminali:źródło
Załóżmy, że masz
COLUMNS
zdefiniowaną zmienną, możesz wykonaćw przeciwnym razie
$COLUMNS
zastąp szerokość kolumn terminalu, uzyskaną przezstty -a
.źródło
$COLUMNS
(nie jest od razu aktualizowanaSIGWINCH
, tylko przy następnym pytaniu) istty -a
(trudniejsze do użycia w skrypcie) jesttput cols
.cut
zachowywać się tak, jakbyless -S
buforowana była długa linia, a my możemy zobaczyć całą linię za pomocą klawiszy kierunkowych?screen
okna, z których każdetail -f | cut
zawiera skrypt lub skrypt emulujący w pewien sposóbless
zachowanie. Ale w tej chwili nie masz rozwiązania.less -S
, to spieprzy kolorowy tekst lub cokolwiek z ucieczkami ANSI. Może też spieprzyć Unicode.less -S
jest bardziej przydatny w przypadku kolorowego tekstu. Możesz użyćless -S -E
do natychmiastowego wyjścia - przydatne do cięcia kolorowych wydruków w $ COLUMNS.Można wyłączyć zawijanie liniowy
less
,tail
i każdą inną komendę pod słońcem Linux z:Aby przywrócić zawijanie linii, użyj:
źródło
Emulator terminatora (http://software.jessies.org/terminator/) terminalu pozwala nie owijać długich linii i ma przewijanie w poziomie (ale jest napisany w Javie).
źródło
terminator v1.91
.terminator
, ten, do którego odnosi się gentledevil, i ten, którego używasz.Dwie dobre odpowiedzi / przykłady tutaj
http://www.commandlinefu.com/commands/view/1710/tail-a-log-file-with-long-lines-truncated
Jedno zastrzeżenie: przynajmniej na wbudowanym terminalu w moim komputerze Mac nie wydaje się zbyt dobrze obsługiwać znaków tabulacji. Wygląda na to, że wyświetla je np. Z 8 spacjami, ale po prostu oblicza je jako 4 spacje lub coś w tym rodzaju. Innymi słowy, jeśli twój terminal ma 80 znaków szerokości i twój wynik zawiera kilka zakładek w linii, musisz ustawić szerokość na 60 lub coś w tym rodzaju. YMMV.
źródło
Użyj poniższych opcji z
less
. Wyłączy zawijanie słów i zachowa kolory tekstu, jeśli jest to określone.less -SR +F filename
źródło
Na tej stronie jest kilka przykładów orurowania ogonem z opcją -f ... z moich testów nie działa ono poprawnie, jeśli naprawdę potrzebujesz orurowania (np. Jeśli potrzebujesz potokować coś więcej, na przykład grep), możesz użyć czegoś takiego :
prawdopodobnie nie najlepsza wydajność, ale działa ... w przeciwnym razie, jeśli nie jest wymagane dodatkowe pipowanie, możesz użyć czegoś innego:
źródło
Istnieje wiele komentarzy, które odbiegają od pytania. Pytanie OP brzmiało:
Poczyniono pewne komentarze na temat funkcji automatycznego zawijania, stwierdzając, że nie wszystkie terminale ją mają. Być może. Ale (oprócz terminatora , którego programiści nie udokumentowali żadnego opisu terminala ) wszystkie podane przykłady to xterm, rxvt i niektóre podobne lub potomne. Wszystkie są powiązane.
+aw
Opcja wxterm
odpowiadaautoWrap
zasobu. Sprawdza instrukcję, mówiaw Sekwencjach Kontroli XTerm jest napisane
co z pewnością nie „zależy od wyboru terminala”, ponieważ każdy terminal zgodny ze standardem VT100 obsługuje tę funkcję. xterm i rxvt robią to na przykład. Inni też.
To, czy funkcja będzie użyteczna dla OP, jest dyskusyjne. Tłumienie zawijania linii to tylko jeden aspekt problemu:
COLUMNS
na „dużą” wartość.cat
zapisywania pliku dziennika na ekranie).Istnieją pagery, które potrafią zrobić to, co jest potrzebne, np. Multitail, który zawiera listę swoich funkcji
Będąc oparty na ncurses, powinien działać na każdym z wymienionych terminali.
źródło
vi
wewnątrz typu vi
Wierzę, że jest też wtyczka do vi, która da ci zachowanie podobne do ogona.
źródło
Jeśli naprawdę chcesz zobaczyć pełne linie, możesz skopiować i wkleić tekst do edytora tekstu, takiego jak Atom lub Notepad ++, i wyłączyć zawijanie linii.
źródło