Что делает эта сложная команда tr?

Это некрасиво, но должно работать:

ssh user@host bash < <(sed 's/\. util\.sh/ {r util.sh; d}' main.sh)

Это встроит содержимое сценария util в основной сценарий, а затем направит сценарий в процесс bash, работающий на удаленном хосте. Обратите внимание, что я удалил двойные кавычки :, так как замена процесса должна выполняться на вашем локальном компьютере, где находятся оба файла.

-1
04.03.2021, 16:30
2 ответа

But I can't figure out exactly what the command is intended to accomplish

Заменяет нулевые байты на 071 (0x39 57 00111001 )байт. Без понятия, как это может быть полезно.

Обычно, если вы хотите проверить работоспособность диска, вы используете другие шаблоны, например.

00000000 0000  0x0
11111111 0377 0xFF
01010101 0125 0x55
10101010 0252 0xAA

Все эти значения используются, например,.badblocks

0
18.03.2021, 22:27

Давайте разделим это:

tr '\0' '\071' < /dev/zero

считывает из /dev/zero, что дает нулевые байты, и заменяет все нулевые байты('\0')байтами, содержащими 71 в восьмеричном ('\071'), т.е. цифра 9 в ASCII или 0x39 в шестнадцатеричном (, что и показывает hexdump). В результате получается никогда не заканчивающийся -поток размером 0x39 байт.

dd of=/dev/sda bs=1M conv=fsync 2>/dev/null

берет на этом входе (все девятки )и записывает их в /dev/sdaпо 1 мегабайту за раз, гарантируя, что данные будут записаны до завершения.

ddостанавливается, когда достигает конца /dev/sda; это приводит к тому, что trтакже останавливается (, он больше не может записывать в канал и останавливается ).

Предположительно, цель состоит в том, чтобы скрыть любые данные, ранее находившиеся на диске; действительно ли это полезно — другой вопрос.

5
18.03.2021, 22:27

Теги

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