Здравствуйте !
Подскажите, как добавить несколько символов в начало файла не меняя размер самого файла, те чтобы данные перезаписывали начало файла.
> Подскажите, как добавить несколько символов в начало файла не меняя размер самого
> файла, те чтобы данные перезаписывали начало файла.Например, так:
$ echo 0123456789 > test
$ echo -n 'abc' | dd of=test conv=notrunc
0+1 записей считано
0+1 записей написано
скопировано 3 байта (3 B), 0,0145526 c, 0,2 kB/c
$ cat test
abc3456789
$ _
>[оверквотинг удален]
>> файла, те чтобы данные перезаписывали начало файла.
> Например, так:
> $ echo 0123456789 > test
> $ echo -n 'abc' | dd of=test conv=notrunc
> 0+1 записей считано
> 0+1 записей написано
> скопировано 3 байта (3 B), 0,0145526 c, 0,2 kB/c
> $ cat test
> abc3456789
> $ _Прошу прощения за некоторую некротичность моего поста. :-)
Хочу только добавить, что юникод, в частности - UTF-8, может при определенных условиях
доставить неприятности. Например, при использовании символов, выходящих за пределы первой
половины таблицы ASCII, получим следующее:
$ echo "0123456789" > test
$ echo -n 'абв' | dd of=test conv=notrunc
0+1 записей считано
0+1 записей написано
скопировано 6 байт (6 B), 6,288e-05 c, 95,4 kB/c
$ cat test
абв6789
Размер файла остается прежним, а вот количество символов в нем меняется. Но если этот
момент не критичен, то его можно игнорировать. :-)
> Хочу только добавить, что юникод, в частности - UTF-8, может при определенных условиях доставить неприятности...Кстати, да. Это вы точно заметили. При использовании кодировок с нефиксированным размером символа (UTF-8 как пример) задача в общем случае не решается. Это если конечно понимать её формулировку, как "заменить первые символы файла заданными символами, не меняя размер файла". Строка замены может иметь, к примеру, 5 байт (не символов), а файл может начинаться с трёх двухбайтовых символов. Тогда "тупая" замена испортит третий символ файла, а "умная" - изменит размер файла.
Хотя тоже думаю, что вопрошающему это не критично.