
Вот моя ls
команда, которая показывает список файлов в моем текущем каталоге:
rper: ls -l
$commandoutput[0]
file.txt
Я попытался удалить $commandoutput[0]
строку с помощью rm -rf $commandoutput[0]
, но он показывает следующую ошибку. Как мне удалить ее?
rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.
решение1
В качестве альтернативы ответу @RomanPerekhrest это также сработает:
rm '$commandoutput[0]'
так как одинарные кавычки позволят избежать расширения переменной.
Другой способ — начать вводить текст rm $
, а затем нажать Tab; оболочка автоматически дополнит имя файла, экранируя символы по мере необходимости.
решение2
Экранируйте $
(и желательно [
, ]
) имя файла с помощью обратной косой черты \
:
rm -rf \$commandoutput\[0\]
решение3
Хотя другие уже ответили на этот вопрос, другой способ сделать это — найти индекс файла и использовать find и exec delete для удаления файла.
ls -il
Пример вывода:
781956 drwx------ 3 viv viv 4096 2017-07-7 15:05 $commandoutput[0]
Первый столбец должен быть inode, в приведенном выше примере выполните:
find . -inum 781956 -exec rm -i {} \;
решение4
Другой простой способ — использовать подстановочный знак и rm -i:
rm -i *command*
Это спросит вас, хотите ли вы удалить файл для всех имен файлов, содержащих слово "command". Затем вы можете проверить перед удалением.