SUSE: Как полностью удалить apache2 на машине

По-видимому, head действительно искажает свой ввод, когда это не текстовый файл:

$ wc /bin/ls
   431   3454 126496 /bin/ls
$ head -n 431 /bin/ls > a
 wc a
   431   3447 125378 a
$ diff a /bin/ls
Binary files a and /bin/ls differ
$ md5sum /bin/ls a
42846aa64774a99f0f1feba36ec2e099  /bin/ls
de032f5aa5ef356fb7d5ab4dc622df2e  a
$ wc -c /bin/ls a
126496 /bin/ls
125378 a

Стефан Чазелас хорошо замечает в комментариях:

wc -l сообщает о том, что количество новых строк. / bin / ls , вероятно, имеет больше байтов после последнего появления 0xa , которое head -n 431 не выводит. Инструменты GNU (которые вы, кажется, используете) обычно могут работать с двоичными данными (байтами NUL и произвольно длинными строками).

Итак, причина неправильного вывода при использовании head -n заключается в том, что после последнего символа \ n есть дополнительные данные. Глядя на исходный код для GNU head , я могу подтвердить, что как функция, которая читает по строкам, так и функция, которая читает по байтам, используют один и тот же вызов safe_open () , поэтому есть на самом деле не должно быть никакой разницы между тем, что они способны вернуть. Это говорит о том, что использование GNU-реализации head (которая обычно встречается в большинстве невстроенных операционных систем, использующих Linux) вполне безопасно.

Однако похоже, что он работает правильно, если вы укажете ему работать с байтами вместо строк (из man head ):

  -c, --bytes=[-]NUM
          print  the  first  NUM bytes of each file; with the leading '-',
          print all but the last NUM bytes of each file

С параметром -c он похоже, создает идентичные файлы:

$ wc -c /bin/ls
126496 /bin/ls
$ head -c 126496 /bin/ls > a
$
$ md5sum /bin/ls a
42846aa64774a99f0f1feba36ec2e099  /bin/ls
42846aa64774a99f0f1feba36ec2e099  a

Это также тот же результат, что и результат dd :

$ dd if=/bin/ls of=a bs=126496 count=1
1+0 records in
1+0 records out
126496 bytes (126 kB, 124 KiB) copied, 0.000469919 s, 269 MB/s
$ diff a /bin/ls
$

Я не могу указать на какую-либо официальную документацию, в которой указывается, что при использовании - c , он всегда будет производить правильный двоичный вывод, но это кажется разумным предположением.

0
23.04.2019, 19:43
1 ответ

zypperне может очистить(удалить пакет и конфигурацию )действие, подобное apt/aptitude. Этот факт не упоминается ни на одной странице manв системе SUSE.

Цитата:

...a program removing user's files is not a good idea.

Таким образом, вы должны вручную удалить все файлы конфигурации с помощью инструмента rm.

0
28.01.2020, 03:47

Теги

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