1. 如何理解文件间的链接?有哪几种方式可以管理文件间的链接?它们有什么区别?
在Linux中,文件链接分为两种类型:硬链接和符号链接(软链接)。
-
硬链接:指向同一个inode,增加对已有文件的引用计数。删除任意一个硬链接不会影响其他链接,只有当所有链接都被删除时,文件才会真正被移除。
-
符号链接(软链接):是一个特殊的文件,包含指向另一个文件或目录的路径。如果目标文件被删除,符号链接将变成“悬空”。
2. 解释“悬空符号链接”
悬空符号链接指的是指向不存在的目标文件或目录的符号链接。例如,如果你删除了一个符号链接所指向的实际文件,那么这个符号链接就会变成悬空状态,尝试访问它会导致错误。
3. Bash Shell有哪些主要扩展?
Bash Shell支持多种扩展,包括但不限于:
- 命令替换:使用
$(command)
或反引号`command`
来执行命令并将输出作为字符串插入。 - 变量替换:如
${VAR}
、${VAR:-default}
等。 - 历史扩展:通过
!
开头的历史事件扩展。 - 别名:为常用命令设置简短别名。
4. 变量名称的规范: $HOSTNAME
、${HOSNAME}
、$(hostname)这三个字符串的区别是什么?
$HOSTNAME
:直接引用名为HOSTNAME
的环境变量。${HOSNAME}
:正确应为${HOSTNAME}
,用于明确变量边界,避免解析错误。$(hostname)
:执行hostname
命令并返回其输出结果,而不是引用变量。
5. 如何防止shell命令参数扩展?I/O重定向的作用?
- 防止参数扩展:可以在双引号内使用单引号包裹需要保护的部分,或者使用转义字符
\
。 - I/O重定向:允许将命令的标准输入、输出和错误流重定向到文件或其他位置。例如,
>
将标准输出重定向到文件,<
从文件读取作为标准输入。
6. 怎么理解管道?管道和重定向有什么区别?什么情况下需要使用tee命令?
- 管道:用
|
连接两个命令,前一命令的输出作为下一命令的输入。例如,ls | grep txt
。 - 重定向:改变输入输出的方向,如
>
写入文件,<
读取文件。 - tee命令:当你既想查看命令输出又想保存到文件时使用。例如,
ls | tee output.txt
会同时显示输出并保存到output.txt
。
7. vim是什么?Vim和vi有什么关系?vim有几种运行模式?
- vim:是vi编辑器的一个改进版本,功能更强大且支持更多特性。
- 关系:vi是Unix系统上的原始文本编辑器,vim是对vi的增强版。
- 模式:
- 普通模式:用于导航和执行命令。
- 插入模式:用于编辑文本。
- 可视模式:用于选择文本块。
- 命令行模式:用于执行命令或搜索。
8. shell会话是什么?一个用户可以启动多个shell会话吗?
- shell会话:每次打开终端窗口或通过SSH登录时创建的交互式环境。
- 多会话支持:是的,一个用户可以通过不同的终端窗口或标签页启动多个shell会话。
9. shell变量和环境变量的区别
- shell变量:仅在当前shell会话中有效,通常用于临时存储信息。
- 环境变量:对当前shell及其子进程都有效,常用于配置应用程序的行为。例如,
$PATH
定义了可执行文件的查找路径。