Я считаю, что следующий -вкладыш должен работать:
L=`grep -h "ER" * | grep -v Cheese | wc -L`; grep -h "ER" * | grep -v Cheese | grep -P ".{$L}"
Первая команда находит все строки в файлах в каталоге, содержащем «ER» (вам нужна только опция -R
, если у вас есть подкаталоги, иначе глобус *
— это все, что вам нужно ), удаляет строки с помощью Cheese, а затем находит самую длинную из этих строк с помощью команды wc -L
.
Вторая команда (увы )снова выполняет поиск соответствующих строк, но затем ищет строки максимальной длины. Вам может не понадобиться опция -P
для grep, в зависимости от вашей версии grep.
Вы неправильно поняли назначение и поведение опций -R
в useradd.
Насколько я понимаю, это не имеет никакого отношения к chrooting пользователя :этот переключатель позволяет изменять файлы аутентификации (/etc/passwd + /etc/shadow )в другом каталоге, чем /. Это может быть полезно, например, для управления пользователями контейнера LXC.
Демонстрация:
/tmp$ mkdir fakeroot
/tmp$ mkdir fakeroot/etc
/tmp$ touch fakeroot/etc/{shadow,passwd}
/tmp$ find fakeroot/
fakeroot/
fakeroot/etc
fakeroot/etc/shadow
fakeroot/etc/passwd
/tmp$ sudo useradd -R /tmp/fakeroot toto
/tmp$ cat /tmp/fakeroot/etc/*
toto:!:1000:
toto:x:1000:1000::/home/toto:
cat: /tmp/fakeroot/etc/passwd-: Permission denied
toto:!:18263:0:99999:7:::
cat: /tmp/fakeroot/etc/shadow-: Permission denied
/tmp$ grep toto /etc/passwd
/tmp$
Как видите, команда useradd изменила только файлы в каталоге /tmp/fakeroot и оставила нетронутым системный файл в каталоге /etc/