初学 Linux 必知必会的 X 个知识点


对于刚开始接触嵌入式 Linux 的小伙伴来说,Linux 操作系统的强大和复杂性可能会让人感到有些望而却步。然而,掌握一些基本的知识点和常用命令,可以大大提高学习和使用 Linux 的效率,使你更快地适应这个广泛应用于嵌入式系统的操作平台。

本文将结合我个人学习 Linux 系统编程和驱动开发时的个人心得,介绍学习嵌入式 Linux 时必知必会的 X 个知识点,帮助刚刚接触 Linux 系统的萌新小伙伴,快速熟悉 Linux 系统。

一、Linux 系统与 Windows 系统的差别

大多数小伙伴在接触 Linux 系统之前,在 PC 端用过的操作系统基本都是 Windows 系统。根据市调机构 Statcounter 公布的最新统计报告,使用 Windous 系统的 PC 端占全球所有 PC 端的 72.81%,而使用 Linux 系统作为自己电脑操作系统的只有 4.05%。

在这里插入图片描述

可见,Linux 系统市占率也说明了大部分人的时候是接触不到 Linux 系统的(其实也有,主要体现在移动端的 Android 系统,不过与 Linux 还是有些区别)。当然,这并不会影响我们学习 Linux 系统,我们可以通过类比 Windows 系统的办法来学习 Linux 系统。

那么 Linux 系统与 Windows 系统到底有什么差别呢?

讨论 Linux 系统与 Windows 系统之间的主要差别,可以从多个角度来分析,包括设计理念、架构、用户界面等方面。当然,这些对于还没正式学习 Linux 系统开发的萌新来说都不是最重要的。

以嵌入式领域最常见的 Ubuntu 系统为例,从我个人初学 Linux 的角度来看,最大的不同在于目录(这里说的目录,其实是指文件夹)。对于 Windows 系统来说,打开 “我的电脑” 或 “此电脑”,看到的不同盘符。而 Linux 系统没有盘符的概念,以树状结构表示文件夹与文件。

在这里插入图片描述

[!NOTE]

如果你用过 Android 手机,你会发现 Ubuntu 系统的界面跟 Android 系统出奇的相似,主要这两个操作系统的内核都是 Linux 内核,在 Android 系统的手机也没有分盘符的情况。

在 Windows 系统下,文件或文件夹的路径从盘符开始,比如:“C:\XXX\XXX\hello.txt”,这是在 C 盘的 XXX 目录下,有 XXX 子目录,而 XXX 中有 hello.txt 这个文件。从路径就可以知道,文件在哪个分区。

在 Linux 系统下,文件或文件夹的路径从根目录开始,比如:“/XXX/XXX/hello.txt”(注意斜杠的方向,Windows 系统用的正斜杠(\),Linux 用的是反斜杠(/)),这表示在根目录下有 XXX 子目录,而 XXX 下又有 XXX 目录,XXX 中有 hello.txt 文件。从路径上是无法得知文件在磁盘的哪个分区。

主要对于普通用户来说,使用 Linux 系统是不需要关心分区、盘符等问题的,我们只需要知道哪个目录存放什么就可以了。

另一个差别就是,学习 Linux 系统编程基本不用图形界面,用的全是命令行终端。这对于使用惯图形界面的 Windows 用户来说,需要一定时间适应。

一般情况下,Linux 同一版本的发行版都会有 Desktop 和 Server 两个版本。Server 版本是没有图形界面的,相较于带有图形界面的 Desktop 版本而言,Server 版本系统安装包都小非常多。Server 版本主要用在服务器或者一些不需要显示器的嵌入式设备上,没有图形界面的操作系统,就只能纯靠命令行的方式操作了。而 Desktop 版本的系统,不仅有图形界面,还保留了命令行的操作方式。

那么,Linux 系统的开发者为什么偏爱命令行,而不使用图形界面呢?

并不是因为有些设备和服务器没有图形界面,才使 Linux 系统的开发者才不得不使用命令行(虽然这也是原因之一,但不是最主要的),而是命令行有其独特的优点,主要集中在效率、精确和灵活性上。

首先是效率和速度,命令行操作往往比图形界面更快,因为命令行不需要加载额外的图形界面组件,消耗更少的系统资源。对于批量处理任务和脚本编写,命令行提供了强大的自动化能力,可以高效地完成大量重复工作。如果是通过 SSH 等协议进行远程管理时,即使设备有图形界面,开发者依然会使用命令行操作,图形界面太消耗系统资源了。

其次是精确控制,命令行允许用户对系统进行非常细致的控制,可以执行复杂的操作,如文件系统管理、进程监控、网络配置等。图形界面通常提供的是更通用的用户界面,而命令行可以调用底层系统功能,实现更深入的系统管理。

最后是可移植性和灵活性,命令行工具通常具有更好的跨平台兼容性,可以在不同类型的系统上运行。命令行程序的输出可以很容易地被其他程序读取和解析,方便数据处理和脚本编写。

另外,对于系统管理员和技术人员来说,掌握命令行是基本技能之一,它可以帮助他们更好地理解系统内部运作。学习命令行可以提高解决问题的能力,因为很多系统日志和错误信息都是文本形式,通过命令行阅读和分析更加直接。

二、Linux 命令行初识

第一次接触命令行,一定会有很多东西不知道是什么意思,下面将以 Ubuntu22.04 为例,说明命令行界面、各种路径的含义和常用的命令。

1. 终端界面

进入 Linux 系统后,可以通过按组合快捷键 Ctrl + Alt + t 打开终端。

[!NOTE]

打开终端的方法还有很多,可以用鼠标点击界面的左下角的 Show Applications,找到并点击 Terminal 打开终端。不过,摆脱鼠标是学习 Linux 的第一步,还是推荐使用快捷键。

打开后的终端如下图:

在这里插入图片描述

[!NOTE]

普通用户和 root 用户有什么区别呢?

普通用户和 root 用户在权限级别、安全性、系统操作和系统管理方面存在显著区别。普通用户拥有有限的权限,有助于保护系统的安全性,而 root 用户拥有最高权限,可以进行任何系统级操作,但需谨慎使用,以避免误操作导致的严重后果。理解这些区别有助于在 Linux 系统中合理分配和使用权限,确保系统的稳定和安全。

2. 路径的含义

相信很多萌新第一次听到什么绝对路径、相对路径、家目录等新名词都不知是什么意思,下面就盘点几个常见的路径含义:

  1. 绝对路径(Absolute Path):绝对路径是从根目录(/)开始,指向一个文件或目录的完整路径。它始终以根目录符号/开头。例如:/home/user/documents/file.txt,这个路径指向 root 目录下的 home 目录中的 user 目录,再到 documents 目录,最后到 file.txt 文件。

  2. 相对路径(Relative Path):相对路径是从当前工作目录开始,指向一个文件或目录的路径。它不以/开头,而是根据当前所在的目录进行导航。例如:如果当前工作目录是 /home/user,那么 ./documents/file.txt 是相对路径,其中的 . 就是当前目录的意思,指向 /home/user/,整个路径指向 /home/user/documents/file.txt

  3. ~(Tilde):波浪号 ~ 表示当前用户的主目录。例如:~/documents 表示/home/username/documents,其中 username 是当前登录用户的用户名。

  4. /(Slash):斜杠/有两种主要用法:

    • 作为根目录:/ 表示文件系统的根目录,是所有目录的起点。
    • 作为目录分隔符:在路径中用来分隔不同的目录和文件名。

    例如:/home/user/documents 中的除第一个 / 表示根目录之外,后面每一个 / 都用于分隔不同的目录。

  5. .(Dot):前面解释相对路径的时候提到过,一个点 . 表示当前目录。例如:./script.sh 表示当前目录中的 script.sh 文件。. 常用于运行当前目录下的可执行文件或脚本。

  6. ..(Double Dot):两个点 .. 表示上一级目录。例如:../script.sh 表示执行当前目录的上一级目录中的 script.sh 脚本文件。

以更具体的例子说明一下,假设当前工作目录是/home/user

  • 绝对路径/etc/passwd指向根目录下的etc目录中的passwd文件。
  • 相对路径documents/report.txt指向/home/user/documents/report.txt
  • ~~/documents指向/home/user/documents
  • //var/log指向根目录下的var目录中的log目录。
  • ../script.sh指向当前目录/home/user中的script.sh文件。
  • ..../admin指向上一级目录/home中的admin目录。

通过理解这些基本概念,可以更有效地在 Linux 文件系统中导航和操作文件与目录。

3. 命令结构说明

初学 Linux 时,掌握一些常用命令可以更有效地使用和管理系统。在学习 Linux 命令之前,需要了解一下 Linux 命令有哪些部分组成,如下图:

在这里插入图片描述

关于 Linux 命令行的说明有如下几点:

  1. Linux 命令行通常有三部分组成,分别是命令选项参数,三者之间用空格(两两之间的空格没有数量限制)隔开,其中每条命令行的命令通常只有一个,选项和参数可以有多个,多个选项和参数也需要用空格隔开;
  2. 上图中的选项和参数被 [] 包裹,表示这两项不是必需的,如果命令中的选项或者参数被 <> 包裹,则表示必须加上某个选项或某个参数;
  3. 选项前要加上 -,参数不需要;
  4. 输入完整的命令行后,按下回车 Enter 执行命令。

4. 常见的 Linux 命令

4-1. 文件和目录操作

  1. ls - 列出目录内容

    ls
    ls [directory]
    

    ls 命令全称为 list,如下图所示,执行 ls 命令可以列出当前所在目录的文件夹和文件(仅显示可见文件夹和文件,隐藏文件夹和文件不显示),也可以在 ls 命令后加上其他文件夹,将列出该文件夹里的子文件夹和文件。

    在这里插入图片描述

    如果要显示更加详细的信息,可以加上 -l 选项:

    在这里插入图片描述

    如果要显示所有文件夹和文件(包含隐藏文件夹和文件),可以加上 -a 选项:

    在这里插入图片描述

    选项之间也可以组合使用,例如我现在要查看 C_Pro 文件夹的全部文件夹和文件,并且要详细信息,则命令有两种写法,如下:

    ls -a -l C_Pro
    ls -al C_Pro
    

    如下图所示,为两条命令的执行效果,效果完全一致:

    在这里插入图片描述

  2. cd - 改变目录

    cd /path/to/directory  # 切换到指定目录
    cd ~                   # 切换到当前用户的主目录
    cd ..                  # 切换到上一级目录
    

    cd 命令取自 change directory 的首字母,意思是改变目录,在 Linux 命令行中,主要用于切换到其他的目录去。 例如,当前处在主目录上,要进入该目录下的 C_Pro 文件夹,可以执行 cd C_Pro

    在这里插入图片描述

    回到上一级目录可以执行 cd ..,当然,由于 C_Pro 的上一级目录是主目录,也可以单独执行 cd

    在这里插入图片描述

    [!NOTE]

    在任意路径下,直接执行 cd 命令(不带参数),都是直接回到主目录。此外,在任意路径下进入主目录还可以执行 cd ~cd /home/<username>。前面提过,~ 表示主目录,而 /home/<username> 则是以绝对路径的方式进入主目录,其中 <username> 是当前的用户名。

    cd 命令是可以一次性跨过多个目录进入目标目录的。例如,当前处于 C_Pro 目录下,假设要切换到根目录的 tmp,除了执行 cd /tmp,还可以执行 cd ../../../tmp,如下图:

    在这里插入图片描述

    [!NOTE]

    连续三个 .. 都是相对的上一级目录,第一个 .. 表示 C_Pro 上一级,也就是主目录;第二个 .. 是主目录的上一级,即 /home 目录;第三个 ../home 的上一级,即根目录;然后在根目录下找到 tmp 并进入。

  3. pwd - 显示当前工作目录

    pwd
    

    pwd 命令是取自 print working directory 的首字母,用于显示出当前的路径,路径以绝对路径的方式显示。

    在这里插入图片描述

  4. mkdir - 创建目录(创建文件夹)

    mkdir <directory_name>
    mkdir -p /path/to/directory  # 递归创建目录
    

    mkdir 命令全称为 make directory,即创建目录。例如,在当前目录下创建一个 temp 文件夹:

    在这里插入图片描述

    如果创建一个文件夹的同时,再该文件夹里再创建一个子文件夹,则需要加上 -p 选项。例如,创建 abc 文件夹的同时,再 abc 文件夹里还要创建 123 文件夹,则可以执行 mkdir -p abc/123

    在这里插入图片描述

  5. rmdir - 删除空目录

    rmdir directory_name
    

    rmdir 命令全称为 remove directory,即删除目录,但只能删除空目录。例如,前面创建一个 temp 文件夹,该文件夹目前为空文件夹,则可以执行 rmdir temp 删除:

    在这里插入图片描述

    同理,前面递归创建 abc/123/ 文件夹时,加上 -p 选项,删除文件夹及其子文件夹也可以加上这个选项(所有子文件夹都不能有文件):

    在这里插入图片描述

  6. rm - 删除文件或目录

    rm file_name
    rm -r directory_name  # 递归删除目录及其内容
    rm -f file_name       # 强制删除文件
    

    rm 命令全称为 remove,用于删除文件或者目录。例如,删除当前文件夹下的 123.txt 文件:

    在这里插入图片描述

    前面提到的 rmdir 命令,只能删除空文件夹,如果文件夹里其他文件,则是无法删除的。如果要删除整个文件夹(包含里面所有的子文件夹和文件),可以用 rm 命令加上 -r 选项,来进行递归删除:

    在这里插入图片描述

    [!CAUTION]

    rm 命令加上 -rf 选项,经常被人们拿到网上玩梗,经常被人们调侃成跑路神器,也有人拿去逗刚刚学习 Linxu 的新手。尤其是 rm -rf / 是一个危险且具有破坏性的命令,如果你在 Linux 终端执行了 rm -rf / 或者 rm -rf /* 命令,且刚好是 root 用户,则会删除 Linux 根目录下的所有文件,直接导致系统瘫痪,新手不要轻易尝试。

  7. cp - 复制文件或目录

    cp source_file destination_file
    cp -r source_directory destination_directory  # 递归复制目录
    

    cp 命令全称为 copy,用于复制文件或者目录。例如,将当前文件夹下的 color.sh 文件复制到 C_Pro 文件夹中:

    在这里插入图片描述

    使用 cp 命令复制文件时,还可以对复制后的文件进行重命名。例如,我们在写一个贪食蛇小游戏的项目,现在需要在原来的程序上添加一些其他功能,但又不想破坏之前写过的程序,就可以在复制的时候重命名文件。比如,源文件为 snake.c,执行 cp snake.c snake2.c 后,可以得到与 snake.c 内容一样的 snake2.c 文件(前期没学过 git 进行版本控制,新手都是这样玩的):

    在这里插入图片描述

    此外,cp 命令还可以复制文件夹,只需要加上 -r 选项即可。例如,把当前路径的 snake 文件夹在复制一个作为备份,并把备份命名为 snake_bak

    在这里插入图片描述

  8. mv - 移动或重命名文件或目录

    mv old_name new_name
    mv /path/to/source /path/to/destination
    

    mv 命令全称 move,作用是移动文件或文件夹,相当于 Windows 系统中的剪切操作。与剪切不同的是,mv 还可以进行重命名操作。例如,把当前目录下的 baidu 重命名为 a.out

    在这里插入图片描述

    mv 命令还可以移动文件夹。例如,把 snake 文件夹移动到上一级目录的 CPP_Pro 里:

    在这里插入图片描述

  9. touch - 创建文件

    touch <filenanme>
    

    touch 命令本意是 “触碰” 或 “接触”,新手初学时可能也不太明白,创建文件为什么要用 touch 这个单词。其实,touch 命令有两个作用:一是用于修改文件或目录的时间属性,包括存取时间和更改时间;二是建立一个新的文件。前者的前提是文件已经存在,否则作用就是后者。作为新手,只要知道该命令用于创建文件即可。

    例如,在当前目录创建一个名为 a.c 的文件:

    在这里插入图片描述

    如果对已经存在的文件,进行 touch 命令,则是修改时间属性,例如:

    在这里插入图片描述

4-2. 网络相关命令

  1. ping - 测试网络连通性

    ping www.baidu.com
    ping 192.168.0.1
    

    ping 命令一般用于测试网络的连通性,也可以测试同一局域网下,哪些 IP 是否在线。

    在这里插入图片描述

  2. ifconfig - 显示或配置网络接口(现代系统中推荐使用 ip 命令)

    ifconfig
    

    ifconfig 命令不是 Linux 自带的命令,需要通过安装网络工具才可以使用。如果没用安装工具,系统也会提示,如下:

    在这里插入图片描述

    按提示输入对应的命令进行安装即可。

    在这里插入图片描述

    再次输入 ifconfig

    在这里插入图片描述

  3. ip - 显示或配置网络接口

    ip addr show
    ip link show
    

    如果不安装网络工具,也可以查看 IP 地址,执行 ip addr show 即可:

    在这里插入图片描述

5. 使用命令行时的小技巧

5-1. 使用 TAB 键补全

刚刚接触 Linux 系统时,很多新手觉得打命令行很浪费时间,尤其是遇到命令或者文件名很长的时候,要打完全部很麻烦,而且也很容易出错。其实,Linux 系统是自带命令和文件名补全功能的,很多时候是不需要输入完整的命令或者文件名,靠自动补全功能就可以很高效地完成命令的执行了。在 Linux 系统中,使用 TAB 键进行补全是一个非常方便且强大的功能,可以显著提高命令行操作的效率。以下是关于 TAB 键补全的一些详细说明和使用示例:

  1. 文件和目录补全

    当你输入部分文件或目录名称后,按 TAB 键可以自动补全。如果存在多个匹配项,按 TAB 键两次会列出所有可能的补全选项。

    cd /ho<TAB>
    # 自动补全为:
    cd /home/
    

    如果 /home/ 目录下有多个子目录,比如 user1user2,输入 /home/u<TAB> 后会补全至 /home/user ,再次按 TAB 会列出 /home/user1/home/user2

  2. 命令补全

    当你输入部分命令名称后,按 TAB 键可以自动补全。如果存在多个匹配的命令,按 TAB 键两次会列出所有可能的命令。

    sudo apt-g<TAB>
    # 自动补全为:
    sudo apt-get
    

5-2. 巧用通配符 *

在 Linux 命令行中,通配符 *(星号)是一个非常好用的工具,它可以匹配多个字符。巧用通配符可以显著简化文件操作、查找和管理任务。

例如,当前目录为 C_Pro 文件夹,里面混杂着很多文件类型的文件,而现在只需要显示以 .c 结尾的文件时,可以执行:

ls *.c

效果如下图,最终只会显示扩展名为 .c 的文件。

在这里插入图片描述

同样在这个文件夹下,如果我要搜出文件名里带有字母 b 的文件,可以执行下面的命令:

ls *b*

执行结果如下:

在这里插入图片描述

通配符在删除文件名相似的文件时,也非常好用,如下图所示,删除除了 1.c 之外的所有缓存文件。

在这里插入图片描述

关于通配符还有很多用法,这里不一一展示,后面有机会再总结一篇与通配符用法相关的博客。

5-3. 命令行历史功能

除了用 TAB 键补全命令可以提高效率,在 Linux 命令行中,使用命令历史功能也可以极大地提高效率。其中,最基本的操作就是上下键,上箭头键 ( 可以显示之前执行的命令,下箭头键 (:显示之后的命令,通常在使用上箭头键浏览历史记录后使用。翻找历史命令后,可以按回车执行命令。

此外,用双感叹号 !! 也可以再执行一次上一个命令:

在这里插入图片描述

篇幅问题,还有其他使用命令历史功能这里暂时不讲。

三、文件的详细信息

前面提过,执行 ls -l 命令会显示目录内容的详细列表,每行一个文件或目录,并包含多个字段。那么,这些信息到底是什么意思呢?

以下图为例,该命令列出的详细信息大致可分为八个组成部分,下面一一解释这八个部分的具体意思。

在这里插入图片描述

  1. total 行(首行)

    total 表示目录中所有文件和子目录的大小总和。在文件系统中,文件和目录的大小是以块(block)为单位来表示的。一个块通常是 1KB,但也可能是其他大小(如 4KB),这取决于文件系统的配置。

    上图的系统为 Ubuntu22.04 ,其默认使用的文件系统通常是 ext4。在较新的 Linux 发行版和安装过程中,为了优化性能和磁盘空间的利用,ext4 文件系统的默认块大小通常是 4KB(即 4096 字节)。因此,total 68 的含义就是该文件夹占了 68 个块,每个块 4KB,即整个文件夹大小为 68 * 4KB = 272KB。

    不过,我们只能说这个文件占了 68 个块,不能精确地说它占了 272 字节,因为文件系统在存储文件时,会分配一个或多个块给每个文件。

    例如,一个文件大小为 5678 字节,如果一个块大小为 1024 字节,那么这个文件会占用:

    ceil(5678 / 1024) = ceil(5.55) = 6块
    
  2. 文件类型和权限(第 1 列)

    由于文件较多,我只列出其中一部分的第 1 列信息:

    -rw-rw-r--
    drwxrwxr-x
    -rw-rw-r--
    -rwxrwxr-x
    

    可以发现,每行的第 1 列信息都是有 10 个字符,可以分成两部分:第 1 个字符和后面的 9 个字符。

    第 1 个字符表示文件类型:

    • -:普通文件
    • d:目录
    • l:符号链接
    • c:字符设备文件
    • b:块设备文件
    • p:管道文件
    • s:套接字文件

    后面的 9 个字符表示文件权限,每 3 个字符一组,分别表示所有者其他用户的权限:

    • r:读权限

    • w:写权限

    • x:执行权限

    • -:无权限

    • 示例:

      drwxr-xr-x
      
      • d:目录
      • rwx:所有者拥有可读、可写、可执行三个权限
      • r-x:同组的用户拥有可读和可执行的权限,不可写
      • r-x:其他用户拥有可读和可执行的权限,不可写
  3. 硬链接数(第 2 列)

    表示文件或目录的硬链接数量。对于目录,这个数字包括它本身、它的父目录(…)和它包含的每个子目录的父目录(…)。

    对于初学者来说,可以暂时不用在于这个信息。

  4. 所有者(第 3 列)

    表示文件或目录的所有者,即用户名称(user)。以上图中的 grayson 为例,即 grayson 是这个文件或目录的用户。

  5. (第 4 列)

    表示文件或目录所属的组,即组名称(group)。以上图中的 grayson 为例,即 grayson 是这个文件或目录的用户所在的组。

  6. 文件大小(第 5 列)

    表示文件的大小,以字节(B)为单位。对于目录,表示目录内容的大小。

  7. 最后修改时间(第 6 到第 8 列)

    表示文件或目录的最后修改时间,包括月份、日期和时间。年份会显示在较旧的文件中。

  8. 文件名(第 9 列)

    这个没什么好说的,就是文件或目录的名称。

通过理解这些字段的含义,可以更好地管理和操作 Linux 文件系统,也对后续学习 Linux 系统编程更有帮助。

四、Linux 系统根目录各文件夹的含义

在 Linux 系统中,根目录(/)是整个文件系统的起点,也是所有文件和目录的根节点。无论使用的是哪个 Linux 的发行版,根目录下的文件夹结构基本都是相似的,每个文件夹都有其特定的用途和功能。了解这些文件夹的含义和作用,不仅有助于我们更好地使用 Linux 系统,还可以帮助我们解决各种系统问题。

如下图所示,为 Ubuntu22.04 的根目录:

在这里插入图片描述

除开一些 Ubuntu 系统特定的根目录,下面说明一下所有 Linux 发行版共有的根目录文件夹:

  1. /bin

    存放基本用户命令的二进制文件(binaries),这些命令在单用户模式下也可用。例如:lscpmv 等。

  2. /boot

    存放启动引导程序和内核镜像文件。例如:vmlinuz(内核文件)、initrd(初始RAM磁盘文件)等。

  3. /dev

    包含设备文件,这些文件代表系统中的硬件设备。例如:/dev/sda(硬盘设备)、/dev/tty(终端设备)等。

  4. /etc

    存放系统的全局配置文件和子目录。例如:/etc/passwd(用户信息)、/etc/fstab(文件系统表)等。

  5. /home

    用户的主目录,用户的个人文件和配置文件通常存放在此。

  6. /lib

    存放基本系统程序的共享库文件和内核模块。例如:libc.sold-linux.so 等。

  7. /media

    挂载可移动介质的目录,例如:CD-ROM、USB 驱动器等。系统通常会在此目录下创建子目录以挂载这些设备。

  8. /mnt

    临时挂载文件系统的目录。管理员可以在此目录下创建子目录以临时挂载文件系统。

  9. /opt

    用于安装附加的应用程序包。通常用于存放第三方软件或附加软件包。

  10. /proc

    虚拟文件系统,包含内核和进程的信息。例如:/proc/cpuinfo(CPU信息)、/proc/meminfo(内存信息)等。

  11. /root

    超级用户(root用户)的主目录。与普通用户的主目录类似,但具有更高的权限。

  12. /run

    存放系统启动后生成的临时文件和运行时信息。例如:进程ID文件、守护进程的套接字等。

  13. /sbin

    存放系统管理员使用的基本系统管理命令。例如:ifconfigrebootshutdown 等。

  14. /srv

    存放系统提供的服务数据。例如:Web 服务器的数据文件、FTP 服务器的数据文件等。

  15. /sys

    虚拟文件系统,存放设备和内核相关的信息。用于访问系统硬件和内核信息。

  16. /tmp

    存放临时文件,系统重启后该目录中的文件可能会被删除。

  17. /usr

    全称为 Unix Software Resource(不少人一开始误会为 user 的缩写,包括我),存放用户级应用程序和文件。包含多个子目录,例如:

    • /usr/bin:常用用户命令的二进制文件。
    • /usr/sbin:系统管理员使用的二进制文件。
    • /usr/lib:共享库文件。
    • /usr/share:共享数据文件。
    • /usr/local:本地安装的软件和文件。
  18. /var

    存放可变数据文件,例如日志文件、邮件存储、缓存文件等。例如:

    • /var/log:系统日志文件。
    • /var/mail:用户邮件。
    • /var/cache:应用程序缓存文件。

通过理解这些目录的含义,可以更好地管理和操作 Linux 系统,提高系统维护和故障排除的效率。当然对于新手来说,不管是学习 Linux 系统编程,还是 Linux驱动开发都有很大的帮助。

相关推荐

  1. 10SQL聚合函数

    2024-07-21 17:10:03       31 阅读
  2. Linuxmount命令

    2024-07-21 17:10:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 17:10:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 17:10:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 17:10:03       45 阅读
  4. Python语言-面向对象

    2024-07-21 17:10:03       55 阅读

热门阅读

  1. 工具篇(开发利器)

    2024-07-21 17:10:03       19 阅读
  2. 基于centos2009搭建openstack-t版-ovs网络-脚本运行

    2024-07-21 17:10:03       15 阅读
  3. 手写简易版Spring IOC容器04【学习】

    2024-07-21 17:10:03       19 阅读
  4. 网络文件传输

    2024-07-21 17:10:03       19 阅读
  5. vue2获取视频时长

    2024-07-21 17:10:03       19 阅读
  6. mybatis中的useGeneratedKeys和keyProperty

    2024-07-21 17:10:03       19 阅读
  7. AI Agent的创新之路:AutoGen与LangGraph的比较

    2024-07-21 17:10:03       14 阅读
  8. Android笔试面试题AI答之Activity(3)

    2024-07-21 17:10:03       15 阅读
  9. 关闭终端后继续执行celery任务

    2024-07-21 17:10:03       16 阅读
  10. 学习C语言之 深入了解数据存储

    2024-07-21 17:10:03       16 阅读
  11. WordPress杂技

    2024-07-21 17:10:03       19 阅读