Ошибка фиксации сигнала 13 (SIGPIPE) для поиска и grep-конвейера

У меня есть ситуация, когда я пытаюсь установить программное обеспечение в свою систему.

Я использую подход fakeroot, чтобы установить их в отдельный каталог, где я перечисляю все файлы, каталоги и ссылки, которые они устанавливают, в три файла FILES , DIRS , LINKS .

Затем я использую find для получения хэшей SHA1 всех файлов в файле с именем sha1sums . Мне не нужен хэш файла sha1sums . Поэтому я использовал эту команду

  find . -type f -exec sha1sum {} \; | grep -ve "\./sha1sums$" >sha1sums 

Это отлично работает. Однако при установке kbd-2.0.3 он выдал много строк ошибок,

  find: 'sha1sum' terminated by signal 13 

Я знаю, что сигнал 13 является сигналом SIGPIPE («Broken Pipe»). Но у меня нет двух вещей:

  1. Почему это происходит только с этим пакетом?
  2. Вероятно, это связано с тем, что grep закрывает трубу чтения. Но почему он закрывает его?

One Solution collect form web for “Ошибка фиксации сигнала 13 (SIGPIPE) для поиска и grep-конвейера”

Я не могу воспроизвести вашу проблему с версиями GNU всех утилит, которые вы используете, и с моими родными утилитами OpenBSD.

Однако, вместо того, чтобы sha1sums имя файла sha1sums с помощью sha1sums через grep , вы можете вообще не sha1sums вычисление SHA1 для этого файла:

 find . -type f ! -name sha1sums -exec sha1sum {} + >sha1sums 

Тест negated -name удалит имя файла из списка имен, переданных в sha1sum .

Кроме того, утилита будет вызываться с максимально возможным количеством файлов за один раз, а не один раз для каждого имени, благодаря + в конце.

Поскольку это не использует конвейер, проблема с SIGPIPE не будет.

  • Я получаю ошибку «команда не найдена», хотя файл сценария отображается как «ls»,
  • Возможно ли зацикливание
  • ошибка сценария bash stty: стандартный ввод: несоответствующий ioctl для устройства
  • Применить фильтр к значению переменной с использованием обратных ссылок
  • Как запустить скрипт bash из сценария sh (dash)?
  • Поиск и замена имени пути в Linux с помощью sed
  • Сортировка и группирование доменов и поддоменов
  • Огромная задержка в ответе скрипта при использовании SFTP с ожиданием
  • Как создать временный файл в сценарии оболочки?
  • скрипт для удаления файлов, если нет соответствующего файла с тем же именем, но другого расширения в другом подкаталоге
  • вставить значение в конце каждой записи на основе уникальных идентификаторов
  • Interesting Posts

    Как использовать Ctrl + щелчок мыши в tmux?

    Как найти, какой последовательный порт используется?

    Коды ошибок для сторожевого демона

    Почему большинство обычных менеджеров пакетов Linux не позволяют устанавливать пакет для обычных пользователей?

    Bash decimal для двоичного преобразования

    Как связать префикс tmux с Super?

    Почему встроенные новые строки в расширении команды заменены пробелами?

    Чтение файлов .desktop программно

    Какой заголовок определяет макрос, определяющий архитектуру машины?

    Нужно ли мне как минимум 3 машины для работы на CoreOS?

    Изменить приглашение на основе значения

    Использование Verbose в работе cron

    Является ли динамический DNS единственным возможным способом установления соединения между двумя маршрутизаторами с временными IP-адресами?

    Как переименовать все файлы и добавить размер изображения в имя файла

    awk в ssh в su в подстановке команд

    Linux и Unix - лучшая ОС в мире.