Команда ls не работает в домашнем каталоге

305
rama

Команда ls отлично работает для меня во всех других каталогах, кроме моего домашнего каталога, где я получаю следующую ошибку:

* Выход с кодом 1, результат не найден, командная строка была: ?? найдите -b -i [\ ^ g] * g [\ ^ a] * a [\ ^ r] * r [\ ^ b] * b [\ ^ a] * a [\ ^ g] * g [\ ^ e] * e [\ ^.] * \. [\ ^ c] * c найти: недопустимая опция - b

Я передавал --color в качестве опции для ls в моем .bash_profile, но я избавился от всех настроек цвета в .bashrc и .bash_profile, предполагая, что проблема была связана с '-' в --color. Я также переустановил пакет coreutils, но безрезультатно. Любая помощь будет оценена. Благодарю.

1
У вас есть `.` в вашем` $ PATH` и файл с именем `ls` в вашем домашнем каталоге? (Совет: попробуйте `echo *`, чтобы вывести список файлов, когда `ls` сломан.) Spiff 5 лет назад 0
Также вы можете `cd` куда-нибудь еще и затем сделать` ls $ HOME` оттуда? Мне интересно, проблема в том, в каком каталоге вы находитесь (ваш текущий рабочий каталог при запуске `ls`), или в каком каталоге вы пытаетесь перечислить. Spiff 5 лет назад 1
Какую строку запуска вы используете? Проверьте, что запускает `ls`, введя` type -a ls`, как в своем домашнем каталоге, так и в другом, где он работает, как ожидалось. AFH 5 лет назад 0
@ Спифф, у меня есть '.' в моей переменной $ PATH. Когда я говорю «echo $ PATH», я вижу «.» в Python.framework. Выполнение ls $ HOME приводит к той же ошибке. rama 5 лет назад 0
@AFH type -a ls возвращает "ls is / bin / ls" rama 5 лет назад 0
ОБНОВЛЕНИЕ: Несмотря на то, что 'ls' выдает ошибку, он перечисляет все мои файлы, включая каталоги. Я могу также передавать другие флаги в ls, НО все перечислено в одном столбце, независимо от размера моего окна терминала - поведение, которое не распространено при запуске ls в папках, отличных от моего домашнего каталога. rama 5 лет назад 0
`ls` выберет ширину столбца в соответствии с самым длинным именем файла, поэтому ему нужно только одно длинное имя файла, превышающее половину ширины терминала, и все будет отображаться в одном столбце. Я не могу понять, откуда приходит сообщение об ошибке, если в качестве имени файла не была использована предыдущая строка ошибки, а не скопирована в файл журнала - если это так, команда @ spiff `echo *` покажет то же сообщение. AFH 5 лет назад 0
@AFH echo * показывает то же сообщение об ошибке, и у меня нет файла с именем 'ls' в моем домашнем каталоге. rama 5 лет назад 0
Я думаю, что это проблема - у вас есть файл с таким именем в вашем домашнем каталоге, и его длинное имя обеспечивает использование списка из одного столбца. AFH 5 лет назад 0
Я не могу увидеть ни одного файла с именем 'ls', хотя я также перечисляю скрытые файлы. Самое длинное имя в моей домашней папке - это имя каталога, и оно там уже давно. rama 5 лет назад 0
Do `ls> / dev / null; echo $? `- каков результат? Если результат «0», то я подозреваю, что AFH прав. Что делать, если вы делаете `ls | grep -v "Выход с кодом 1" `? glenn jackman 5 лет назад 1
@glennjackman результат первой команды равен 0. Вывод второй команды: https://imgur.com/a/n7lLcLL rama 5 лет назад 0
У вас есть 2 файла со странными именами. Чтобы удалить их: `rm -i ./*"Exit с кодом 1" * ./*"locate: недопустимая опция "*` - это может быть один файл с новой строкой в ​​имени, трудно сказать. glenn jackman 5 лет назад 1
@glennjackman ответ - нет такого файла или каталога. я попытаюсь переименовать все файлы и папки в моем домашнем каталоге, чтобы удалить все символы новой строки. rama 5 лет назад 0
ОБНОВЛЕНИЕ № 2: Спасибо всем, я использовал ls -li, чтобы вывести список всех файлов с их номером инода, и использовал 'find. -inum [inode-number] -exec rm -i {} \; ' удалить файл. Я не знаю, какой файл я удалил, и не могу оценить его важность, но это так. Я вернулся к нормальной жизни. Еще раз спасибо за ваше время и поддержку. rama 5 лет назад 1

0 ответов на вопрос

Похожие вопросы