Как я вижу в этом сценарии. Он просто проверяет, включен ли sudo, вот и все..
true просто возвращает true.
Таким образом, в этом случае, если им нужно запустить какую-либо команду с помощью sudo, он сначала проверяет при запуске, запрашивая пароль только один раз.
Условие работает следующим образом :Если sudo правильно выполняет команду true, она вернет true для условия if,тогда sudo включен и пользователь ввел пароль правильно, иначе вы ввели неправильный пароль или sudo не включен, сценарий не должен продолжаться.
Другим командам не нужно спрашивать пароль sudo, потому что ваша аутентификация прошла успешно с первого раза (но это зависит от конфигурации sudo, поэтому эти скрипты сильно зависят от конфигурации среды)
Это также демонстрирует эхо-пароль. сценарий оболочки больше не будет запрашивать пароль.
Первый s/
, последний /
и неэкранированный /
в середине — это оператор замены и разделители, поэтому у нас есть шаблон (.*)\/([^\/]*)
и замена $1\/\L$2
.
В (.*)\/([^\/]*)
первый (.*)\/
соответствует всему до последней косой черты, то есть пути перед окончательным именем файла. Последний ([^\/]*)
затем соответствует чему угодно, кроме косой черты до конца строки.
В замене $1
возвращает то, что соответствует первой группе захвата в скобках, это и есть путь. Затем \L
переводит в нижний регистр следующую часть, вторую захваченную группу $2
или имя файла.
Конечным результатом здесь является то, что строчные буквы применяются только к последней части имени файла, поэтому, например. dir/OTHERDIR/FOO.txt
превращается в dir/OTHERDIR/foo.txt
, а не в dir/otherdir/foo.txt
. Прямое переименование последнего не сработает, так как dir/otherdir
, вероятно, не существует.
Однако... я думаю, ты мог бы просто бежать:
find. -depth -execdir rename 'y/A-Z/a-z/' {} +
"$(pwd)"
(или, проще говоря,"$PWD"
)работает только для того, чтобы заставить find
создавать абсолютные пути вместо относительных, но в этом нет необходимости. -execdir
запускает rename
отдельно в каждом каталоге, а не все на основном уровне, избавляясь от проблемы работы с полными путями. А {} +
вместо {} \;
позволяет find
давать более одного файла при каждом вызове переименования.
Хотя обратите внимание, что все это, вероятно, работает только для 26 букв ASCII,не для остальных символов, встречающихся в реальных языках (, например. атри ).