Опция -e
принимает аргумент, строку, которая будет оцениваться как код Perl. Когда вы используете perl -lne '...'
и perl -nle '...'
, это работает так, как предполагалось, поскольку порядок параметров не важен (в этом случае ).
Однако, когда вы используете perl -nel '...'
, вы говорите «вычислить строку l
как код Perl и использовать '...'
как имя файла, который будет считан этим кодом», что не имеет особого смысла (вот почему вы получаете эту странную ошибку «Нет такого файла или каталога» ).
Таким образом, нет, порядок опций не важен (здесь ), но если вы перемещаете опцию -e
, вы должны переместить аргумент опции -, код Perl, с так, чтобы код Perl всегда шел сразу после этой опции.
Таким образом, если вы хотите, например, поставить параметр -e
первым, используйте
perl -e '...' -ln
Порядок параметров до perl
важен, если вы смешиваете такие параметры, как -p
и -n
в одной командной строке. Опция -p
будет переопределена более поздней опцией -n
и наоборот, поэтому perl -np
совпадает с perl -p
, а perl -pn
совпадает с perl -n
. Это описано в руководстве perlrun
(, см. man perlrun
или perldoc perlrun
).
Расчет кажется довольно простым :если размер блока не выбран пользователем, по умолчанию используется размер страницы (, поэтому 4096 )или размер логического сектора устройства, если он больше размера страницы (] есть еще несколько исключений, но это должно охватывать большинство случаев ).
Источник e2fsprogs
доступен здесь , а код, устанавливающий размер блока в mke2fs
, — здесь .