Невозможно удалить знак $ из названий файлов с помощью Linux?

Невозможно удалить знак $ из названий файлов с помощью Linux?

Вот моя 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". Затем вы можете проверить перед удалением.

Связанный контент