首页›Linux操作系统›Linux网络操作系统-第7节-链接文件与命令进阶

Linux网络操作系统-第7节-链接文件与命令进阶

「文件」在 Linux 里比 Windows 复杂一点也强大一点:一个文件可以有多个名字(硬链接),也可以做一个指路的牌子(软链接)。理解它们的关键是 inode。

第七节 链接文件与命令进阶:硬链接/软链接与inode、输入输出重定向
第七节 链接文件与命令进阶:硬链接/软链接与inode、输入输出重定向

一、inode 是什么

磁盘上每个文件由两部分组成:inode(存权限、大小、数据块位置等元信息)和数据块(真正的内容)。文件名反而不在文件里——目录只是「文件名 → inode 号」的对照表。

  • 硬链接 ln 源 链接名:多加一条「名字→同一 inode」的记录,删掉源文件,数据照样在;
  • 软链接 ln -s 源 链接名:一个独立的新文件(自己的 inode),内容只是路径,像 Windows 快捷方式,源一删就失效。
echo hello > src.txt
ln    src.txt hard.txt    # 硬链接
ln -s src.txt soft.txt    # 软链接
ls -i                     # 对比 inode 号
rm src.txt
cat hard.txt              # 还能读,数据还在
cat soft.txt              # 报错 No such file

二、输入输出重定向

每条命令默认有三个「数据通道」:标准输入(键盘,0)、标准输出(屏幕,1)、标准错误(屏幕,2)。重定向就是把这些通道改接到文件:

写法 含义
> file 输出覆盖写入文件
>> file 输出追加到文件末尾
2> file 只把错误信息写入文件
&>/dev/null 正确错误全部丢弃(/dev/null 是黑洞)
ls /etc/*.conf > conf.list      # 结果存文件
echo 新记录 >> app.log          # 追加不覆盖
find / -name a 2>/dev/null      # 拒绝看权限报错刷屏

验证硬链接最好的方式:echo 改内容,观察 hard.txt 与源同步变化;再看软链接删源即红(失效)。重定向则在第七节之后的每个实验都会反复用到。

上一篇
下一篇