Как я могу перемещаться между каталогами в терминале?


26

Я новичок в Linux и Ubuntu и с некоторой трудностью пытался перейти на папки / каталоги.

Может кто-нибудь объяснить, почему следующие команды не смогли перейти в нужную целевую папку / каталог?

sharon@sharon:~$ cd Home 
bash: cd: Home: No such file or directory 
sharon@sharon:~$ cd /Home 
bash: cd: /Home: No such file or directory 
sharon@sharon:~$ cd Documents 
sharon@sharon:~/Documents$ cd Downloads 
bash: cd: Downloads: No such file or directory 
sharon@sharon:~/Documents$ cd /Downloads 
bash: cd: /Downloads: No such file or directory 
sharon@sharon:~/Documents$

Ответы:


38

Файловая система GNU / Linux похожа на дерево, за исключением того, что корень находится сверху. :-) Итак, у вас есть структура, как:

/
  bin/
  home/
    sharon/
      Documents/
      Downloads/
      fileA.txt
      fileB.jpg
  usr/
  var/

Если вы хотите перемещаться внутри дерева, одним из вариантов является использование относительных путей. Если вы входите в систему /home/sharon, то печатание cd Downloadsбудет работать, поскольку загружаемые файлы являются непосредственными дочерними элементами вашего текущего каталога. Если вы находитесь в подпапке Documentsи хотите изменить каталог ( cd) на Downloads, вам нужно перейти вверх ( ..) и затем к Downloads. Таким образом, правильная команда будет cd ../Downloads.

Вы также можете ввести абсолютный путь. Таким образом, Downloadsпапка является вложенной , sharonкоторая является вложенным homeчто ... (вы получите идею :-)) Так что вы можете также ввести cd /home/sharon/Downloadsвезде , где вы находитесь в файловой системе.

  • ~всегда относится к домашнему каталогу текущего пользователя ( /home/sharonв вашем случае). Если вы введете, cd ~/Downloadsвы попадете в свою Downloadsпапку.

  • .относится к текущему каталогу, поэтому cd ./Downloadsпримерно соответствует cd Downloads.

  • .. означает «родительский каталог».

  • / в начале пути к файлу относится к корневому каталогу.

Следующая приятная вещь - это расширение вкладок. Если вы введете cd ~/DowTab(последнее нажатие клавиши Tabulator), bash автоматически расширит его до cd ~/Downloads.

Как говорили другие, GNU / Linux чувствительна к регистру. Так что это имеет значение, если вы введете Home, hOmeили home. Кроме того, я надеюсь, что вы видите сейчас, что есть разница между /homeи home. Первый адрес абсолютный, а последний относительно вашего текущего каталога.


1
@ Qbi: Ух ты, ты классный. Мне нравится ваше подробное объяснение о том, как перемещаться между папками / каталогами. Вы учитель или профессор в учебном заведении? Большинство IT-ребят знают много IT-вещей, но разбивают концепции на управляемые и «усваиваемые» куски, чтобы новички могли понять, только в пределах досягаемости горстки, но одаренных ребят, таких как вы.
n00b

2
@ n00b Если вы нашли этот ответ полезным, вы можете «принять» его, нажав V слева от него.
Revetahw говорит восстановить Monica

8
sharon@sharon:~$ cd Home 
bash: cd: Home: No such file or directory 

Маленький cedilla ~ указывает, что вы уже находитесь в каталоге / home / sharon. Когда вы запрашиваете «CD Home», терминал ищет / home / sharon / Home. Здесь ничего нет.

sharon@sharon:~$ cd /Home 
bash: cd: /Home: No such file or directory 

Теперь вы просите, учитывая начальный слеш, перейти в каталог выше текущего местоположения; это / дом / дом. Здесь ничего нет.

sharon@sharon:~$ cd Documents 
sharon@sharon:~/Documents$

Успех!

sharon@sharon:~/Documents$ cd /Downloads 
bash: cd: /Downloads: No such file or directory 

Я не слишком уверен, где именно это. Если вы хотите перейти с / home / sharon / Documents на / home / sharon / Downloads, попробуйте:

cd ~/Downloads

Если вы хотите перейти непосредственно в свой домашний каталог, то есть / home / sharon, просто выполните:

cd

Также вы можете вернуться назад с

cd ..

И вы можете распечатать каталог, с которым вы работаете (печать рабочего каталога)

pwd

@ chili555: Большое спасибо за помощь новичкам, как я. Счастливого Рождества вам и вашим близким.
n00b

2
Начальная косая черта указывает путь относительно корня, а не путь над текущим каталогом. Это было бы../
psusi

3

Команда говорит вам, почему: такого каталога нет.

Имена файлов чувствительны к регистру, поэтому это / home, а не / Home. Без косой черты предполагается, что он относится к текущему каталогу, а каталог Downloads находится не в ~ / Documents и не в /, а в вашем домашнем каталоге, к которому ~есть ярлык, то есть ~ / Документы.


@ psusi: Спасибо и тебе тоже. Счастливого Рождества вам и вашим близким.
n00b

@ psusi: Что означает ведущий слеш?
n00b

@ psusi: Что значит ./ <имя файла>?
n00b

@noob, /означает запуск из корневого каталога и .означает текущий каталог.
Псуси

0

Я должен ответить на это, потому что я не могу комментировать ответы -.-

Что означает ведущий слеш? - n00b

это означает, что вы говорите о директории, а не о файле. Файлы не обязательно должны иметь окончания файлов, как в Windows, поэтому ~/thisIsAFileэто будет файл в вашем домашнем каталоге, но ~/thisIsAFile/это будет каталог / папка.

Что означает? - n00b

Это означает, что файл, к которому вы хотите получить доступ, находится в вашем текущем каталоге.

Другие полезные советы:

Вы можете вернуться в папку с

cd ..

И вы можете получить путь, по которому вы находитесь (распечатать рабочий каталог)

pwd

@ a2r: Спасибо за разъяснения. Я не знал, что файлы не имеют расширений, как в Microsoft Windows. У программ тоже есть расширения файлов в Ubuntu?
n00b

Обычно нет, системе все равно, какие окончания у файла, если он помечен как исполняемый (google о chmod), вы можете запустить его как программу. Также есть глобальная переменная (гугл об этом), которая называется $ PATH, есть сохраненные каталоги просмотра (вы можете увидеть, какие есть с echo $PATH). И когда вы пытаетесь запустить программу, как вы печатаете geditв терминале. Ваша система выглядит, выбросив папки в $ PATH и ищет gedit.
a2r

1
Это будет косая черта, а не передняя. Также у вас должно быть место перед ...
Псуси

@ psusi: прости. Я немного запутался здесь. Что за косая черта? ведущий слеш? Примеры пожалуйста? Заранее спасибо.
n00b
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.