RH124问答3:从命令行管理文件
2026/9/12 0:06:55 网站建设 项目流程

目录

1. 怎么理解“Linux 中一切皆文件”?Linux是如何组织文件的?

2. Linux 目录树中有哪些重要的目录及其用途?

3. 如何识别一个路径名是绝对路径名还是相对路径名?

4. rm -r 和 rmdir (rm -d) 有什么区别?

5. 怎么理解文件间的链接?有几种方式可以管理文件间的链接?它们有什么区别?

6. 如何创建软连接和硬链接? 如何查看?

7. 说出以下通配符的匹配项:* 、? 、??? 、 a* 、*b、*c* 、[ac]* 、[^abc] 、[!abc]

8. $HOSTNAME 、${HOSNAME} 、$(hostname) 这三个字符串的区别是什么?

9. 为防止shell 命令参数被扩展,使用单引号和双引号有什么区别?


1. 怎么理解“Linux 中一切皆文件”?Linux是如何组织文件的?

“一切皆文件” 的意思是:系统中的绝大多数资源(普通文件、目录、硬件设备、进程信息、网络套接字、管道等)都通过文件系统接口来访问。用户可以使用相同的系统调用(例如 open、read、write)和命令(如 cat、ls)来操作这些资源。

Linux组织文件的方式:Linux采用树状目录结构。整个文件系统从“根” / 开始,所有文件和目录都以倒挂的树形结构分层组织,每个分支(目录)可以包含子目录和文件。与Windows的多盘符(C:、D:)不同,Linux只有一个根,其他存储设备(例如U盘、硬盘分区)需要通过挂载(mount)操作连接到目录树中的某个点才能访问。

2. Linux 目录树中有哪些重要的目录及其用途?

(1)/(根目录):是整个文件系统的起点,所有其他目录都挂载在它下面。

(2)/boot:存放启动引导程序和Linux内核文件、初始化镜像。

(3)/dev设备文件目录,包含硬盘(如/dev/sda)、终端、随机数生成器等设备接口。

(4)/etc系统配置文件目录,大多数为文本文件。例如网络配置、用户密码(/etc/passwd)、软件配置等。

(5)/home普通用户的家目录。

(6)/root超级用户(root)的家目录,普通用户无权访问。

(7)/var:存放经常变化的数据,如系统日志(/var/log)、邮件队列(/var/spool/mail)、缓存等,重启后也永久保存

(8)/usr系统软件用户程序的存放位置。例如/usr/bin(普通用户命令)、/usr/lib(库文件)、/usr/local(手动编译安装的软件)。

(9)/run:自系统启动以来启动的进程的运行时数据

(10)/tmp临时文件目录,重启后通常清空。所有用户可读写,但默认设置了粘滞位(sticky)。10天内未访问、未更改或未修改的文件将自动从这个目录中删除。

(11)/var/tmp:这个目录中的文件如果在 30天内未曾访问、更改或修改过,将被自动删除。

3. 如何识别一个路径名是绝对路径名还是相对路径名?

绝对路径:以斜线/ 开头,从根目录开始完整描述一个文件的位置。例如:/home/alice/notes.txt。

相对路径:不以 / 开头,是相对于当前工作目录来描述位置。例如:当前在 /home 下,alice/notes.txt 就是相对路径。需要认识两个特殊符号:. 表示当前目录,.. 表示上一级目录。

识别方法:看路径的第一个字符 ——如果是 / 就是绝对路径,否则是相对路径

4. rm -r 和 rmdir (rm -d) 有什么区别?

rmdir (rm -d) 专门用于删除空目录,不能删除非空目录,会报错。

rm -r递归的删除目录及其所有内容(包括子目录和文件),功能强大,可以删除非空目录。

5. 怎么理解文件间的链接?有几种方式可以管理文件间的链接?它们有什么区别?

文件链接是指为一个文件创建多个“名字”,使不同的路径指向同一个文件数据。Linux 通过硬链接和软链接(符号链接) 两种方式管理文件链接。

硬链接:多个文件名指向同一个 inode(文件数据块),相当于给文件起了多个别名。所有硬链接地位平等,删除其中一个不影响其他链接访问数据,只有当最后一个硬链接被删除时文件数据才会真正释放。硬链接不能跨文件系统,也不能链接目录。它的用途是节省磁盘空间(同一文件多位置出现)或确保重要文件有备用入口。

软链接:是一个特殊的文件,其内容是指向目标文件的路径(类似于 Windows 的快捷方式)。它可以跨文件系统,也可以链接目录。但如果原文件被删除,软链接会变成悬空链接。它的用途是为深层路径创建便捷入口、解决版本兼容问题、或实现快速切换不同配置。

6. 如何创建软连接和硬链接? 如何查看?

创建硬链接:ln 源文件 链接名
创建软链接:ln -s 源文件 链接名(源文件建议使用绝对路径)

查看方式:

ls -l:软链接显示 -> 指向目标,硬链接没有特殊标记。

ls -li:用于查看inode号,硬链接的inode号相同。

7. 说出以下通配符的匹配项:* 、? 、??? 、 a* 、*b、*c* 、[ac]* 、[^abc] 、[!abc]

(1)*:匹配任意长度(包括零个)的任意字符。

(2)?:匹配单个任意字符。

(3)???:匹配恰好三个任意字符。

(4)a*:匹配以字母 a 开头的任意字符串。

(5)*b:匹配以字母 b 结尾的任意字符串。

(6)*c*:匹配包含字母 c 的任意字符串。

(7)[ac]*:匹配以 a 或 c 开头的任意字符串。

(8)[^abc]:匹配不是 a、b、c 的单个字符(^ 表示取反)。

(9)[!abc]:作用同 [^abc](在部分Shell中 ! 等同于 ^)。

8. $HOSTNAME 、${HOSNAME} 、$(hostname) 这三个字符串的区别是什么?

$HOSTNAME读取名为 HOSTNAME 的变量值

${HOSTNAME}:和 $HOSTNAME 一样,花括号用来隔开变量名和其他字符,例如 ${HOSTNAME}123 可以正确解析变量后拼接123 。

$(hostname):执行 hostname 命令,把命令的输出结果替换到当前位置。

重要区别:$HOSTNAME 和 ${HOSTNAME} 读取的是Shell变量(可能为空或未定义),而 $(hostname) 执行的是外部命令/bin/hostname。在红帽系统中,HOSTNAME 变量通常在用户登录时由系统自动设置(值为当前主机名),与直接执行 hostname 命令获得的输出通常相同,但二者原理完全不同。

9. 为防止shell 命令参数被扩展,使用单引号和双引号有什么区别?

单引号完全保留字面值。所有特殊字符都失去其特殊含义,当作普通字符处理。

双引号部分保留。大多数特殊字符被保护,但 $(变量)、`(反引号)、\(转义)、!(历史命令,开启时)依旧会被解释。

如果想原样输出所有内容(包括 $ 符号),就使用单引号;如果想在字符串中保留变量扩展功能(允许使用 $),那么使用用双引号

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询