TranslateProject/published/202310/20230213.2 ⭐️ Terminal Basics Series 1 Changing Directories in Linux Terminal.md
2023-11-01 21:54:16 +08:00

218 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: subject: "Terminal Basics Series #1: Changing Directories in Linux Terminal"
[#]: via: "https://itsfoss.com/change-directories/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lkxed"
[#]: translator: "ChatGPT"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-16304-1.html"
终端基础Linux 终端中的目录切换
======
![][0]
> 本篇文章作为终端基础教程系列的一部分,介绍如何在 Linux 命令行中,利用绝对路径和相对路径实现目录切换。
Linux 的 `cd` 命令让你可以轻松切换文件夹(即目录)。只需提供你要切换到的文件夹路径即可。
```
cd path_to_directory
```
然而对于 Linux 新人来说,可能会在路径的指定上有所困扰。
首先,让我们解决这个问题。
### 理解 Linux 中的路径
在 Linux 文件系统中,路径是用来追踪文件位置的信息。所有的路径都从根目录开始,然后向下延伸。
你可以通过下面的方式查看当前所在的位置:
```
pwd
```
结果可能是类似于 `/home/username` 的输出。注意,这里的 `username` 将会是你自己的用户名。
你可以注意到,路径是由 `/` 符号和目录名组成的。比如路径 `/home/abhishek/scripts` 表示 `scripts` 是在文件夹 `abhishek` 之内,而文件夹 `abhishek``home` 文件夹之内。要注意,第一个 '/' 是指根目录(即文件系统的开始处),后面的 '/' 则作为目录的分隔符。
![Path in Linux][1]
> 🖥️ 在终端中键入 `ls /`,然后按回车。你将会看到根目录下的所有内容,试试看!
接下来,让我们学习两种常见的路径指定方式:绝对路径和相对路径。
**绝对路径**:这种路径从根开始,然后一直扩展到你需要的位置。如果一个路径是以 `/` 开头,那就说明它是一个绝对路径。
**相对路径**:这是相对于你文件系统中当前位置的路径。如果我当前位置在 `/home/abhishek`,并且我需要去 `/home/abhishek/Documents` 我只需要简单地切换到 `Documents`,而不需要指定整个绝对路径 `/home/abhishek/Documents`
在我演示这两种路径的区别之前,有必要先熟悉两个特殊的目录标识:
- `.` (单点)表示当前目录。
- `..` (双点)表示上一级目录,也就是当前目录的母目录。
这里有一张图形化的表示。
![Absolute path vs relative path][2]
### 利用 cd 命令变更目录
在你已对路径概念有所了解之后,我们来了解如何切换目录。
> 🖥️ 如果你**仅键入 `cd` 并按回车键**,无论当前位置在哪,系统都会将你带回主目录。试一试吧。
敲入以下命令,你就能看到主目录里的所有文件夹:
```
ls
```
这是我看到的情况:
```
abhishek@ituxedo:~$ ls
Desktop Downloads Pictures Templates VirtualBoxVMs
Documents Music Public Videos
```
你的情况可能与此类似,但未必完全一样。
假如你希望跳转到 `Documents` 文件夹。由于它就在当前目录下,这里使用相对路径会比较方便:
```
cd Documents
```
> 💡 注意,大部分 Linux 发行版预设的终端模拟器会在提示符本身显示出当前所在的位置。因此你不必频繁使用 `pwd` 指令来确认自己的位置。
![Most Linux terminal prompts show the current location][3]
假如你希望切换到位于主目录里的 `Templates` 文件夹。
你可以使用相对路径 `../Templates``..` 会让你返回到上层目录,即 `/home/username`,然后你就可以进入 `Templates` 文件夹了)。
但这次我们尝试使用绝对路径。请把下面的 `abhishek` 替换成你的用户名。
```
cd /home/abhishek/Templates
```
此刻你已经在 `Templates` 文件夹里了。如何前往 `Downloads` 文件夹呢?这次我们再使用相对路径:
```
cd ../Downloads
```
下面的图片会回顾一下你刚才学到的所有或有关目录切换的范例。
![cd command example][4]
> 💡 别忘了你还可以使用终端的 `tab` 键自动补全功能。只需要键入命令或者文件夹名称的前几个字母,然后敲击 `tab` 键,系统就会尝试自动地补全命令或文件夹名称,或者给你显示出所有可能的选项。
### 故障解决
在 Linux 终端操作切换目录的过程中,你可能会遇到一些常见的错误。
#### 文件或目录不存在
如果在你尝试切换目录时,出现类似下面的错误信息:
> bash: cd: directory_name: No such file or directory
那么你可能在路径或目录名称上犯了误解。这里有几点你需要注意的:
- 请确定你输入的目录名中没有拼写错误。
- Linux 系统对大小写敏感,因此,`Downloads` 和 `downloads` 会被识别为不同的目录。
- 你可能未正确指定路径。可能你所在的位置与你预期的不同?或者你遗漏了绝对路径中的开头的 `/` 字符?
![Common examples of "no such file or directory" error][5]
#### 非目录错误
如果你看到像下面这样的错误提示:
> bash: cd: filename: Not a directory
这表示你尝试使用 `cd` 命令对一个文件进行操作,而不是一个目录(文件夹)。很明显,你不能像进入文件夹那样“进入”一个文件,因此会出现这样的错误。
![Not a directory error with the cd command][6]
#### 参数过多
这是 Linux 新手常犯的另一个错误:
> bash: cd: too many arguments
`cd` 命令只接受一个参数。也就是说,你只能对命令指定一个目录。
如果你指定了超过一个的参数,或者在路径中误加了空格,你就会看到这个错误。
![Too many arguments error in Linux terminal][7]
> 🏋🏻 如果你输入 `cd -`,它将会把你带到前一个目录。当你在两个相隔较远的地方切换时非常方便,可以避免再次输入长路径。
### 特殊目录符号
在结束这个教程之前,我想快速告诉你关于特殊符号 `~`。在 Linux 中,`~` 是用户主目录的捷径。
如果用户 `abhi` 运行它,`~` 就会代表 `/home/abhi`,如果用户 `prakash` 运行,`~` 就意味着 `/home/prakash`
总结一下你在这个基础教程系列中学到的所有特殊目录标识:
| 符号 | 描述 |
| :- | :- |
| `.` | 当前目录 |
| `..` | 上级目录 |
| `~` | 主目录 |
| `-` | 前一个目录 |
### 测试你的知识
下面是一些简单的练习,用来测试你刚刚学到的关于路径和 `cd` 命令的知识。
移动到你的主目录,并使用这个命令创建一个嵌套的目录结构:
```
mkdir -p sample/dir1/dir2/dir3
```
然后,一步步来试试这个:
- 使用绝对路径或相对路径进入 `dir3`
- 使用相对路径移动到 `dir1`
- 使用你能想象到的最短路径进入 `dir2`
- 使用绝对路径切换到 `sample` 目录
- 返回你的主目录
> 🔑 想知道你是否全都做对了吗?欢迎分享你的答案。
现在你知道如何切换目录,是不是应该学习一下如何创建它们呢?
我强烈推荐你阅读这篇文章,了解一些关于终端和命令的小技巧。
如果你想了解 Linux 命令行的基础知识,记得关注我们的 Linux 终端基础系列教程的更多章节。
--------------------------------------------------------------------------------
via: https://itsfoss.com/change-directories/
作者:[Abhishek Prakash][a]
选题:[lkxed][b]
译者:[ChatGPT](https://linux.cn/lctt/ChatGPT)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[b]: https://github.com/lkxed/
[1]: https://itsfoss.com/content/images/2023/02/path-linux.webp
[2]: https://itsfoss.com/content/images/2023/02/absolute-and-relative-path.png
[3]: https://itsfoss.com/content/images/2023/02/linux-terminal-prompt.png
[4]: https://itsfoss.com/content/images/2023/02/cd-command-example.svg
[5]: https://itsfoss.com/content/images/2023/02/common-errors-with-cd.png
[6]: https://itsfoss.com/content/images/2023/02/not-a-directory-error-linux.png
[7]: https://itsfoss.com/content/images/2023/02/too-many-arguments.png
[8]: https://itsfoss.community/t/exercise-in-changing-directories-in-linux-terminal/10177?ref=its-foss
[0]: https://img.linux.net.cn/data/attachment/album/202310/21/062234mz9zymqc6om5924m.jpg