Ilekroć jakieś polecenie generuje długie wiersze jako dane wyjściowe (na przykład, gdy ls -l
folder zawierający pliki o długich nazwach), długie wiersze są zawijane do następnego wiersza, co psuje strukturę kolumny.
Czy jest jakiś sposób na uniknięcie tego? Coś podobnego do opcji vim „nowrap”?
aktualizacja
Zauważyłem problem z zaakceptowaną odpowiedzią:
jeśli utworzę alias typu: alias ll="tput rmam; ls -l; tput smam"
a następnie spróbuję grepować jego wynik: ll | grep foo
nadal będzie drukować wszystkie pliki, tak jak bez grep.
Rozwiązaniem, które znalazłem, jest umieszczenie nawiasów wokół całego aliasu:
alias ll="(tput rmam; ls -l; tput smam)"
command-line
bash
Mihai Rotaru
źródło
źródło
Odpowiedzi:
Zauważ, że nie ma to nic wspólnego z bash (po uruchomieniu polecenia, bash po prostu czeka, aż się skończy) i wszystko, co ma związek z terminalem.
Większość emulatorów terminali jest domyślnie zawijanych na prawym marginesie. Ale można to wyłączyć za pomocą odpowiedniej sekwencji kontrolnej , jeśli emulator terminala ją obsługuje; wtedy długie linie są po prostu obcinane:
źródło
tput rmam; ls -l longname; tput smam
man 5 terminfo
w systemie Linux).Jeśli chcesz, aby móc zrobić przewijania w poziomie zamiast obcinania wierszami, wykorzystanie
less -S
.źródło
Możesz użyć takiej funkcji:
pamiętaj jednak, że będziesz musiał poprzedzać polecenia
nowrap
funkcją lub jakkolwiek nazwiesz tę funkcję.źródło
Możesz zastąpić funkcję, aby automatycznie działała
tput rmam
przed grepem itput smam
po:Upuść to w swoim
.bash_profile
i za każdym razem, gdy uruchomiszgrep
, będzie grep bez zawijania linii.Zostało to mocno zredagowane, przepraszam komentatorów.
źródło
sleep 20
jest niesamowite :-)potokuj do mniej polecenia za pomocą przełącznika -S:
Następnie możesz użyć strzałek w górę / w dół / w lewo / w prawo, aby przewinąć i wpisać q, aby wyjść.
źródło
Spróbuj tego
źródło