for f in./*; do ls./* | wc -l $f; done
Это устанавливает f
для всех имен файлов в текущем каталоге(./*
)по очереди. Для каждого из них он снова запускает ls
со всеми именами файлов в текущем каталоге, направляя вывод в wc -l $f
. Теперь wc -l
подсчитывает строки в файлах, переданных в качестве аргументов, и смотрит на стандартный ввод только в том случае, если их нет. Таким образом, канал здесь игнорируется wc
и пытается прочитать любой файл, названный в f
, терпя неудачу, если это каталог.
Я подозреваю, что вы хотите что-то вроде этого
for f in./* ; do ls "$f" | wc -l ; done
Который запустит ls
в каталоге, указанном в f
, а затем подсчитает строки в нем. Но ls
может игнорировать файлы, имена которых начинаются с точки(ls -A
также перечисляет их, пропуская .
и ..
),и глобус также может соответствовать обычным файлам (, если они есть в этом основном каталоге ).
Но вам вообще не нужны ls
или wc
. OS X должен иметь Bash, где это должно работать:
shopt -s dotglob # '*' matches files with a leading dot, too
for f in./*/ ; do # trailing slash only picks directories
set -- "$f"/* # fill the positional params with the filenames in the dir
echo "$f $#" # print the directory name and number of params/files
done
Чтобы зашифрованный раздел монтировался автоматически, сначала необходимо /etc/crypttab
правильно настроить его. В вашем случае это означает такую строку:
home /dev/sda3 none luks
(Здесь я предполагаю, что вы использовали LUKS; если вы использовали другой режим cryptsetup
, два последних параметра в строке могут быть другими.)
Это должно заставить систему запрашивать кодовую фразу шифрования во время загрузки, чтобы разблокировать зашифрованный том и создать /dev/mapper/home
устройство для доступа к нему через уровень шифрования. Прежде чем продолжить, загрузитесь один раз, чтобы убедиться, что это действительно работает.
Затем вам понадобится строка в /etc/fstab
для его монтирования:
/dev/mapper/home /home ext4 defaults 0 2
Как в /etc/crypttab
, так и в /etc/fstab
у вас будет возможность использовать синтаксис UUID=
вместо соответствующего имени устройства. Обратите внимание, что UUID файловой системы /home (, просматриваемый через /dev/mapper/home
для монтирования ), крайне маловероятен, чтобы совпадать с UUID зашифрованного контейнера /dev/sda3
.