dd нужно увеличить/дополнить каждый входной блок до двойного размера

шаг :1

CentOS/RHEL 7.x:

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

шаг :2

Теперь вы можете установить PHP 5.6 с кешем кода операции, выполнив:

yum install php56w php56w-opcache

шаг :3

вы можете обновить PHP,:

yum install yum-plugin-replace

yum replace --enablerepo=webtatic-testing php-common --replace-with=php56w-common
3
06.05.2020, 17:22
2 ответа

Вы можете использовать socat, который использует сокет домена Unix, когда вы указываете exec:для команды. Это может быть сделано из дейтаграммы типа (type=2), чтобы гарантировать, что входные данные для dd составляют только 256 байтов.

Например, для 2 байтов на дейтаграмму(-b2)дополняется до 4(bs=4):

$ echo abcdefx | socat -u -b2 - exec:'dd bs=4 conv=sync',type=2 | od -c   
0000000   a   b  \0  \0   c   d  \0  \0   e   f  \0  \0   x  \n  \0  \0

Обратите внимание, указанное выше использование канала для stdin в socatпредназначено только для этого теста. Обычно вы должны предоставить входной файл непосредственно на стандартный ввод, чтобы у socatне было проблем с чтением целых «блоков» желаемого -bразмера (, т.е.<file socat -u...).

4
28.04.2021, 23:16

Вы можете использовать ddдля ввода пэда, а также использовать ddдля предоставления ввода пэду. Например, предположив размеры 2 и 4, а не 256 и 512 :

.
dd bs=2 count=1 |
dd bs=4 count=1 conv=sync

Первый ddбудет считывать только 2 байта один раз, а второй ddбудет считывать 2 байта, а затем дополнять его до 4 байтов один раз.

Вам нужно делать это только в цикле, несколько неэффективно, пока не будет больше данных (, когда ddсообщит:0 bytes copied). Например, для входной строки abcdefx:

#!/bin/bash
echo abcdefx | ( exec 3>&1
while   log=$(dd bs=2 count=1 status=none |
              dd bs=4 count=1 conv=sync 2>&1 1>&3)
        ! [[ "$log" =~ [^0-9]'0 bytes copied' ]]
do :
done ) | od -c

Результат:

0000000   a   b  \0  \0   c   d  \0  \0   e   f  \0  \0   x  \n  \0  \0
1
28.04.2021, 23:16

Теги

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