Вы используете экранирование кавычек и обратной косой черты -. Использование только цитирования будет работать нормально.
Этого должно быть достаточно:
TEMP_DIR="$HOME/Documents/temp dir/dir with spaces"
COMMAND="rm -r $TEMP_DIR/*"
echo "Command: $COMMAND"
rm -r "$TEMP_DIR"/*
В этом случае и обратная косая черта, и кавычки должны обрабатываться оболочкой, чтобы предотвратить разделение имени каталога. Когда вы используете оба, оболочка сохранила как пробелы , так и обратную косую черту внутри кавычек, поэтому rm
фактически получает .../temp\ dir/dir\ with\ spaces/...
в аргументах, где вместо этого должно было быть .../temp dir/dir with spaces/...
.
Когда вы копируете напечатанную команду, оболочка видит обратную косую черту без дополнительных кавычек, поэтому она сохраняет пробелы, защищенные обратной косой чертой, и удаляет обратную косую черту, поэтому rm
получает .../temp dir/dir with spaces/...
в аргументах.
Если у вас нет записи о том, какие разрешения были до внесения изменений, то вам не повезло. Разрешение на этой папке сложное.
ЕСЛИу вас есть запись разрешений, то вы можете восстановить их файл -по файлу -, если хотите, после перехода на пользователя root, выполнив команду:
su root
Я бы просто переустановил.