如何在终端中的目录之间导航?


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$

Answers:


38

GNU / Linux的文件系统就像一棵树,只是根在最上面。:-)所以你有这样的结构:

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

如果要在树内移动,一种选择是使用相对路径。如果您位于中/home/sharon,则可以进行键入cd Downloads,因为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(最后一次按Tab键),则bash会自动将其扩展为cd ~/Downloads

正如其他人所说,GNU / Linux区分大小写。因此,如果输入或Home,则会有所不同。此外,我希望您现在看到和之间存在差异。第一个是绝对地址,最后一个是相对于当前目录。hOmehome/homehome


1
@ qbi:哇,你真棒。我喜欢您对如何在文件夹/目录之间导航的详细说明。您是教育机构的老师还是教授?大多数IT人士都了解很多IT知识,但是将概念分解为易于管理和“易消化”的部分,以便新手才能理解,只是像您这样的少数但有才华的人才能掌握。
n00b 2012年

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 

现在,考虑到斜杠,您要转到当前位置上方的目录;那是/ home / Home。空无一人。

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 2012年

2
前导斜杠表示相对于根的路径,而不是当前目录上方的路径。那就是../
psusi

3

该命令告诉您原因:没有这样的目录。

文件名区分大小写,因此它是/ home,而不是/ Home。如果没有前斜杠,则假定它是相对于当前目录的,并且Downloads目录不在〜/ Documents中,也不在/中,而是在您的主目录中,该目录~是一个快捷方式,因此它是〜/文件。


// @ psusi:也谢谢你。祝您和您的亲人圣诞快乐。
n00b 2012年

// @ psusi:斜杠是什么意思?
n00b 2012年

@ psusi:./ <文件名>是什么意思?
n00b

@noob,/表示从根目录开始,.表示当前目录。
psusi 2012年

0

我必须回答这个问题,因为我无法评论答案-.-

斜杠是什么意思?– n00b

这意味着您正在谈论的thin是目录而不是文件。文件不必像Windows中那样具有文件结尾,因此它~/thisIsAFile可以是主目录中的文件,但~/thisIsAFile/可以是目录/文件夹。

这是什么意思?– n00b

这意味着您要访问的文件位于当前目录中。

其他有用的提示:

你可以用

cd ..

您可以获取所在的路径(打印工作目录)

pwd

// @ a2r:感谢您的澄清。我不知道文件没有像Microsoft Windows那样的文件扩展名。程序在Ubuntu中也有文件扩展名吗?
n00b 2012年

通常情况下,系统不会在乎文件的结尾,如果将其标记为可执行文件(有关chmod的信息,则可以将其作为程序运行)。此外,还有一个名为$ PATH的全局变量(有关Google的信息),其中保存了一个视图目录(您可以使用查看它们echo $PATH)。当您尝试运行程序时,就像gedit在终端中键入一样。您的系统看起来将文件夹放在$ PATH中并搜索gedit。
a2r 2012年

1
那将是尾随的斜杠,而不是前导的斜杠。另外,您必须在之前有一个空格..
psusi 2012年

// @ psusi:对不起。我在这里有点困惑。什么是斜杠?斜杠?请举例吗?提前致谢。
n00b 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.