Различия в статусе выхода grep и zgrep для нескольких файлов

Должен ли он быть ext4?

Если возможны альтернативы, вы можете попытать счастья с

  • mksquashfs, создает сжатую файловую систему -только для чтения из пользовательского пространства
  • mkisofs создает файловую систему -только для чтения, обычно используемую для оптических носителей
  • cpio, tar,... архивы, которые необходимо распаковать в первую очередь

В противном случае, чтобы воплотить ext4в пользовательском пространстве реальность, необходимо

  • сойти с умаdebugfs
  • загрузите ядро ​​в виртуальной машине пользователя
  • Найдите другую чистую утилиту пользовательского пространства, которая знает, как обрабатывать изображения ext4

Что касается debugfs, в большинстве файловых систем даже нет таких утилит, вам повезло.

Сеанс пользователя:

$ truncate -s 64M app.ext4
$ /sbin/mkfs.ext4 app.ext4
Creating filesystem with 65536 1k blocks and 16384 inodes
$ /sbin/debugfs -w app.ext4
debugfs:  mkdir this_is_crazy
debugfs:  cd this_is_crazy
debugfs:  write /proc/config.gz config.gz
Allocated inode: 13

Корневой сеанс:(просто для проверки, работает ли он)

# mount -o loop app.ext4 loop/
# cd loop/
# ls
lost+found  this_is_crazy
# md5sum this_is_crazy/config.gz /proc/config.gz 
7b414ad844272a9e3c31931037fe0495  this_is_crazy/config.gz
7b414ad844272a9e3c31931037fe0495  /proc/config.gz

Итак, это возможно, и это работает.

Тем не менее, наиболее практичным вариантом все равно должно быть использование root каким-либо образом.

3
05.09.2019, 22:31
1 ответ

Вы можете получить исходный код изhttps://savannah.gnu.org/git/?group=gzip. Код возврата был изменен в совершатьd2a1928e5534017456dc8a3b600ba0b30cce4a6e:

commit d2a1928e5534017456dc8a3b600ba0b30cce4a6e
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Jun 12 18:43:08 2014 -0700

    zgrep: exit with status 0 if a file matches and there's no trouble

    Reported by Pavel Raiskup in: http://bugs.gnu.org/17760
    * zgrep.in (res): Treat exit status 0 to be greater than 1.
    Also, exit immediately on software configuration error.

Сообщение о фиксации содержит ссылку на отчет об ошибке :https://debbugs.gnu.org/cgi/bugreport.cgi?bug=17760

Вы легко можете проверить это сами. С zgrep, построенным из вышеперечисленного совершать:

$ /media/data/gzip-install-newer/bin/zgrep --version
zgrep (gzip) 1.6.17-d2a1
Copyright (C) 2010-2014 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by Jean-loup Gailly.
$ /media/data/gzip-install-newer/bin/zgrep -q abc /tmp/foo[12]
$ echo $?
0

С zgrep, созданным из предыдущей фиксации:

$ /media/data/gzip-install/bin/zgrep --version
zgrep (gzip) 1.6.16-ed8c
Copyright (C) 2010-2014 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by Jean-loup Gailly.
$ /media/data/gzip-install/bin/zgrep -q abc /tmp/foo[12]
$ echo $?
1
2
27.01.2020, 21:24

Теги

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