第三章、Linux根文件系统及文件管理命令详解


02_03_Linux根文件系统详解


文件系统:

rootfs: 根文件系统

 

FHS:Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。


根目录下的目录:

/boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)

/dev: 设备文件

         设备文件:

                   块设备:随机访问,数据块

                   字符设备:线性访问,按字符为单位

                   设备号:主设备号(major)和次设备号(minor)

/etc:配置文件

/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME

/root:管理员的家目录;

/lib:库文件

         静态库,  .a

         动态库, .dll, .so (shared object)

         /lib/modules:内核模块文件

/media:挂载点目录,移动设备

/mnt:挂载点目录,额外的临时文件系统

/opt:可选目录,第三方程序的安装目录

/proc:伪文件系统,内核映射文件

/sys:伪文件系统,跟硬件设备相关的属性映射文件

/tmp:临时文件, /var/tmp

/var:可变化的文件

/bin: binary 可执行文件, 用户命令

/sbin:管理命令

 

/usr:universal shared read-only 

    有的说全称为:User System Resources, 见 http://www.ansen.org/2011/11/means-of-usr.html

         /usr/bin

         /usr/sbin

         /usr/lib

        

/usr/local:

         /usr/local/bin

         /usr/local/sbin

         /usr/local/lib

 

文件命名规则:

1、长度不能超过255个字符;

2、不能使用/当文件名

3、严格区分大小写

 

相对路径:以"./"开头的路径,默认

绝对路径: 以"/"开头的路径

 

使用一个操作系统主要工作:

文件管理

目录管理

运行程序

设备管理

软件管理

网络管理

        

目录管理

前面介绍过的:ls、cd、pwd

 

1. mkdir:创建空目录

         -p:

         -v: verbose


mkdir -pv /mnt/test/x/m /mnt/test/y

mkdir -pv /mnt/test/{x/m,y}

 

波浪线展开:~USERNAME


命令行展开:

在/mnt/test2/下创建a_b, a_c, d_b, d_c 四个目录

(a+d)(b+c)=ab+ac+db+dc

mkdir /mnt/test2/{a,d}_{b,c}  #作为一个参数中间不可有空格

 

2. tree:查看目录树

 

3. rmdir: (remove directory) 删除目录

         删除空目录

         -p 如果父目录为空,同样删除

        

文件创建和删除

4. touch: 修改文件时间戳

         -a 仅修改访问时间

         -m 仅修改修改时间

         -t  指定时间为 [[CC]YY]MMDDhhmm[.ss]

         -c 不创建文件


5. stat:显示文件状态

    包括: 访问,修改,改变时间


创建文件,可以使用文件编辑器 nano

 

6. rm:删除文件

         -i interactive 交互式

         -f force 强制

         -r recursive 递归

        

练习:

1、创建目录

(1)在/mnt下创建boot和sysroot;

(2)在/mnt/boot下创建grub;

(3)在/mnt/sysroot下创建proc, sys, bin, sbin, lib, usr, var, etc, dev, home, root, tmp

         a)在/mnt/sysroot/usr下创建bin, sbin, lib

         b)在/mnt/sysroot/lib下创建modules

         c)在/mnt/sysroot/var下创建run, log, lock

         d)在/mnt/sysroot/etc下创建init.d

        

(1) mkdir /mnt/{boot,sysroot}

(2) mkdir /mnt/boot/grub

(3) mkdir -p /mnt/sysroot/{proc,sys,bin,sbin,lib/modules,usr/{bin,sbin,lib},var{run,log,lock},etc/init.d,dev,home,root,tmp} 


02_04_Linux文件管理命令详解


复制和移动文件

7. cp: copy

cp SRC DEST

         -R, -r, --recursive 递归

         -i,--interactive 交互

         -f --force 强制

         -p   same as --preserve=mode,ownership,timestamps

         -P,--no-dereference      never follow symbolic links in SOURCE

         -L, --dereference            always follow symbolic links in SOURCE

         -d  same as --no-dereference --preserve=links 

         -a,--archive  same as -dR --preserve=all 归档复制,常用于备份

        

cp file1 file2 file3

一个文件到一个文件

多个文件到一个目录

cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp/

 

复制文件时如果目标存在。1. 目标为文件,提示覆盖。2. 目标为目录,复制的文件放到目录下。

复制目录时如果目标存在。1.目标为文件,无法覆盖。2. 目标为目录,复制源目录下所有文件到新目录下,如果文件重复,提示覆盖。


8. mv: move 移动文件

 

mv SRC DEST

mv -t DEST SRC

 

9. install: 复制文件并设置属性

         -d DIRECOTRY ... :创建目录

         SRC DEST

          -t 指定目录

          -m 设置权限

install -t DIRECTORY SRC...


install 不能复制目录。 


作业1:

1、创建目录/backup

# mkdir -v /backup

2、复制目录/etc至/backup目录中,并重命名为“etc-当前日期”,如etc-2013-02-26;要求保留文件原来的属性,保持链接文件;

# cp -a /etc /backup/etc-2013-02-28  

3、复制文件/etc/inittab为/tmp/inittab.new,并删除inittab.new文件的后两行;

# cp /etc/inittab  /tmp/inittab.new

# nano /tmp/inittab.new

 

作业2:

1、思考:ls命令是否可以显示某目录的整体大小,即包括其内部的所有文件的整体大小?

2、通过帮助手册,学习使用du命令;

3、通过帮助,学习read命令;


1、不能,du可以

2、du -s -h

3、read var

 

03_01_Linux文件管理类命令详解


作业3:

描述GPL, BSD, Apache三个开源协定的大体联系及区别。

 

自由软件

开源协定,版权描述

 

作业4:

1、如何获取Linux当前最新的内核版本号?

         www.kernel.org

2、列出你所了解的Linux发行版,并说明其跟Linux内核的关系。

         Linux, GNU: GNU/Linux, 源代码

        

         发行版:Fedora, RedHat(CentOS), SUSE, Debian(Ubuntu, Mint), Gentoo, LFS(Linux From Scratch)

        

RedHat: 通用格式,为了能支持大多数的CPU,编译出来的二进制可执行程序在较低平台上编译。为了发挥硬件最大性能,自己编译一个针对自己平台的Linux,Gento和LFS提供了这种方式。

 

复习:

运行程序

设备管理

软件管理

进程管理

网络管理

 

目录管理:

ls、cd、pwd、mkdir、rmdir、tree

 

文件管理:

touch、stat、file、rm、cp、mv、nano

 

日期时间:

date、clock、hwclock、cal

 

查看文本:

cat、tac、more、less、head、tail

 

10. cat:连接并显示

         -n 显示行号

         -E Show end, 行尾显示$

        

shift + pageup/pagedown 在终端缓存中翻页

分屏显示:

more、less


11. more: 向后翻

12. less:

 man命令就是在用less命令查看文档。

 

13. head:查看前n行

    n 默认为10

head -n 2 == head -2


14. tail:查看后n行

         -n 默认为10    

tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;

 

文本处理:

cut、join、sed、awk

 

文本文件:

Tom:23:male:2013/05/06

 

15. cut:

         -d: 指定字段分隔符,默认是空格

         -f: 指定要显示的字段

                   -f 1,3

                   -f 1-3

 

16. sort : 文本排序

         -n:数值排序

         -r: 降序

         -t, --field-separator=SEP: 字段分隔符

         -k, --key=POS1[,POS2]: 以哪个字段为关键字进行排序

         -u: 排序后相同的行只显示一次

         -f: 排序时忽略字符大小写

        

17. uniq: 去掉重复的行(必须相邻)

         -c, --count: 显示文件中行重复的次数

         -d, --repeated:  only print duplicate lines 只显示重复的行

        

18. wc: (word count) 文本统计

         -l, --lines 只显示行数

         -w, --words 

         -c, --bytes

         -L, --max-line-length 

 

不使用参数,默认显示:行,单词,字节数


19. tr:字符处理命令 —— 转换或删除字符

tr [OPTION]... SET1 [SET2]

         -d: 删除出现在字符集中的所有字符(只能有SET1)

 把SET1中字符转换成SET2中字符,SET1 和SET2一对应, 如:tr ab AB, 会把a 换成A,b换成B