У меня есть команда, которая работает при запуске от имени текущего пользователя, но если я добавлю к команде префикс sudo , это выдаст мне ошибку.
Я пытаюсь удалить файл, если это каталог (но не если это символическая ссылка на каталог). Это прекрасно работает:
brad@ip-10-0-0-1:~$ [[ -d /path/to/my/place && ! -L /path/to/my/place ]] && rm -rf /path/to/my/place
Но если я пытаюсь использовать sudo чтобы сделать это как суперпользователь, я получаю сообщение об ошибке, потому что кажется, что sudo [[ это команда:
brad@ip-10-0-0-1:~$ sudo [[ -d /path/to/my/place && ! -L /path/to/my/place ]] && rm -rf /path/to/my/place
sudo: [[: command not found
Мне пришлось добавить двойные скобки, чтобы получить ! -L /path/to/my/place бит для работы; sudo работал нормально с одинарными скобками, когда я работал
brad@ip-10-0-0-1:~$ sudo [ -d /path/to/my/place ] && rm -rf /path/to/my/place
Но теперь, когда я пытаюсь убедиться, что это не символическая ссылка, я не могу заставить ее работать с sudo . Как я могу либо:
- Получите синтаксис двойных скобок для работы с
sudoили - Получить синтаксис с одной скобкой, чтобы я мог отменить часть
-L?
