Нет такого файла или каталога при запуске скрипта linux
Обновлено: 21.11.2024
Текст был успешно обновлен, но возникли следующие ошибки:
прокомментировал gaia 11 декабря 2020 г. •
спасибо, извините, я не увидел это до того, как написал!
надеюсь, это не обнулит все мои настраиваемые настройки будильника!!
gaia прокомментировала 12 декабря 2020 г.
Прокомментировал LordBrud 13 декабря 2020 г.
Комментарий Ferroin от 14 декабря 2020 г.
Действительно, ручное исправление файла, как указано в вышеупомянутом коммите, должно это исправить. Другой вариант — снова запустить установщик, используя те же параметры, с которыми вы изначально установили, и добавив --reinstall (без --reinstall он попытается запустить программу обновления и застрянет в бесконечном цикле из-за той же ошибки).
gaia прокомментировала 14 декабря 2020 г.
Действительно, ручное исправление файла, как указано в вышеупомянутом коммите, должно это исправить. Другой вариант — снова запустить установщик, используя те же параметры, с которыми вы изначально установили, и добавив --reinstall (без --reinstall он попытается запустить программу обновления и застрянет в бесконечном цикле из-за той же ошибки).
Я сделал это, но проблема осталась.
Комментарий Ferroin от 14 декабря 2020 г.
@gaia Можете ли вы попробовать bash -x (с любыми дополнительными параметрами, которые вы использовали при установке, добавленными в конец) и опубликовать вывод. Это приведет к такому же сбою, но приведет к отладке самого скрипта, что должно помочь нам понять, почему именно он пытается запустить средство обновления, а не выполнить чистую установку.
gaia прокомментировала 14 декабря 2020 г.
@gaia Можете ли вы попробовать bash -x (с любыми дополнительными параметрами, которые вы использовали при установке, добавленными в конец) и опубликовать вывод. Это приведет к такому же сбою, но приведет к отладке самого скрипта, что должно помочь нам понять, почему именно он пытается запустить средство обновления, а не выполнить чистую установку.
Я делал это без -x раньше, теперь попробовал с ним. он переустанавливается нормально, я получаю предупреждение только при запуске cron. результат переустановки выглядит хорошо.
Комментарий Ferroin от 15 декабря 2020 г.
@gaia Чтобы уточнить, вы все еще видите проблему даже после переустановки?
Комментарий Ferroin от 15 декабря 2020 г.
@gaia Дальнейшее обновление, очевидно, есть ошибка в синтаксическом анализе параметров для установщика кикстарта, из-за которой он заботится о порядке переданных ему параметров. Работа над исправлением сейчас, но в краткосрочной перспективе вы сможете обойти эту проблему, указав --reinstall в качестве первого параметра вместо того, чтобы помещать его позже в список параметров.
gaia прокомментировала 15 декабря 2020 г.
@gaia Чтобы уточнить, вы все еще видите проблему даже после переустановки?
Да, переустанавливал дважды, один раз без -x . Еще:
@gaia Дальнейшее обновление, очевидно, есть ошибка в синтаксическом анализе параметров для установщика кикстарта, из-за которой он заботится о порядке переданных ему параметров. Работа над исправлением сейчас, но в краткосрочной перспективе вы сможете обойти эту проблему, поставив --reinstall в качестве первого параметра, а не позже в списке параметров.
Это был мой единственный вариант в обоих случаях.
прокомментировал darsys 18 декабря 2020 г. •
У меня была такая же исходная проблема, и я следовал инструкциям по переустановке с помощью
bash -x
Переустановка устранила проблему для меня.
прокомментировал kaplandani 20 декабря 2020 г.
когда он переходит к запуску netdata updater, он застревает в поиске, разветвляя все больше и больше процессов netdata_updater.sh
stelfrag прокомментировал 21 декабря 2020 г.
когда он переходит к запуску netdata updater, он застревает в поиске, разветвляя все больше и больше процессов netdata_updater.sh
К сожалению, возникла проблема с программой обновления (это действительно плохо, и мы сделаем все возможное, чтобы этого больше не повторилось 😞).
Пожалуйста, выполните переустановку, как описано в
stelfrag прокомментировал 21 декабря 2020 г.
удалит ли он какие-либо текущие настройки/включенные плагины? Спасибо.
Нет, это не повлияет на настройки
Установщик пытается обновить libcurl3 и удалить php5-culr, чего я не могу разрешить (на сервере установлен php5). Существуют ли какие-либо критические зависимости от версии 28, которые необходимо установить после установки версии 26? Дани
В понедельник, 21 декабря 2020 г., в 13:10 Стелиос Фрагкакис ***@***.***> написал: удалит ли он какие-либо текущие настройки / включенные плагины? Спасибо. Нет, это не повлияет на настройки — вы получили это, потому что вас упомянули. Ответьте на это письмо напрямую, просмотрите его на GitHub или отмените подписку.
stelfrag прокомментировал 21 декабря 2020 г.
Установщик пытается обновить libcurl3 и удалить php5-culr, что я не могу разрешить (на сервере установлен php5). Существуют ли какие-либо критические зависимости от версии 28, которые необходимо установить после установки версии 26? Дани
Поскольку у вас работает 1.26, 1.28 не имеет других зависимостей в отношении агента
Если вы решите сказать n команде обновления (apt-get install или эквивалентной), которая хочет обновить libcurl3 и удалить php5-curl, вы получите что-то вроде
Часть операционной системы, отвечающая за управление файлами и каталогами, называется файловой системой. Он организует наши данные в файлы, которые содержат информацию, и каталоги (также называемые «папками»), в которых хранятся файлы или другие каталоги.
Несколько команд часто используются для создания, проверки, переименования и удаления файлов и каталогов. Чтобы начать их изучение, мы перейдем к нашему открытому окну оболочки.
Здесь ответ компьютера: /Users/nelle , домашний каталог Нелли:
Вариант домашнего каталога
Путь к домашнему каталогу будет выглядеть по-разному в разных операционных системах. В Linux он может выглядеть как /home/nelle, а в Windows — как C:\Documents and Settings\nelle или C:\Users\nelle. (Обратите внимание, что он может немного отличаться для разных версий Windows.) В будущих примерах мы использовали выходные данные Mac по умолчанию — выходные данные Linux и Windows могут немного отличаться, но в целом должны быть похожими.
Мы также предполагается, что ваша команда pwd возвращает домашний каталог вашего пользователя. Если pwd возвращает что-то другое, вам может понадобиться перейти туда с помощью cd, иначе некоторые команды в этом уроке не будут работать так, как написано. Дополнительные сведения о команде cd см. в разделе Изучение других каталогов.
Чтобы понять, что такое «домашний каталог», давайте посмотрим, как организована файловая система в целом. Ради этого примера мы проиллюстрируем файловую систему на компьютере нашего ученого Нелле. После этой иллюстрации вы будете изучать команды для исследования вашей собственной файловой системы, которая будет построена аналогичным образом, но не будет полностью идентичной.
На компьютере Нелле файловая система выглядит так:
Сверху находится корневой каталог, в котором хранится все остальное. Мы обращаемся к нему, используя символ косой черты, / , сам по себе; этот символ является первой косой чертой в /Users/nelle .
Внутри этого каталога есть несколько других каталогов: bin (где хранятся некоторые встроенные программы), data (для различных файлов данных), Users (где расположены личные каталоги пользователей), tmp (для временных файлов, которые не нужно хранить в течение длительного времени) и т. д.
Мы знаем, что наш текущий рабочий каталог /Users/nelle хранится внутри /Users, потому что /Users — это первая часть его имени. Точно так же мы знаем, что /Users хранится в корневом каталоге /, потому что его имя начинается с / .
Слеши
Обратите внимание, что у символа / есть два значения. Когда он появляется перед именем файла или каталога, он относится к корневому каталогу. Когда он появляется внутри пути, это просто разделитель.
В разделе /Users мы находим по одному каталогу для каждого пользователя с учетной записью на компьютере Нелл, ее коллег imhotep и larry.
Файлы пользователя imhotep хранятся в /Users/imhotep , файлы пользователя larry — в /Users/larry , а файлы Nelle — в /Users/nelle . Поскольку Nelle является пользователем в наших примерах, мы получаем /Users/nelle в качестве нашего домашнего каталога. Как правило, когда вы открываете новую командную строку, для запуска вы оказываетесь в своем домашнем каталоге.
Теперь давайте изучим команду, которая позволит нам увидеть содержимое нашей собственной файловой системы. Мы можем увидеть, что находится в нашем домашнем каталоге, запустив ls :
(Опять же, ваши результаты могут немного отличаться в зависимости от вашей операционной системы и того, как вы настроили свою файловую систему.)
- знак / указывает, что это каталог
- @ означает ссылку
- * указывает на исполняемый файл
В зависимости от настроек вашей оболочки по умолчанию, оболочка может также использовать цвета, чтобы указать, является ли каждая запись файлом или каталогом.
Здесь мы видим, что наш домашний каталог содержит только подкаталоги. Любые имена в наших выходных данных, которые не имеют символа классификации, являются обычными старыми файлами.
Очистка терминала
Если ваш экран слишком загроможден, вы можете очистить свой терминал с помощью команды очистки. Вы по-прежнему можете получить доступ к предыдущим командам, используя ↑ и ↓ для перемещения построчно или прокручивая в своем терминале.
Получение помощи
ls имеет много других опций. Существует два распространенных способа узнать, как использовать команду и какие параметры она принимает. В зависимости от вашей среды вы можете обнаружить, что работает только один из этих способов:
-
Мы можем передать команде параметр --help (недоступно в macOS), например:
Далее мы опишем оба способа.
Опция --help
Большинство команд и программ bash, написанных для запуска из bash, поддерживают параметр --help, который отображает дополнительную информацию о том, как использовать команду или программу.
Неподдерживаемые параметры командной строки
Если вы попытаетесь использовать неподдерживаемый параметр, ls и другие команды обычно выводят сообщение об ошибке, подобное следующему:
Команда man
Еще один способ узнать о ls — ввести
Эта команда превратит ваш терминал в страницу с описанием команды ls и ее параметров.
Чтобы перемещаться по справочным страницам, вы можете использовать ↑ и ↓ для перемещения построчно или использовать B и клавишу пробела, чтобы пропустить вверх и вниз целую страницу. Для поиска символа или слова на справочных страницах используйте /, за которым следует символ или слово, которое вы ищете. Иногда поиск приводит к нескольким совпадениям. Если это так, вы можете перемещаться между ударами, используя N (для перемещения вперед) и Shift + N (для перемещения назад).
Чтобы выйти из справочных страниц, нажмите Q .
Руководства в Интернете
Конечно, есть и третий способ доступа к справке по командам: поиск в Интернете через веб-браузер. При использовании поиска в Интернете включение фразы unix man page в ваш поисковый запрос поможет найти релевантные результаты.
GNU предоставляет ссылки на свои руководства, включая основные утилиты GNU, которые охватывают многие команды, представленные в этом уроке.
Дополнительные сведения о флагах ls
Вы также можете использовать два параметра одновременно. Что делает команда ls при использовании с параметром -l? А если вы используете как параметр -l, так и параметр -h?
Некоторые из его выходных данных относятся к свойствам, которые мы не рассматриваем в этом уроке (таким как права доступа к файлам и владелец), но остальные должны тем не менее быть полезным.
Решение
Опция -l заставляет ls использовать формат длинного списка, показывающий не только имена файлов/каталогов, но и дополнительную информацию, такую как размер файла и время его последней модификации. Если вы используете как параметр -h, так и параметр -l, это делает размер файла «удобочитаемым», т. е. отображает что-то вроде 5,3 КБ вместо 5369 .
Список в обратном хронологическом порядке
По умолчанию ls перечисляет содержимое каталога в алфавитном порядке по имени. Команда ls -t перечисляет элементы по времени последнего изменения, а не по алфавиту. Команда ls -r выводит содержимое каталога в обратном порядке. Какой файл отображается последним при объединении параметров -t и -r? Подсказка: вам может понадобиться использовать параметр -l, чтобы увидеть даты последнего изменения.
Решение
Самый последний измененный файл отображается последним при использовании -rt . Это может быть очень полезно для поиска ваших последних правок или проверки того, был ли записан новый выходной файл.
Изучение других каталогов
Мы можем использовать ls не только для текущего рабочего каталога, но и для просмотра содержимого другого каталога. Давайте посмотрим на наш каталог Desktop, запустив ls -F Desktop, то есть команду ls с опцией -F и аргументом Desktop. Аргумент Desktop сообщает ls, что нам нужен список чего-то другого, кроме нашего текущего рабочего каталога:
Обратите внимание: если каталог с именем Desktop не существует в вашем текущем рабочем каталоге, эта команда вернет ошибку. Как правило, каталог Desktop существует в вашем домашнем каталоге, который, как мы предполагаем, является текущим рабочим каталогом вашей оболочки bash.
На выходе должен быть список всех файлов и подкаталогов в каталоге вашего рабочего стола, включая каталог shell-lesson-data, который вы скачали при установке для этого урока. Во многих системах каталог рабочего стола командной строки совпадает с вашим рабочим столом с графическим интерфейсом. Взгляните на свой рабочий стол, чтобы убедиться, что ваш вывод точен.
Как вы теперь видите, использование оболочки bash сильно зависит от представления о том, что ваши файлы организованы в иерархической файловой системе. Такая иерархическая организация помогает нам отслеживать нашу работу: можно поместить сотни файлов в наш домашний каталог, так же как можно сложить сотни печатных изданий на нашем столе, но это обречена на провал. р>
Теперь, когда мы знаем, что каталог shell-lesson-data находится в каталоге нашего рабочего стола, мы можем сделать две вещи.
Во-первых, мы можем просмотреть его содержимое, используя ту же стратегию, что и раньше, передав имя каталога в ls :
Во-вторых, мы действительно можем изменить наше местоположение на другой каталог, поэтому мы больше не находимся в нашем домашнем каталоге.
Команда для изменения местоположения — это cd, за которой следует имя каталога, чтобы изменить наш рабочий каталог. cd означает «изменить каталог», что немного вводит в заблуждение: команда не изменяет каталог; это изменяет представление оболочки о том, в каком каталоге мы находимся.Команда cd похожа на двойной щелчок по папке в графическом интерфейсе, чтобы попасть в папку.
Эти команды переместят нас из нашего домашнего каталога в каталог Desktop, затем в каталог shell-lesson-data, а затем в каталог с данными упражнений. Вы заметите, что cd ничего не печатает. Это нормально. Многие команды оболочки ничего не выводят на экран при успешном выполнении. Но если мы запустим после него pwd, то увидим, что теперь находимся в /Users/nelle/Desktop/shell-lesson-data/exercise-data.
Вы когда-нибудь сталкивались с ошибкой интерпретатора /bin/bash^M: bad: Нет такой ошибки файла или каталога при попытке запустить скрипт bash, будь то из cron или из командной строки?
Если ваш ответ «да», то вы попали в нужное место. Эта ошибка встречается чаще, чем вы думаете, и вполне безобидна, но тем не менее раздражает.
Эта проблема возникает, когда вы создаете скрипты в среде Windows, а затем переносите их для запуска в среде Unix.
Unix использует разные окончания строк, поэтому он не может правильно прочитать файл, созданный вами в Windows. Скрипты Bash, с другой стороны, очень чувствительны к окончаниям строк. Это не ограничивается только самим сценарием. он распространяется на данные, которые обрабатывает скрипт.
Имея это в виду, важно, чтобы строки заканчивались в стиле Unix, т. е. каждая строка заканчивалась символом перевода строки \n, который равен (десятичное число 10, шестнадцатеричное число 0A в ASCII).
В окончаниях строк в стиле Windows или DOS каждая строка заканчивается символом возврата каретки, за которым следует символ перевода строки \r\n.
Сценарий Bash видит возврат каретки \r как ^M. В этом случае возврат каретки (^M или \r) не рассматривается как пробел. и добавляется к строке в виде текста везде, где он появляется в конце строки. Итак:
Поскольку не существует интерпретатора, команды, каталога или файла с именем bash^M, мы получаем неверный интерпретатор: Нет такого файла или ошибки каталога.
Решение по исправлению /bin/bash^M: плохой интерпретатор: нет такого файла или каталога
Есть несколько вариантов решения этой проблемы. Поскольку мы знаем, что ^M — недопустимый символ, простое решение — избавиться от него. Мы просто покажем вам два простых способа сделать это.
<р>1. Это можно сделать с помощью программы dos2unix для преобразования символов возврата каретки: <р>2. Исправьте проблему из источника. Какой бы редактор (Sublime, Notepad++, VS Code и т. д.) вы ни использовали в Windows, вы должны иметь возможность изменять настройки для использования окончаний строк в стиле Unix.Например, в Notepad++ в правом нижнем углу экрана вы сможете увидеть формат документа. По умолчанию это будет Windows (CR LF). Чтобы изменить его:
- Откройте "Настройки" > "Настройки".
- Выбрать новый документ
- В разделе Формат (окончание строки) выберите Unix (LF)
- Нажмите кнопку "Закрыть", чтобы сохранить настройки.
- Щелкните правой кнопкой мыши ярлык Windows (CR LF) в правом нижнем углу экрана, чтобы вызвать контекстное меню.
- Выберите Unix LF
У каждого редактора есть свои индивидуальные способы изменения формата окончания строки, которые должны отображаться в правом нижнем углу окна редактора. Обычно щелчок левой или правой кнопкой мыши по ярлыку должен отображать имеющиеся у вас параметры.
Заключение
Вот оно. Вы должны быть в состоянии понять, почему, и избавиться от /bin/bash^M: плохой интерпретатор: Нет такого файла или каталога ошибка скрипта bash из всех ваших скриптов и данных, на которые они действуют.
Нашли эту статью интересной? Подпишитесь на Brightwhiz в Facebook, Twitter и YouTube, чтобы читать и смотреть другие материалы, которые мы публикуем.
Нет такого файла или каталога» означает, что либо сам исполняемый двоичный файл, либо одна из необходимых ему библиотек не существует. Библиотеки также могут нуждаться в других библиотеках. тогда проблему можно решить, убедившись, что указанные библиотеки установлены и указаны в пути поиска библиотек.
Как исправить отсутствие таких файлов или каталогов в Linux?
- Измените каталог в терминале на тот, где на самом деле находится скрипт Python. Если каталог рабочего стола ~/Desktop, то cd ~/Desktop. …
- Переместите файл в свой домашний каталог. …
- Запустите скрипт Python, указав полный путь из домашнего каталога: python3 ~/Desktop/myfile.py >myfile.html.
Как решить проблему отсутствия такого файла или каталога?
- Откройте терминал.
- Перейдите в каталог, в котором находится папка проекта.
- ЗАПУСТИТЬ установку композитора.
Как исправить bash Нет такого файла или каталога?
Чтобы это исправить, попробуйте программу dos2unix, если она у вас есть, или см. Преобразование файлов DOS в формат Linux. Обратите внимание, что если вы используете dos2unix, он, вероятно, создаст новый файл и удалит старый, что изменит разрешения, а также может изменить владельца или группу и повлиять на жесткие ссылки.
Что означает отсутствие такого файла или каталога?
Это просто "Нет такой записи в каталоге". Поскольку записи каталога могут быть каталогами или файлами (или символическими ссылками, или сокетами, или каналами, или устройствами), имя ENOFILE было бы слишком узким по своему значению.
Как изменить каталог в Linux?
Команды файлов и каталогов
- Чтобы перейти в корневой каталог, используйте «cd /»
- Чтобы перейти в домашний каталог, используйте «cd» или «cd ~»
- Чтобы перейти на один уровень каталога вверх, используйте «cd ..»
- Чтобы перейти к предыдущему каталогу (или обратно), используйте «cd -»
Команда не найдена в Linux?
Ошибка «Команда не найдена» означает, что команда не указана в вашем пути поиска. Когда вы получаете сообщение об ошибке «Команда не найдена», это означает, что компьютер искал везде, где мог искать, и не смог найти программу с таким именем. … Если эта команда установлена в вашей системе, убедитесь, что компьютер знает, где ее искать.
Как исправить отсутствие такого файла или каталога в Arduino?
zip, вы можете перейти в Arduino IDE и выбрать Sketch > Include Library > Add . ZIP-библиотека. Вам просто нужно перейти туда, куда был загружен файл. Он сообщит вам «Библиотека добавлена в ваши библиотеки» прямо над темной областью, где появилась исходная ошибка.
Как исправить Нет такого файла или каталога в Python?
У вас есть три варианта:
- Используйте абсолютный путь, чтобы открыть файл: file = open(r’C:pathtoyourfile.yaml’)
- Создайте путь к файлу относительно вашего скрипта Python: from pathlib import Path script_location = Path(__file__).absolute().parent file_location = script_location / ‘file.yaml’ file = file_location.
Является ли ошибка каталога bash?
Похоже, что-то пытается выполнить строку «/home/oracle» как команду bash. Если это происходит при каждом входе в систему, возможно, такая команда была добавлена в . bashrc или . bash_profile , например,
Как запустить скрипт bash?
Сделать скрипт Bash исполняемым
Что такое каталог в Python?
Каталог или папка – это набор файлов и подкаталогов. … В Python есть модуль os, который предоставляет нам множество полезных методов для работы с каталогами (а также с файлами).
Как создать каталог в Python?
Прием 1. Использование os. Метод mkdir() для создания каталога в Python
Читайте также: