Будет проще использовать сопоставитель устройств, выполняющий линейное переназначение на базовый диск и монтируя оттуда, поскольку затем вы можете имитировать сбой диска, переключая сопоставитель устройств, чтобы вернуть цель ошибки (например, через использование dmsetup wipe_table
). См. https://unix.stackexchange.com/a/144200/134856 для получения информации об этом и других (например, об использовании scsi_debug
) методах моделирования ошибок диска.
Нет. Но тогда ls
не имеет способа перечислить окончание файла .jpg
с учетом регистра или примечания. Это оболочка, которая преобразует *.jpg
в список файлов и передает этот список в ls
. Попробуйте echo *.jpg
, чтобы получить некоторое представление о том, что делает оболочка.
Вы можете использовать find
:, например.find. -iname "*.jpg" -o -iname "*.jpeg"
или используйте grep, например.ls | grep -iE "[.]jpe?g$"
или настроить вашу оболочку на нечувствительные к регистру символы:shopt -s nocaseglob
(Это работает в Bash, см. Как сопоставить нечувствительные к регистру шаблоны с помощью ls? для решений для других оболочек.)
Обратите внимание, что не ls
расширяет подстановочные знаки, а оболочка.
bash
может сделать все свои глобусы нечувствительными к регистру с помощью опции nocaseglob
, но, в отличие от ksh93
или zsh
, не имеет оператора глобуса для наличия одного глобуса или части одного глобуса, нечувствительного к регистру.
Тем не менее, вы всегда можете:
ls -ld -- *.[jJ][pP][gG]
Что также имеет то преимущество, что не оставляет на усмотрение локали решение о том, что является вариантом нижнего или верхнего регистра данной буквы (, например, является ли вариант верхнего регистраgif
GIF
или GİF
? ).
Или с опцией extglob
, чтобы также покрытьjpeg
:
ls -ld -- *.[jJ][pP]?([eE)[gG]
С zsh
и с опцией extendedglob
(set -o extendedglob
):
ls -ld -- *.(#i)jp(e|)g
Сksh93
:
ls -ld -- *.~(i)jp?(e)g
Или:
ls -ld -- *.~(i:jp?(e)g)