ssh 会话中的自动换行无法与 grep 一起使用

ssh 会话中的自动换行无法与 grep 一起使用

当我 ssh 到我的 Linux 服务器并使用 grep 时如下:

grep‘超时超出’日志文件|less

自动换行不起作用。

但是,如果我使用相同的命令但先使用 less,如下所示:

较少的日志文件 | grep'超出超时'

行会换行。我不确定问题是什么,也不知道这是否正常。但无论我使用哪种 ssh 客户端,这种情况都会发生。我尝试过 putty 和 Ubuntu 客户端。我该如何解决这个问题?

答案1

当你这样做

grep 'timeout exceeded' logfile | less

您可以使用右箭头键移动到行尾(左箭头键移回)。

答案2

这不是 的默认行为less。默认是将长行换行。

您看到这种行为是因为您在环境变量-S中设置了该选项(以及其他几个选项) 。LESS

       -S or --chop-long-lines
              Causes  lines  longer than the screen width to be chopped (trun‐
              cated) rather than wrapped.  That is, the portion of a long line
              that does not fit in the screen width is not shown.  The default
              is to wrap long lines; that is, display  the  remainder  on  the
              next line.

要解决该问题,请检查您的 shell 启动脚本(例如$HOME/.bash_profile$HOME/.bashrc)和系统 shell 启动脚本(例如目录中的脚本/etc/profile.d)以查看环境变量的设置位置,并进行所需的更改。

答案3

如果您less默认不换行,请尝试使用 less 的完整路径。运行which less并查看它给出的路径。然后使用该路径。例如,如果它位于 /usr/bin/less,则尝试grep 'timeout exceeded' logfile | /usr/bin/less

相关内容