Заменить часть файла без модификации неизмененным содержимым [дубликат]

Причина, совершенно отличная от уже приведенных в других ответах: одна из причин, по которой этот метод иногда используется, когда единственный оператор определения функции на верхнем уровне - это вызов main , заключается в том, чтобы убедиться, что сценарий случайно не сделает что-нибудь неприятное, если сценарий усечен. Сценарий может быть усечен, если он передан из процесса A в процесс B (оболочка), а процесс A завершается по какой-либо причине до того, как он завершит запись всего сценария. Это особенно вероятно, если процесс A извлекает сценарий с удаленного ресурса. Хотя по соображениям безопасности это не очень хорошая идея, это то, что нужно сделать, и некоторые сценарии были изменены, чтобы предвидеть проблему.

2
01.02.2017, 00:16
2 ответа

Пример с dd :

$ cat data
insertion goes here: <...>

$ cat insert
ABC 123 XYZ

$ dd if=insert skip=4 count=3 of=data seek=22 bs=1 conv=notrunc
3+0 records in
3+0 records out
3 bytes transferred in 0.001 secs (2918 bytes/sec)

$ cat data
insertion goes here: <123>

Команда dd , которую я использовал здесь, пропускает 4 блока во входной файл, а затем читает 3 блока. Блоки записываются в выходной файл после поиска в нем 22 блоков. Вывод не усекается. Один блок - это один байт.

4
27.01.2020, 21:52

Это работает для меня:

$ echo aaaaaaaaaa > a
$ echo bbbbbbbbbb > b
$ dd if=a of=b conv=notrunc ibs=1 obs=1 seek=3 count=4
$ cat b
bbbaaaabbb
3
27.01.2020, 21:52

Теги

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