添加 src/learn_linux_basic/file_and_path.md
This commit is contained in:
parent
6efcd8544d
commit
63a0b5f9f8
|
@ -0,0 +1,157 @@
|
||||||
|
# 文件与路径
|
||||||
|
|
||||||
|
当你终于按照上面的教程安装好Linux,并激动地打开文件管理器的时候,你会惊叹:`我C盘呢?`
|
||||||
|
|
||||||
|
## Linux的文件结构
|
||||||
|
|
||||||
|
当你第一次打开文件管理器的时候,你可能会看见“主文件夹”这样的字样,但是就是找不到C盘和D盘。
|
||||||
|
|
||||||
|
其实,Linux的文件管理结构还是和Windows有较大差别的。
|
||||||
|
|
||||||
|
> Windows的文件系统中的“路径分隔符”(就是你单机路径在文件夹之间的斜杠)是 `\` (右斜线),而Linux和MacOS(准确来说是任何POSIX标准的计算机系统)是 `/` (左斜线),Windows中左斜线被当成了参数的前缀符号(Linux中是`-`)。下文不再提及。
|
||||||
|
|
||||||
|
不过不要担心,我们所说的C盘就是 `/` 了(叫做根目录,真的只有一个斜杠)。那么,我们的D盘和E盘等等呢?它们则被系统放到了别的地方,你甚至可以自定义这些地方(其实Windows也可以,不过放得很深),不过一般被放在了 `/mnt`,`/run/mount` 或者 `/media/你的用户名` 下。(根据发行版和桌面环境的不同有所区别。如果你是安装上文安装的,那么应该在 `/media/你的用户名` 里面)
|
||||||
|
|
||||||
|
而你所看到主文件夹(或者是用户目录),位于 `/home/你的用户名`(Linux中root用户比较特殊,就是`/root`),相当于 `C:\Users\你的用户名`(MacOS:`/Users/你的用户名`)。在这里你可以放置你的个人文件和代码。
|
||||||
|
|
||||||
|
另外,还有几个特殊的文件夹:
|
||||||
|
|
||||||
|
1. `.` 代表当前所在的文件夹
|
||||||
|
2. `..` 代表上一级文件夹,而 `/` 的上级文件夹就是它自己。
|
||||||
|
|
||||||
|
> 注:在Windows下也有一个隐藏的根目录,不过我们几乎访问不到也访问不了
|
||||||
|
|
||||||
|
## 基本命令行
|
||||||
|
|
||||||
|
上面的一切都是在图形界面下的操作。如果只有一个黑框框终端,我们该怎么办呢?
|
||||||
|
|
||||||
|
首先,在终端中,记住:我们输入任何命令后都要接一个回车,让终端知道你打完了一行命令。
|
||||||
|
|
||||||
|
### `pwd` 查看当前目录
|
||||||
|
|
||||||
|
如何知道我们现在在哪?我们可以键入
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pwd
|
||||||
|
```
|
||||||
|
|
||||||
|
就可以看到看下面立刻出现了一行文字(如果是一个刚打开的终端,那么通常在主文件夹里)。
|
||||||
|
|
||||||
|
### `ls` 列出所有文件和文件夹
|
||||||
|
|
||||||
|
但是只有这行命令,终端又不能像图形界面一样直观看到所有的文件。如果看不到文件夹下有什么文件,我们就相当于瞎子。
|
||||||
|
|
||||||
|
那么就要请出下面的命令了:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls
|
||||||
|
```
|
||||||
|
|
||||||
|
我们可以看到当前目录下有什么文件和文件夹。你应该还能看见颜色,不同颜色就代表了文件(夹)的不同类型。
|
||||||
|
|
||||||
|
`ls` 还有一些其它的参数,比如输入 `ls -al` 就可以看见纵向排列的文件详细信息了,输入文件名就可以筛选出那个文件夹内/文件本身。
|
||||||
|
|
||||||
|
### `cd` 切换目录
|
||||||
|
|
||||||
|
接下来,我们还要在文件系统中切换目录。那么,我们可以:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd 你想切换的目录
|
||||||
|
```
|
||||||
|
|
||||||
|
如果你的目录以 `/` 开头,那么它就会从根目录去寻找,否则就会从当前目录去寻找。`cd ..` 就是返回上级目录。
|
||||||
|
|
||||||
|
这三个命令也是命令行中最常用的命令。如果你是第一次见到命令行,你是不是感觉自己很像个黑客?
|
||||||
|
|
||||||
|
### `mv` 移动文件
|
||||||
|
|
||||||
|
那我们的重命名,剪切,复制,粘贴去哪了呢?在Linux命令行中,其实没有剪切。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mv 你想移动的目录 目标或新的名字
|
||||||
|
```
|
||||||
|
|
||||||
|
我们可以使用上面的命令移动或者重命名一个目录(是的,它们是一个命令)。
|
||||||
|
|
||||||
|
> 在同一磁盘内移动速度很快,但是跨磁盘就不一定了
|
||||||
|
|
||||||
|
### `cp` 复制文件
|
||||||
|
|
||||||
|
而复制也是一个道理:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp 你想复制的目录 目标
|
||||||
|
```
|
||||||
|
|
||||||
|
### `rm` 删除文件
|
||||||
|
|
||||||
|
都有复制了,怎么能没有删除呢?
|
||||||
|
|
||||||
|
> 删除危险性较高,不要删除根目录或者其它重要目录!回车前再三确认!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm 你想删除的文件
|
||||||
|
```
|
||||||
|
|
||||||
|
另外,删除文件夹的操作有点不一样:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm -r 你想删除的文件夹
|
||||||
|
```
|
||||||
|
|
||||||
|
在`r`后面加上`f`就是强制删除了,而`rm -rf /*` 就是强制删除根目录下所有的文件。以后看到这串命令不要被骗了!
|
||||||
|
|
||||||
|
> 如果你就是想尝试,那么请一定在虚拟机下,并且你就需要重装系统了。
|
||||||
|
|
||||||
|
## 磁盘与挂载
|
||||||
|
|
||||||
|
你可能会发现一个东西:就是在根目录里,怎么还会有其它的磁盘呢?这是因为,在Linux系统下,所有的磁盘都需要挂载才能访问。而其它的磁盘必须挂载在根目录下。
|
||||||
|
|
||||||
|
之前我们说到了Linux“一切皆文件”。我们的硬盘其实也是一个文件。其中,通常 `/dev/sd+一个小写a-z字母`是你的硬盘(也有可能是 `/dev/nvmeX`(X是任意的数字) 或者 `/dev/mmcblkX`)。而分区是 `/dev/sd+一个小写a-z字母+X` (nvme比较不同),如 `/dev/sdc3`。
|
||||||
|
|
||||||
|
我们可以使用 `lsblk` 命令查看所有的硬盘和分区。
|
||||||
|
|
||||||
|
知道分区后,我们
|
||||||
|
|
||||||
|
但是,磁盘文件并不能直接访问,这时候我们需要挂载了。
|
||||||
|
|
||||||
|
如果你有一个桌面,那么它就会自动帮你执行操作。点击一下你的磁盘就可以挂载了。
|
||||||
|
|
||||||
|
如果你的桌面没有找到,那么可以使用下面的命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mount /dev/sdX(替换成你的硬盘) /mnt/任意目录名 --mkdir
|
||||||
|
```
|
||||||
|
|
||||||
|
> `--mkdir` 如果目录不存在创建一个新的目录,如果你已经有目录了,那么可以不需要夹。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
umount /dev/sdX(你的硬盘)
|
||||||
|
或者
|
||||||
|
umount /mnt/目录名
|
||||||
|
```
|
||||||
|
|
||||||
|
就可以取消挂载了。
|
||||||
|
|
||||||
|
关于挂载的内容,这里就不过多讲述了,后面会提到。
|
||||||
|
|
||||||
|
### Linux下的重要文件夹
|
||||||
|
|
||||||
|
刚装完Linux,你会看到根目录下面有一些目录:(都不要删!)
|
||||||
|
|
||||||
|
* `/boot` 存放系统启动信息
|
||||||
|
* `/dev` 大部分设备对应的文件,上文中提到了
|
||||||
|
* `/proc` 所有的进程信息(Linux中“一切皆文件”的思想)
|
||||||
|
* `/lib` 存放所有重要的被软件调用的以来。有时会有`lib64`
|
||||||
|
* `/etc` 存放软件配置文件(其实很乱,相当于杂项)
|
||||||
|
* `/opt` 扩展软件目录,少部分软件会装到这里
|
||||||
|
* `/tmp` 存放一些临时文件,通常被挂载到了内存
|
||||||
|
* `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限root的命令),这两个文件夹还被映射到了根目录同名文件夹。
|
||||||
|
* `/var` 经常变动的一些重要的文件,也包含日志
|
||||||
|
* `/sys` 也是一个重要的设备目录
|
||||||
|
* `/home` 用户目录,相当于 `C:\Users`(MacOS:`/Users`)
|
||||||
|
|
||||||
|
到这里,相信你已经掌握了Linux文件系统的简单使用。
|
||||||
|
|
||||||
|
---
|
||||||
|
> study-area-cn
|
Reference in New Issue