LVM + pvs + как получить результаты pvs

Краткий ответ
  1. Вы почти всегда можете предположить, что catэто не вина; он слишком широко распространен, хорошо -протестирован и прост, чтобы иметь такие большие и очевидные ошибки.
  2. Не просто catбинарный файл на ваш терминал; терминалы предназначены для отображения текста, а не произвольных двоичных данных.

Длинный ответ

Зависает не сам catпроцесс, а эмулятор терминала, т.е. программа, отображающая окно. catсам по себе не заботится о том, что на самом деле находится в файле, все, что он делает, это копирует все, что находится в нем, на свой стандартный вывод¹. Теоретически вы можете ()cat /dev/sda, и он с радостью сбросит все содержимое вашего жесткого диска на ваш терминал.

Однако эмуляторы терминала не предназначены для отображения произвольных двоичных данных. Они созданы для отображения текста, и можно управлять отображением текста, встраивая в них специальные последовательности непечатаемых -символов, называемые управляющими кодами или управляющими кодами , так как большинство из них начинаются с «экранирующим символом» (\x1B, часто отображаемым как ^[).

Теперь, если вы выгрузите двоичные данные на свой терминал, он может увидеть управляющий символ (или любой другой специальный для него символ )и попытаться интерпретировать управляющий код из него. Это означает, что он не будет отображать следующие символы, по крайней мере, до тех пор, пока не сможет решить, действительно ли они образуют допустимую последовательность или нет. Другая возможность заключается в том, что где-то встроена допустимая последовательность, которая запускает особое поведение, например, гашение терминала (и создание впечатления, будто ничего не было напечатано ), или изменение цвета переднего плана (и скрытие всего последующего вывода. ).

Я предполагаю, что на двух разных компьютерах, на которых вы тестировали, вы использовали разные эмуляторы терминала, что объясняет различное поведение, которое вы наблюдали :не все TE распознают все escape-коды,поскольку некоторые реализуют частные, нестандартные -последовательности для некоторых уникальных поведений (, таких как kittyпротокол отображения растровых изображений ).

¹ )Для catесть несколько флагов, таких как -t, предложенный в комментариях, которые позволяют манипулировать содержимым файла перед его выводом. См. man catдля получения дополнительной информации.

Что вы можете сделать

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

Для простого просмотра вы также можете использовать программу xxd, которая может поставляться с vimили отдельно (в зависимости от вашего дистрибутива ).

Вы можете извлечь различные тексты, которые могут присутствовать в любом двоичном файле, используя strings, который включен в binutilsв большинстве дистрибутивов. (Спасибо @Rui F Ribeiro за указание)

0
11.01.2021, 16:25
1 ответ

Или немного неэлегантное и довольно ненужное использование awk (по сравнению с решением Vojtech ), которое можно было бы адаптировать для ваших целей (, поскольку вы упомянули о своем желании использовать awk):

[root@localhost Documente]# lvs --no-heading --unit=g
  root cl -wi-ao---- 17,00g
  swap cl -wi-ao----  2,00g
[root@localhost Documente]# lvs --no-heading --unit=g | awk '{sum+=$4} END {print sum}'
19

Но лично я придерживаюсь простоты ответа выше моего.

0
18.03.2021, 22:37

Теги

Похожие вопросы