/etc/fstab 中的所有空格是做什么用的?

/etc/fstab 中的所有空格是做什么用的?

我知道我可以使用它mount来设置/目录,并且可以使用它/etc/fstab在重新启动时重新安装它们。

测试 fstab 文件也很有趣mount -faV

当我查看 fstab 文件时,空间数量令人不安。我期望一个空格(如命令参数之间的分隔符)或四个空格(如制表符)。我一次看到七个空间,几乎按照惯例。

我的问题是:/etc/fstab 中的所有空格是做什么用的?

(也许还有——如果我得到错误的号码会有什么影响吗?)

答案1

空格的数量是一种美观地分隔列/字段的方法。除此之外没有任何意义。 IE否 列之间的空白量并不重要

列之间的空间由空格(包括制表符)组成,并且列本身(例如逗号分隔的选项)不得包含未加引号的空格。

fstab(5)手册页:

每行上的字段由制表符或空格分隔。

如果安装点的名称包含空格,则可以将其转义为“\040”。

例子

对于以下几行,仅使用单个选项卡很难实现对齐。最后,fstab没有空白的部分看起来比你现在认为的更混乱。

/dev/md3 /data/vm btrfs defaults 0   0
/var/spool/cron/crontabs /etc/crontabs bind defaults,bind
//bkpsrv/backup /mnt/backup-server cifs iocharset=utf8,rw,credentials=/etc/credentials.txt,file_mode=0660,dir_mode=0770,_netdev

你还能看到“柱子”吗?

答案2

空格或制表符分隔字段。使用尽可能少或尽可能多的花色。如果您发现 fstab 有点不可读,请尝试使用column它来美化它。

fstab 的 column -t 用法示例

答案3

getmntent提出一个解析错误如果一行超出字符限制。 (getmntent这是阅读 /etc/fstab 的推荐方法)。

man getmntent揭示了:

getmntent() 函数从流中读取文件系统描述文件的下一行,并返回一个指向包含文件中一行中的断开字段的结构的指针。

从中可以看出getmtent_r,用于存储文件描述符信息的结构mount存储为数组buflen- 因此对于大于 的条目会发生解析错误buflen

因此选择这种设计是因为\转义字符不适用于fstab单个条目中的多个换行符。

你可以很容易地验证这一点,区别在于不是只是化妆品...

相关内容