Получение неожиданного вывода из команды rename

Из файла EncryptedPrivateDirectory wiki: Мы можем остановить ecryptfs от разблокировки частной папки при запуске, удалив пустой файл auto-mount, который находится в ~/.ecryptfs/, где вы также можете удалить [ f3], если вы хотите, чтобы ecryptsfs прекратили размонтирование частной папки после выключения и выхода из системы.

UPDATE: чтобы устранить проблему, когда ~/Private монтируется без использования пароля, следуйте инструкциям в этом EncryptedPrivateDirectory :

Мы можем остановить ecryptfs от разблокировки частной папки при запуске, удалив пустой файл auto-mount, который находится в ~/.ecryptfs/, где вы также можете удалить файл auto-umount, если вы хотите, чтобы ecryptsfs прекратили размонтирование частной папки при завершении работы и выйдите из системы.

Я читал статью об ecryptfs (http://ecryptfs.sourceforge.net/ecryptfs-pam-doc.txt) и обнаружил, что PAM участвует и, таким образом, начал искать в /etc/pam.d / и нашел 2 файла, которые необходимо изменить: /etc/pam.d/common-auth /etc/pam.d/common-session Сделайте следующее в качестве пользователя root, но сначала сделайте резервную копию в каталоге OUT из этого каталога, например ~/, или он, возможно, запустит резервную копию, которая не изменена , В /etc/pam.d/common-session найдите строку, в которой говорится: auth optional pam_ecryptfs.so unwrap и прокомментируйте это как: #auth optional pam_ecryptfs.so unwrap В /etc/pam.d/common-auth найдите строку, в которой говорится: session optional pam_ecryptfs.so unwrap и прокомментируйте это как #session optional pam_ecryptfs.so unwrap Оба файла должны быть изменены , Файл общей сессии является причиной того, что фактически устанавливается, а common-auth распаковывает кодовую фразу. Если только общий сеанс закомментирован (как я пытался в первую очередь), все, что нужно сделать, это ввести ecrypt-mount-private и он будет монтироваться без кодовой фразы входа. Это не хорошо. Таким образом, common-auth необходимо изменить, чтобы предотвратить загрузку развернутой кодовой фразы в ядро. Остановитесь на этом, что ЭТО НАПРАВЛЯЕТ ВСЕ ПОЛЬЗОВАТЕЛЕЙ. Я только что открыл выше, укоренив себя, и это удовлетворяет мои потребности. Однако для многопользовательской системы для новичков это будет усложняться, так как Private не будет автоматически монтироваться. Возможно, существует способ предотвратить это на уровне пользователя (не на системном уровне), но я не знаю, как это сделать. Надеюсь, это поможет кому-то в будущем. Твой, Нарни

OK «Люди», вот истинное исправление.

0
задан 27 March 2018 в 01:46

3 ответа

Не смешивайте код оболочки и Perl в команде rename; это все о Perl. Используйте это:

rename -n 's/cropped(\d+)/$1 + 20/e' cropped*.jpg

Удалите переключатель -n, когда вывод выглядит хорошо.

Если вы настаиваете на использовании своего грязного пути, не делайте этого используйте glob *, но текущий файл и современную оболочку:

for i in {1..20}; do
    test -s "cropped$i.jpg" && rename "s/cropped$i/$(($i + 20))/" "cropped$i.jpg"
done

Я удалил expr, он устарел.

Если вы выполните следующую команду

$ file "$(readlink -f "$(type -p rename)")"

, и у вас есть результат, который содержит Perl script, ASCII text executable и не содержит ELF, тогда это кажется правильным инструментом =)

Если нет, чтобы сделать его по умолчанию (как правило, уже в случае):

$ sudo update-alternatives --set rename /path/to/rename

Замените /path/to/rename на путь вашего исполняемого файла Perl rename.

Если у вас нет этой команды, найдите своего диспетчера пакетов, чтобы установить его или выполнить это вручную (без депо ...)

1
ответ дан 22 May 2018 в 11:46
  • 1
    Это дает мне правильный результат. Спасибо за это. Но почему команда с -n показывает несколько строк для того же файла. Это будет действительно полезно, если вы объясните сделанные вами изменения, что они делают в этой команде и что было не так в моих? – Ujjwal Gupta 27 March 2018 в 00:55
  • 2
    Ответ на этот вопрос в первой строке моего ответа – Gilles Quenot 27 March 2018 в 01:02
  • 3
    @UjjwalGupta Если это было непонятно, это потому, что glob соответствует каждому файлу для каждого цикла в вашей команде. – wjandrea 27 March 2018 в 01:21

Не смешивайте код оболочки и Perl в команде rename; это все о Perl. Используйте это:

rename -n 's/cropped(\d+)/$1 + 20/e' cropped*.jpg

Удалите переключатель -n, когда вывод выглядит хорошо.

Если вы настаиваете на использовании своего грязного пути, не делайте этого используйте glob *, но текущий файл и современную оболочку:

for i in {1..20}; do test -s "cropped$i.jpg" && rename "s/cropped$i/$(($i + 20))/" "cropped$i.jpg" done

Я удалил expr, он устарел.

Если вы выполните следующую команду

$ file "$(readlink -f "$(type -p rename)")"

, и у вас есть результат, который содержит Perl script, ASCII text executable и не содержит ELF, тогда это кажется правильным инструментом =)

Если нет, чтобы сделать его по умолчанию (как правило, уже в случае):

$ sudo update-alternatives --set rename /path/to/rename

Замените /path/to/rename на путь вашего исполняемого файла Perl rename.

Если у вас нет этой команды, найдите своего диспетчера пакетов, чтобы установить его или выполнить это вручную (без депо ...)

1
ответ дан 17 July 2018 в 18:02

Не смешивайте код оболочки и Perl в команде rename; это все о Perl. Используйте это:

rename -n 's/cropped(\d+)/$1 + 20/e' cropped*.jpg

Удалите переключатель -n, когда вывод выглядит хорошо.

Если вы настаиваете на использовании своего грязного пути, не делайте этого используйте glob *, но текущий файл и современную оболочку:

for i in {1..20}; do test -s "cropped$i.jpg" && rename "s/cropped$i/$(($i + 20))/" "cropped$i.jpg" done

Я удалил expr, он устарел.

Если вы выполните следующую команду

$ file "$(readlink -f "$(type -p rename)")"

, и у вас есть результат, который содержит Perl script, ASCII text executable и не содержит ELF, тогда это кажется правильным инструментом =)

Если нет, чтобы сделать его по умолчанию (как правило, уже в случае):

$ sudo update-alternatives --set rename /path/to/rename

Замените /path/to/rename на путь вашего исполняемого файла Perl rename.

Если у вас нет этой команды, найдите своего диспетчера пакетов, чтобы установить его или выполнить это вручную (без депо ...)

1
ответ дан 23 July 2018 в 18:53

Другие вопросы по тегам:

Похожие вопросы: