Ответ Горо будет работать, но следует отметить, что подстановка команды удаляет завершающие символы новой строки, как указано в стандарте POSIX . Таким образом, это может быть нежелательно, когда вы хотите фактически перебрать все символы, даже не -печатные. Другая проблема заключается в том, что стиль цикла C -используется в bash и ksh93, но не в стандарте (, также известном как POSIX -, совместимый)/bin/sh
. Форма расширения параметра ${variable:index:offset}
также является типом башизма и не специфицируется определениями расширения параметра POSIX (, хотя и поддерживается ksh93
иzsh
).
Тем не менее, есть способ перебирать все символы в файле переносимым и гораздо более практичным способом . Это использоватьawk
:
# all characters on the same line
$ awk '{for(i=1;i<=length;i++){ printf "%c",substr($0,i,1); system("sleep 1");}; print}' input.txt
# all characters on separate lines
$ awk '{for(i=1;i<=length;i++){ print substr($0, i, 1); system("sleep 1"); }}' input.txt
С помощью этой команды substr()
и system()
оба указываются в POSIX awk и фактически перебирают все символы.
mdadm --create
не пытается смонтировать MD-массив, он создает новый, поэтому любая файловая система, которая была на sdc
и sdd
до этого, была уничтожена.
Если у вас были btrfs с btrfs RAID (a не btrfs поверх MD RAID )на дисках ранее, метаданные btrfs были заменены метаданными MD, и поскольку вы создали RAID 1, он выполнил первоначальную повторную синхронизацию, уничтожив даже больше данных, сохраненных там.
Возможно, вам удастся сохранить некоторые данные с помощью btrfs restore (, но это крайне маловероятно )или с помощью таких инструментов восстановления данных, как photorec и testdisk .