Skip to content

Linux 进阶

文件系统

Linux 是一个以文件为基础的操作系统,下面我们将通过对 Linux 目录以及常用的文件/目录操作命令的介绍来说明这一点。

Linux 的目录使用 / 来分隔(而 Windows 下是 \,这需要注意),整个目录树的顶点是 /,在 / 后加上文件或者文件夹的名称即是各个分支。我们约定,~ 表示用户的家目录,.. 表示前一层目录,. 表示当前目录。索引时,若前面不加 /,默认在当前目录内查找,效果等同于使用 ./。注意,... 实际上被看作一个名字叫做 ... 的文件夹,只不过其代指对应位置的目录。

使用ls可以查看当前目录的文件,下面给出一个典型的 ls 输出:

aur  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Vaults  Videos

这显示了当前目录下的文件与文件夹。ls 有两个常用参数:

  • -a 显示隐藏文件,以 . 开头的就是隐藏文件
  • -l 显示文件详细信息

下面我们通过一个 ls -al 的输出来详细解释一些 Linux 文件管理中的概念:

drwxr-xr-x 1 zjy  zjy    258 Jun 28 23:16 Documents
^^^^^^^^^^   ^^^  ^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^
|    |        |    |      |- 随后的字段分别表示文件大小,修改日期,文件名
|    |        |    |
|    |        |----|- 随后的两个字段,分别表示拥有该文件的用户与拥有该文件的组
|    |
|    |- 后面的三组三个字母采用 `rwx` 的顺序
|       表示拥有该文件的用户/组/其他用户是否具有读取/写入/执行的权限(-表示没有此项权限)
|
|- 最前面的字母部分是文件的类型和权限,若以 `d` 开头,则是文件夹,以 `-` 开头,则是文件

这是 Linux 文件权限管理的核心,在 Linux 下,所有 permission denied 的问题,都是没有对对应文件的权限的问题。这些权限信息可以用chmod(修改权限)与 chown(修改所有者)来修改。

使用 cd 可以切换工作目录:

cd dir

dir 为需要切换的目录,切换目录会影响从工作目录开始的索引。

用户与权限

前面我们其实简单介绍了 Linux 的权限管理机制:文件需要有所有者,文件可以设定不同的权限。这就需要了解用户和用户组。

对于 Linux 而言,对于文件的操作,需要判断目前是哪一个用户在操作该文件,该用户进入了哪些用户组,以提供对应的权限。用户组就是一些用户的集合,便于分组管理权限,你可以通过 cat /etc/group 来查看目前的用户组信息,一般而言,在建立一个用户的时候,默认会建立一个与之同名的用户组。

在 Linux 中,存在一个超级用户,其有权限操作几乎所有的文件,即便该文件不归该用户所有。该用户叫做 root。你可以通过 su 并输入 root 用户密码的方式来切换为 root

顺带,su 的作用是切换用户,使用 su - username 可切换到 username 用户并切换到其 Home 目录(不加 - 就只改用户不该目录)。

显然,当我们遇到权限问题时,最简单的方式是切换到 root 用户。但是,因为 root 可以操作所有文件,全程使用 root 是危险的(权限管理措施形同虚设),而且很多时候 root 的验证方式并不会提供给所有用户。很多时候我们所需要的只是在某些情况下更加安全的临时切换用户,且仅使用当前用户的验证,此时就要用到

sudo [命令]

root 的身份执行命令。当然,sudo 能配置的很多,也可以临时获取其他用户的身份,不再赘述。

文档查询

对于 Linux 使用者而言,最关键的一个能力就是查文档。你可以安装 man 软件包,随后利用 man [pkg] 来查询名为 [pkg] 的包的的文档,很多工具都会在文档中写出示例。当然,使用在线 man 会方便很多。对于编程用到的库(Library),直接查询项目官网或 GitHub README是一个不错的选择。如果需要一些系统维护与软件的说明,可查询自己使用的发行版的 wiki

查文档能够大大减少错误概率比逆天csdn准确多了。可以说,会查文档,你就会用了 Linux,但凡有不知道的,查文档即可。也可以搜索引擎辅助:利用搜索引擎大致搜索解决问题所需工具,再到对应的地方查询工具的文档。

如果不想看很长的 man pages,还可以使用包 tldr 或者网站 cheat.sh。

如果你真的要提问,那么请注意提问的方式,先阅读《提问的智慧》是个不错的选择,这可以大大提升你的交流效率,而不是用低效问题去浪费解答者的时间。