В вашем коде есть синтаксические проблемы. В тесте:
после[
и перед ]
должен быть пробел. read -p "What is your name?:" ANSWER
if [ "$ANSWER" == "root" ]; then
echo 'Hello, administrator'
else
printf 'Hello, %s\n' "$ANSWER"
fi
Кроме того, вы можете использовать утилиту id
для получения UID пользователя. Пользователь root всегда имеет нулевой UID :
if [ "$(id -u)" -eq 0 ]; then
echo 'Hello, administrator'
else
printf 'Hello, %s\n' "$(id -u -n)"
fi
id -u
вернет UID текущего пользователя в виде положительного целого числа, а id -u -n
вернет имя пользователя. Вы также можете использовать $USER
или $LOGNAME
для печати имени пользователя, но для сравнения безопаснее использовать номер UID ().
Оболочка bash
также хранит UID текущего пользователя в $UID
, поэтому в bash
вы можете написать
if [ "$UID" -eq 0 ]; then
echo 'Hello, administrator'
else
printf 'Hello, %s\n' "$USER"
fi
Просто вы можете просто использовать ssh, а затем (сначала убедиться, что вы находитесь в правильном каталоге, или указать ПОЛНЫЙ ПУТЬ к каталогу! ):rm wp-content/uploads/2019/01/*.jpg.webp
Но если файлов много, все может усложниться. Файл *.jpg.webp
расширяется в длинный список имен в bash, и он отказывается правильно передать команду rm
.
В качестве запасного варианта вы можете использовать команду find
для поиска и выполнения команды для искомых файлов.
find wp-content/uploads/2019/01/ -name '*.jpg.webp' -maxdepth 1 -exec rm {} +
Это переводится в следующие части:
find wp-content/uploads/2019/01/
просмотреть содержимое каталога. -name '*.jpg.webp'
поиск файлов с именами, оканчивающимися на .jpg.webp
. -maxdepth 1
говорит, что find должен углубляться только на 1 уровень (, который является текущим каталогом, который он использует ). ВАЖНО :это работает, только если удаленная машина использует Linux или иным образом имеет GNU find
. -exec rm {} +
означает выполнение rm
для каждого найденного файла; +
группирует файлы в пакеты, чтобы выполнять меньше команд.