目录
1. 怎么理解“Linux中一切皆文件”?Linux是如何组织文件的?
5. rm -r 和 rmdir (rm -d) 有什么区别?
6. 怎么理解文件间的链接?有几种方式可以管理文件间的链接?它们有什么区别?
8. 说出以下通配符的匹配项:* 、? 、??? 、 a* 、*b、*c* 、[ac]* 、[^abc] 、[!abc]
9. $HOSTNAME 、${HOSNAME} 、$(hostname) 这三个字符串的区别是什么?
11. 为防止shell 命令参数被扩展,使用单引号和双引号有什么区别?
1. 怎么理解“Linux中一切皆文件”?Linux是如何组织文件的?
(1)“Linux中一切皆文件”的理解和文件组织:
在Linux中,“一切皆文件”指的是Linux将各种设备、目录、文件等都视为文件对象进行管理。这种统一的文件系统视图简化了对系统资源的访问和管理。
(2)Linux文件系统的组织:
Linux文件系统的组织是基于树状结构的,根目录 / 下包含了各种子目录和文件,每个子目录又可以包含更多的子目录或文件。文件系统通常由文件、目录、链接和特殊文件(如设备文件)组成。
2. Linux目录树中有哪些重要的目录及其用途?
① bin:存放系统核心命令。
② boot:存放启动Linux时使用的文件。
③ etc:存放系统的配置文件。
④ home:普通用户的主目录。
⑤ root:超级用户(root)的主目录。
⑥ tmp:存放临时文件。
⑦ usr:存放系统应用程序和文件。
⑧ var:存放经常变化的文件,比如日志文件。
⑨ dev:存放设备描述文件,用于与系统中的硬件设备和虚拟设备进行交互。
⑩ media和mnt:用于挂载可移动设备(如光盘、USB闪存驱动器)和临时挂载点的目录。通常,media用于自动挂载,而mnt用于手动挂载。
3. 如何识别一个路径名是绝对路径名还是相对路径名?
① 绝对路径名以 /(斜杠) 开头,例如 /home/user/file.txt ;
② 相对路径名不以 / (斜杠)开头,例如 .../.../file.txt 。
4. 有三个特殊目录,请列举。
① .(一点):表示当前目录;
② ..(两点):表示父级目录;
③ /(斜杠):表示根目录。
5. rm -r 和 rmdir (rm -d) 有什么区别?
① rm -r :递归删除目录及其内容;
② rmdir(rm -d):只能删除空目录。
6. 怎么理解文件间的链接?有几种方式可以管理文件间的链接?它们有什么区别?
(1)文件间的连接:
文件链接是指在文件系统中创建一个文件名,指向另一个文件的链接。
(2)主要有两种链接方式:硬链接和软链接。
① 硬链接:创建的是一个指向inode的新目录项,它与原始文件共享inode和数据块。
类似于:从一个盘向另一个盘复制粘贴文件的缓冲加载过程,该过程就是在创建硬连接的过程。
② 软链接(符号链接):创建的是一个指向原始文件路径的特殊文件。
类似于:Windows中的快捷方式。
(3)二者的区别:
① 创建方式:硬链接创建的是同一inode下的额外文件名,而软链接创建的是一个特殊的文件,内容是目标的路径名。
② 目标类型:硬链接只能指向文件,软链接可以指向文件或目录。
③ 文件系统限制:硬链接不能跨文件系统,软链接可以。
④ 删除行为:删除原始文件后,硬链接仍然可以访问原始数据;删除原始文件后,软链接指向的路径无效,即“死链接”。
7. 如何创建软连接和硬链接? 如何查看?
① 创建软链接:ln -s ;
② 创建硬链接:ln ;
③ 查看链接:ls -l 。
8. 说出以下通配符的匹配项:* 、? 、??? 、 a* 、*b、*c* 、[ac]* 、[^abc] 、[!abc]
① * :任意字符序列(包括空序列)。
② ? :任意单个字符。
③ ??? :正好三个字符。
④ a* :以 a 开头的任意字符序列。
⑤ *b :以 b 结尾的任意字符序列。
⑥ *c* :包含字符 c 的任意字符序列。
⑦ [ac]* :以 a 或 c 开头的任意字符序列。
⑧ [^abc] 或 [!abc] :不以 a、b 或 c 开头的任意字符序列。
9. $HOSTNAME 、${HOSNAME} 、$(hostname) 这三个字符串的区别是什么?
① $HOSTNAME:环境变量,表示当前主机的名称。
② ${HOSNAME}:如果没有定义环境变量 HOSNAME,会直接展示为 ${HOSNAME}。
③ $(hostname):命令替换,执行 hostname 命令并将结果插入到该位置。
10. 如何防止 shell 命令参数被扩展?
使用 ' '(单引号)或者 \(反斜杠)可以防止 shell 对命令参数进行扩展。
11. 为防止shell 命令参数被扩展,使用单引号和双引号有什么区别?
单引号 ' ' :禁止 shell 对字符串中的特殊字符进行扩展,所有字符都被视为普通字符。
双引号 " " :允许在字符串中使用变量,并会对变量进行扩展,但不会对部分特殊字符如 $、\ 和 `` 进行扩展。