|     linux shell   |    

复习Linux文件系统的基本概念。方便以后查阅。这不是命令大全,只强调几个我自己需要搞清楚的重点。

路径

绝对路径

/表示根目录。

~表示当前用户HOME目录。

下面的绝对路径表示: 更换当前工作目录至根目录下的usr文件夹下的bin文件夹。

[me@linuxbox bin]$ cd /usr/bin

pwd命令显示绝对路径:

[me@linuxbox bin]$ pwd
/usr/bin

相对路径

  1. .指当前工作目录。
  2. ..指当前工作目录的父目录。

如果当前工作目录为系统根目录下的usr文件夹,

[me@linuxbox usr]$ pwd
/usr
[me@linuxbox usr]$ cd ./bin

那么原先的cd /usr/bin也可以写成c ./bin

记住!几乎在所有的情况,./是可以省略的。因为./默认加入$PATH环境变量。

[me@linuxbox usr]$ cd bin

选项和参数

掌握了下面这个命令的通用格式,

command -options arguments

options一般有 长选项,用两个分隔符分割--,和 短选项,用一个分隔符-分割,之分。同一件事,经常同时有长选项和短选项两个版本,效果一样。

遇到不懂的就用-h查手册。 会查手册,基本Linux命令行就能用起来了。同样,-h是短选项,它还有个长选项的版本-help

help信息太多,一般结合lessgrep命令显示,看得更清楚,

wget -h | less   #更多内容,翻页往下看
wget -h | grep XXX  #只显示包含有XXX的内容

文件系统

记住这句话:

在类Unix系统中,一切皆是文件! (大多数都是文本文件,所以Linux中没有秘密存在!)

类UNIX系统中像open(),read(),write()这样的系统调用,直接面对的不是物理介质。而是虚拟文件系统(VFS)。它是一套通用抽象文件模型,拥有统一的接口和数据结构。不管底下的物理介质如何,系统调用面对的都是一套统一的VFS接口。

VFS有4种主要对象类型:superblock, dentry, inodefile.

  1. superblock: 文件系统的宏观控制信息。
  2. inode: 除了文件名之外的描述文件属性的元信息。
  3. dentry: 文件名和inode对象的映射。
  4. file: 文件本体。目录也是文件。

比如/etc/foo路径,有两个目录文件: 根目录/etc目录,以及一个普通文件foo组成。先通过dentry中的filename-inode映射,找到对应的inode编号,并找到inode。找到inode就能找到具体的文件所在的位置。

关于inode有一篇很好的文章:阮一峰的 《理解inode》

本章的主要命令

有了以下4个命令,就可以在文件系统里,自由穿梭。

本章提到的所有命令