Ошибка No such file or directory
No such file or directory (в русской системе — «Нет такого файла или каталога») значит, что по указанному пути ничего нет. Почти всегда путь написан не так, как на самом деле. Проверьте по порядку.
Путь и регистр
- Где вы сейчас? Относительный путь (без
/в начале) отсчитывается от текущей папки. Выполнитеpwdиls: есть ли файл именно здесь. - Регистр букв.
Report.txt,report.txtиREPORT.TXT— три разных имени. - Набирайте через Tab. Если Tab не дописывает имя, такого файла по этому пути нет — ищите опечатку.
- Где файл на самом деле?
find ~ -name "report*"— справка Как найти файл по имени в Linux.
Пробелы и тильда
Имя с пробелами без кавычек разваливается на части: cd Рабочий стол ищет папку «Рабочий». Правильно:
cd "Рабочий стол"
cd Рабочий\ стол
cd ~/"Рабочий стол"Тильда ~ внутри кавычек не превращается в домашнюю папку: cd "~/Рабочий стол" ищет папку с именем ~. Ставьте ~ снаружи кавычек, как в третьей строке, или пишите "$HOME/Рабочий стол".
Скрипт: bad interpreter
bash: ./script.sh: /bin/bash^M: bad interpreter: No such file or directoryСкрипт сохранён в Windows, и в конце каждой строки стоит лишний символ возврата каретки (он показан как ^M). Система ищет программу /bin/bash с этим символом в имени и не находит. Исправить:
sed -i 's/\r$//' script.shИли командой dos2unix script.sh из одноимённого пакета. Та же ошибка без ^M значит, что в первой строке скрипта указана программа, которой нет: например, #!/usr/bin/python там, где есть только python3.
Файл есть, а ошибка всё равно
- Битая ссылка.
ls -lпоказываетимя -> цель, а самой цели уже нет. Посмотрите, куда ведёт ссылка, и создайте её заново:ln -sfn /новый/путь имя. - Программа для другой системы. Если
lsфайл видит, а запуск./programпишетNo such file or directory, программа может быть собрана для другого процессора или требовать отсутствующих системных библиотек. Что это за файл, показывает командаfile program. - Папку удалили и создали заново, пока вы в ней стояли. Терминал «висит» в удалённой папке — выполните
cdв неё ещё раз.