Skip to main content

浏览文件系统

常见Linux目录名称

目录用途
/虚拟目录的根目录。通常不会在这里存储文件
/bin二进制目录,存放许多用户级的GNU工具
/boot启动目录,存放启动文件
/dev设备目录,Linux在这里创建设备节点
/etc系统配置文件目录
/home主目录,Linux在这里创建用户目录
/lib库目录,存放系统和应用程序的库文件
/media媒体目录,可移动媒体设备的常用挂载点
/mnt挂载目录,另一个可移动媒体设备的常用挂载点
/opt可选目录,常用于存放第三方软件包和数据文件
/proc进程目录,存放现有硬件及当前进程的相关信息
/rootroot用户的主目录
/sbin系统二进制目录,存放许多GNU管理员级工具
/run运行目录,存放系统运作时的运行时数据
/srv服务目录,存放本地服务的相关文件
/sys系统目录,存放系统硬件信息的相关文件
/tmp临时目录,可以在该目录中创建和删除临时工作文件
/usr用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
/var可变目录,用以存放经常变化的文件,比如日志文件

常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS)。很多Linux发行版都遵循了FHS。

FHS偶尔会进行更新。你可能会发现有些Linux发行版仍在使用旧的FHS标准,而另外一些则只实现了部分当前标准。要想保持与FHS标准同步,请访问其官方主页: http://www.pathname.com/fhs .

ls

ls 命令最基本的形式会显示当前目录下的文件和目录, 输出的列表是按字母排序的(按列排序而不是按行排序). LS_COLORS 环境变量控制输出不同的颜色来区分不同类型的文件.

  • ls -F 会在目录名后加了正斜线 /, 在可执行文件的后面加个星号.
  • ls -R 会递归列出了当前目录下包含的子目录中的文件.
  • ls -D 表示仅显示目录
  • ls -i 查看文件或目录的inode编号

在过滤器中使用星号和问号被称为文件扩展匹配(file globbing),指的是使用通配符进行模式匹配的过程。通配符正式的名称叫作元字符通配符(metacharacter wildcards):

  • * 匹配多个字符
  • ? 匹配单个字符
  • [ai] 匹配一个为 a 或者 i 的字符
  • [!b] 匹配单个非 b 字符
  • [a-i] 匹配字符范围

touch

touch 命令用来创建空文件, 如果文件已经存在, 表示修改修改文件的 修改时间(文件内容不变).

touch -a file 用来修改文件file的访问时间.

note

ls -l ./ 命令默认显示的是修改时间, 要想查看文件的访问时间, 需要加入另外一个参数: --time=atime

cp

cp source_file /home/christine/Documents/, 这个例子在目标目录名尾部加上了一个正斜线 /, 这表明 Documents 是目录而非文件. 这有助于明确目的, 而且在复制单个文件时非常重要. 如果没有使用正斜线, 子目录 /home/christine/Documents 又不存在, 在这种情况下, 试图将一个文件复制到 Documents 子目录反而会创建一个名为 Documents 的文件.

ln

链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:

  • 符号链接
  • 硬链接

符号链接 就是一个实实在在的文件, 它指向存放在虚拟目录结构中某个地方的另一个文件. 这两个通过符号链接在一起的文件, 彼此的内容并不相同. 可以使用 ln -s target link_name 创建符号链接.

# 查看源文件(target)信息
$ ls -lih idea.sh
29367343 -rwxr-xr-x 1 alan alan 5.9K Nov 23 16:57 idea.sh

# 创建链接文件
$ ln -s $PWD/idea.sh /usr/local/bin/idea.sh

# 查看链接文件(link_name)信息
$ ls -lih /usr/local/bin/idea.sh
22939073 lrwxrwxrwx 1 root root 46 Feb 12 16:59 /usr/local/bin/idea.sh -> /data/programs/idea-IC-202.6397.94/bin/idea.sh

符号链接文件(/usr/local/bin/idea.sh) 46byte, 而源文件(/data/programs/idea-IC-202.6397.94/bin/idea.sh)是 5.9KB, 这是因为符号链接文件仅仅只是指向源文件, 它们的内容并不相同, 是两个完全不同的文件.

另一种证明链接文件是独立文件的方法是查看inode编号, 文件或目录的inode编号是一个用于标识的唯一数字, 这个数字由内核分配给文件系统中的每一个对象. 从这个例子中可以看出源文件的inode是 29367343, 而链接文件的inode是 22939073.

硬链接 会创建独立的虚拟文件, 其中包含了原始文件的信息及位置. 但是它们从根本上而言是同一个文件. 引用硬链接文件等同于引用了源文件. 要创建硬链接, 使用 ln 命令时不再需要加入额外的参数:

# 创建硬连接
$ ln ./idea.sh hard_idea.sh

# 查看源文件和硬连接
$ ls -lih ./*idea.sh
29367343 -rwxr-xr-x 2 alan alan 5.9K Nov 23 16:57 ./hard_idea.sh
29367343 -rwxr-xr-x 2 alan alan 5.9K Nov 23 16:57 ./idea.sh

硬连接(hard_idea.sh)和源文件(idea.sh)的inode编号是相同的, 表明是同一个文件. 链接计数(列表中第三项)显示这两个文件都有两个链接. 另外, 它们的文件大小也一模一样.

只能对处于同一存储媒体的文件创建硬链接, 要想在不同存储媒体的文件之间创建链接, 只能使用符号链接.

查看文件内容

cat 命令用来查看整个文件内容.

  • -n 参数会给所有的行加上行号
  • -b 参数只给有文本的行加上行号
  • -T 参数不让制表符出现

more 用来分页查看文件内容, less 是加强版的 more.

tailhead 分别用来查看文件后10行和前10行的内容(通过-n参数可以修改默认行数).

tail -f 允许你在其他进程使用该文件时查看文件的内容. tail命令会保持活动状态, 并不断显示添加到文件中的内容. 这是实时监测系统日志的绝妙方式.