У меня есть несколько разреженных файлов на сервере под управлением Red-Hat. Я хочу посмотреть на файлы без необходимости видеть обнуленные байты. Когда я меньше файлов, я вижу много '@ ^', где существуют обнуленные байты. Когда я котирую файлы, ни один из обнуленных байтов не отображается. Однако, когда я улавливаю это значение, обнуляемые байты отображаются снова.

Почему это происходит? Как мне обойти это, чтобы просматривать файлы, используя less, и не отображать обнуленные биты?

2 ответа2

5

Я уверен, что нулевые байты отображаются также, когда вы используете cat . Вы просто не видите их, потому что они ... нулевые байты, и ваш терминал ничего не показывает, когда подается нулевые байты.

С другой стороны, вопрос о том, хранится ли файл на самом деле редко, находится в деталях реализации файловой системы. Такие инструменты, как less и cat не знают (на самом деле не могут знать) и не заботятся о том, является ли файл редким. Если файл содержит ноль байтов, пусть будет так. Вместо этого он мог бы содержать целое значение байта, равное 1, и им было бы все равно.

Если вы хотите отфильтровать нулевые байты и отобразить все оставшиеся байты с less , просто используйте фильтр для удаления этих байтов:

tr -d \\000 < inputfile | less
2

Причина, по которой cat не показывает нулевые байты, заключается в том, что она ничего не экранирует, и ваш терминал вообще не печатает нулевые байты.

Вы можете удалить нулевые байты для просмотра менее, как это:

cat $filename | tr -d "\\0" | less

Замените $ filename на имя файла. Это не изменит файл (и может занять некоторое время для больших двоичных файлов).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .