Я настраивал облачный сервер и видел, что я случайно добавил папку с именем ^[[4~ (с escape-кодом). Я хочу посмотреть, что внутри, и если это была просто ошибка, тогда удалите этот каталог. Однако я не могу cd и ls содержимое. Я попытался выяснить код выхода, чтобы я мог ввести команду, подобную cd \x1b[30m;, и надеюсь, что она доставит меня в каталог.
Что делать, если я должен был cd или удалить, выполнив поиск первый каталог, указанный в ls. Это возможно? Потому что, когда я делаю ls |grep 4, появляются два результата, и один из них - тот, к которому я пытаюсь получить доступ.
Либо узнайте имя папки в escape-строке, либо измените каталог на первый каталог ls найти может быть решением здесь. Как я могу подойти к этой проблеме?
$ ls -b
# \033[4~
Удалить по: rmdir -v `echo -e "\033[4~"`
Я не знаю, работает ли это для специальных символов, но стоит попробовать. Попробуйте запустить
ls -d */ | grep -n "" | more
в родительской папке; это печатает все его каталоги, которым предшествует число и двоеточие : (что-то вроде 1:folder1 2:folder2 ...). Найдите номер, соответствующий вашей папке, а затем запустите следующую строку (замените ${num} на номер)
cd $(ls -d */ | grep -n "" | grep "^${num}:" | cut -d: -f2)
или, возможно, с кавычками:
cd "$(ls -d */ | grep -n '' | grep ^${num}: | cut -d: -f2)"
ls -d */ перечисляет все каталоги grep -n "", соответствующие всем строкам, содержащим "", т.е. каждый, а опция -n перечисляет каждый из них grep "^${num}:" печатает только ${num} -я строка, поскольку строка похожа на LineNumber:FolderName, cut -d: -f2 выбирает только FolderName ls $( ..command.. ) использует вывод ..command.. в качестве аргумента ls Попробуйте использовать кавычки.
cd "\x1b[30m;"