Зачем . / home / Desktop неправильный и ./Desktop правильно?

Я узнал о Linux, начал вчера. У меня вопрос, на который я не мог ответить из своей книги или Google. В чем разница между ./ и / в оболочке?

Я спрашиваю об этом, потому что, когда я запускаю, например, команду ./home/yogesh/Desktop/Books , я получаю эту ошибку:

 bash: ./home/yogesh/Desktop : No such file or directory 

Однако, удаляя точку, она дает

 /home/yogesh/Desktop/Books : Is a directory 

Или, если я запустил /Desktop , он вернется

 /Desktop : No such file or directory 

Но при добавлении точки до / , я получаю

 ./Desktop: is a directory 

В чем разница между ./ и / ?

4 Solutions collect form web for “Зачем . / home / Desktop неправильный и ./Desktop правильно?”

В unix (например, в Windows) /foo – это местоположение файла или каталога (абсолютное местоположение из корневого каталога: / ). В то время как ./foo – относительное местоположение (относительно текущего каталога) … Вы можете опустить ведущую точку + слэш и просто написать foo .

Набрав команду /Desktop или ./Desktop , вы сообщите оболочке выполнить Desktop … Что нельзя выполнить.

/Desktop не существует, поэтому сообщение об ошибке.

Принимая во ./Desktop , что ./Desktop , который является абсолютным местоположением /Home/YOURNAME/Desktop , существует. Но это каталог, а не исполняемый файл … Вероятно, вы забыли префикс с командой для запуска (обычно cd или ls )

Пример объяснения:

/ (косая черта) означает корень из корня файловой системы. Итак, /home/yogesh/Desktop/Books начинается с корня, затем проверяется на наличие home , под home проверкой на yogesh и так далее. Это называется абсолютным путем.

. (точка) означает начало из текущего каталога. Итак, если ваш текущий каталог /home/yogesh и вы проверяете ./Desktop , он есть. Это называется относительным путем.

В Unix и Unix-подобных системах . означает текущий каталог. Например, ls . то же самое, что и ls , он отобразит содержимое текущего каталога. Итак, когда вы запустите ./Desktop он находит каталог под названием Desktop который находится под вашим текущим каталогом. Затем вы получите сообщение об ошибке, указывающее, что это каталог и, следовательно, невозможно выполнить, поскольку это не команда.

/ является корнем файловой системы. Он похож на C:\ на Windows. При запуске /Desktop система будет искать каталог под названием Desktop который находится в каталоге / . Это не существует, и это говорит вам об этом.

Например, если я нахожусь в /home/yogesh и я хочу перейти в /home/yogesh , я могу либо использовать относительный путь (относительно каталога, в котором я сейчас), и запустить cd ./Desktop или cd Dessktop , или я могу использовать абсолютный путь и запустить cd /home/yoges/Desktop .

Первое не должно быть относительным местоположением.

Относительное местоположение – обозначать вещи короче из того места, где вы находитесь. Абсолютное местоположение – от корня /, который является первым местоположением каталога в Linux. Когда вы не находитесь в / var, вы можете использовать

 cd /var/www 

как / var / www абсолютное местоположение. Если вы находитесь в / var, вы можете использовать

 cd ./www 

или

 cd www 

Обозначить это еще короче.

Я рекомендую бесплатную книгу Уильяма Шотца.

Вот ссылка на эту книгу:

Командная строка Linux от William Shotts

  • Изменить команду для удаления номера с конца имени файла.
  • Использование BSD jot для создания файла со случайным контентом
  • Замена процесса bash временным файлом
  • Почему можно ссылаться на закрытый stderr под bash?
  • Сценарий оболочки для изменения оболочки пользователя
  • Расписание (Cron), выполняющее задачи на основе сценариев bash с использованием CronniX
  • Помогает ли родительский скрипт bash запомнить историю cd из сценария child bash?
  • печать серии символов
  • Убейте процесс, если он успокоится в течение определенного времени
  • Перенаправление вывода в зависимости от регулярного выражения grep
  • Простой вопрос: lftp не пишет в $ LOG - что я делаю неправильно?
  • Interesting Posts

    Альтернативное решение для создания нескольких копий одного файла с помощью командной строки?

    virt-manager PCI passthrough дает ошибку «No IOMMU Found» даже с поддержкой Intel IOMMU

    Где я должен установить морской файл-сервер: / opt или / home?

    Сбросить установку ealier с помощью apt-get

    Насколько хорошо Debian поддерживает MIPS в наши дни?

    Почему ntpd прослушивает большинство 192.168.1.X / 192.168.2.X

    Двойная загрузка Ubuntu и Windows 8. w8 загружается через оболочку grub, но не из меню

    Является ли `chmod -R ugo + rwx /` безопаснее, чем `chmod -R 777 /`?

    Удалите дополнительные строки заголовков из файла, кроме первой строки

    Какой bash расширит {1 .. $ VAR} так же, как zsh

    Выполнить расчет в шестнадцатеричном формате с помощью Qalculate

    Ubuntu 16.04.1: Почему некоторые программы запускаются как системами systemd, так и initV?

    Очистить содержимое файла

    Отображение Caps Lock для Ctrl, CentOS

    Linux Mint 18 удаляет /etc/init.d/xorg.conf при каждой перезагрузке и не запускает x-сервер

    Linux и Unix - лучшая ОС в мире.