少用力将文件显示为文本


14

有时,错误地将文件识别为二进制文件并尝试在LHS上显示十六进制转储(通常是具有非字母数字字符但仍包含可打印ASCII字符的文件)。如何强迫它将其识别为文本?


寻找另一个答案。我有一个cat somefile显示为ASCII 的日志文件,但该文件less somefile可能是二进制文件,并显示为此类。echo $LESSOPEN是空的,less -L无济于事。
内森·朗

2
@NathanLong这可能是一个可以接受的新问题,因为此处的解决方案无法解决您的问题(请务必注意)。但是,当您说“可能是二进制并显示为二进制”时,是在说它显示数据的十六进制表示,还是看到原始的二进制数据(所有奇怪的符号等)?
帕特里克

什么是LHS?对我来说是新的。
dfc

Answers:


19

我认为您已经(或您的发行版中)LESSOPEN设置了一个过滤器less。请尝试以下操作以告知less不要使用过滤器:

less -L my_binary_file

为了进一步探索,也可以尝试echo $LESSOPEN。它可能包含一个shell脚本的名称(/usr/bin/lesspipe对我而言),您可以通读它以了解其中存在哪种过滤器。也尝试man less,并阅读“ 输入预处理器”部分。


4

对于LESSOPEN不是问题的情况。less可以尝试以下选项:

  1. -f--force:除了允许打开非常规文件外,它“还可以在打开二进制文件时禁止显示警告消息”。
  2. -r--raw-control-chars:“导致显示原始控制字符。默认值为使用插入符号表示的控制字符;例如,control-A(八进制001)显示为^A。警告:使用此-r选项时,较少的将无法跟踪屏幕的实际外观(因为这取决于屏幕对每种类型的控制字符的响应方式),因此,可能会导致各种显示问题,例如长行在错误的位置被分割。
  3. -R--RAW-CONTROL-CHARS-r上述形式更弱,仅ANSI“颜色”转义序列以“原始”形式输出。“与-r不同,在大多数情况下,屏幕外观都可以正确维护。” 例如,如果您正在查看使用ANSI颜色控制序列的日志文件,这将很有用。

您可以先按键再-进行实验,r而无需重新运行less。您可以将这些选项添加到LESS环境变量以使设置永久化(例如,通过修改外壳配置文件);如果你的终端能显示的颜色,我强烈建议将-R您的LESS设置。您应该确保将终端配置为使用与文本文件相同的字符编码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.