文件系统结构元素:
1.cent6.8和cent7两个版本的根目录不一样,实际上是同一个文件。
/bin 和/usr/bin
/sbin 和/usr/sbin
/lib 和/usr/lib
/lib64 和/usr/lib64
2.普通用户用bin root用户用sbin 普通用户即使能够查到sbin目录也无权限操作。
3.boot为Linux内核,本身不大,进入boot目录后,可输入du –sh来查看目录大小。 du –sh /boot
4.dev主要放各种硬件设备,也有可能是逻辑设备,ll/dev/Sda为硬盘 ll /dev/zero为0设备
b=block 块设备,物理设备,随机访问,有缓存
c=character 字符设备,逻辑上设备,顺序访问,无缓存
/dev/null和/dev/zero 都是空设备
dd if=/dev/zero of=f1 bs=1 count=1 可以读0并写到文件里,bs为块大小,1个字节
查看文件十六进制 hexdum f1 ;查看文件二进制 xxd f1
0a是换行的意思
选项:
-n length 只格式化输入文件的前length个字节
-C 输出规范的十六进制和ASCII码
-b 单字节八进制显示
-c 单字节字符显示
-d 双字节十进制显示
-o 双字节八进制显示
-x 双字节十六进制显示
-s 从偏移量开始输出
-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:‘a/b "format1" "format2
5./etc为配置文件,./etc/issue:预登录消息标识文件,开机时启动。
6.lib是库,函数库,也是内核的各种模块。
lib下的modules下有好多驱动,输入cd /lib/modules/后,输入ls会看到内核版本,再输入uname –r 。进入内核版本cd,然后ls就会看到驱动文件,声卡显卡等等,驱动应该都是.ko打头的,比如说cd kernel/ ,然后ls,再进入一个文件夹就会看见.ko文件,我们经常访问的ext4就是个驱动。
7.media:cent6.8的挂载点,cent7挂载点在/run/meida下,对应的mnt为手动挂载,比如一定硬盘
8.opt挂载第三方软件,现在用得少。/etc/opt
9.srv各种服务可能会用到的数据,tmp临时文件,权限宽松,
10.usr:根是第一层,usr第二层。
/usr/include/ 防止第三方语言C语言库的头文件.h,模块调用
/usr/local/是放置第三方软件,外部服务,源代码等。
/usr/share/dict/words放置Linux语言字典,查看某个单词输入:grep zhang words
11.var 可变数据,日志,文件,搭建外部服务都是放在var里,有一个特别重要的log文件,专门放日志,再比如last文件,为用户成功登录的信息列表,但是这些日志信息是存在wtmp文件里的,wtmp就在/var/log文件下。如果文件被移走last就显示不出信息了
12.proc 进程,内核信息都在这个文件里,proc里好多进程编号,在proc可以查看分区,cat partitions ,大小为0个字节,因为proc不是硬盘文件,是内存数据。查看CPU信息,输入 cd /proc/ . 查看内存信息,输入cat meminfo
13.sys,主要放硬件信息,比如块设备,例如:新增加硬盘.vmdk,怎么查看新增加的硬盘呢?最笨的方法就是退出重启,最简单的方法就是刷新,echo”- --”> /sys/class/scsi_host/host2/scan,然后查看ls /dev/sd*,就会看见新增加的硬盘。
14./misc:只有cent6.8有,可以挂光盘,神奇自动挂载光盘, 只要访问后/misc/cd就会df挂载。
15./net:直接访问ip网络服务.
16.文件系统: 文件和目录被组织成一个单根倒置树结构
文件系统从根目录下开始,用“/”表示
根文件系统(rootfs):root filesystem
名称是大小写敏感
以.开头的文件为隐藏文件
路径分隔的/
文件有两类数据:元数据:metadata(数据的属性) ,
数据:data,存放数据的数据内容的地方叫数据块block。
元数据和数据内容存放的位置是不一致的。
查看分区块的大小:tune2fs –l /dev/sda2
文件系统分层结构:LSB Linux Standard Base
FHS: (Filesystem Hierarchy Standard)
17.文件名规则:
包括路径在内文件名称最长4095个字节,用/分隔的路径不能超过255个字节。
蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件 粉色-->套接字文件 浅黄色-->管道
套接字文件的作用:(socket)
/dev/log s开头的文件是套接字文件
进程间通信(源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务)
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用{比如-},有些字符需要用引号来引用它们。
标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL,Mail,mail, mAiL
18.文件系统结构:
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点,cent6.8和cent7挂载点不一样。
/mnt:临时文件系统挂载点,
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
19. /usr: universalshared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
20./var: variable datafiles
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据;通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
21.Linux上的应用程序的组成部分:
二进制程序:/bin,/sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib,/lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc,/etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man,/usr/share/doc, /usr/local/share/man, /usr/local/share/doc
22.linux下的文件类型:
-:普通文件
d: 目录文件
b: 块设备
c: 字符设备
l:符号链接文件
p: 管道文件pipe
s: 套接字文件socket
23.显示当前工作目录:
每个shell和系统进程都有一个当前的工作目录
CWD: currentwork directory
显示当前shell CWD的绝对路径#pwd: printing working directory
只能回到上一级目录:cd –
pwd实际上显示的就是$PWD的内容
pwd –L 目录连接链接时,输出连接路径
pwd –p 显示绝对(物理)路径,而非使用连接(link)路径
实例:/bin/pwd
命令:/bin/pwd [选项]
输出:[root@localhost init.d]# /bin/pwd
/etc/rc.d/init.d
[root@localhost init.d]# /bin/pwd --help
[root@localhost init.d]# /bin/pwd -P
/etc/rc.d/init.d
[root@localhost init.d]# /bin/pwd -L
/etc/init.d
24.绝对路径:
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
相对路径:
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
例如:dir目录下有三个文件夹ABC,三个文件夹下分别有f1 f2 f3文件,当我想在f1文件下调用b里的f2时,绝对路径/dir/b/f2.sh,相对路径../b/f2.sh。当把dir文件移动别的文件夹时,绝对路径就会出现错误。编脚本的时候尤其要注意这个路径问题。
25.更改目录:cd 改变目录
为绝对或相对路径:
cd/home/joshua/work
cdproject/docs
cd 进入用户主目录;
cd ~ 进入用户主目录;cd ~wang 就进到了王的目录,王目录进不到root目录下。
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。
相关的环境变量:
PWD:保存了当前目录路径
OLDPWD:上一次所在目录路径
Cd命令用法:cd –P:加上-P的选项显示的是物理的路径
cd –P /bin –e 如果-p选项指定,当前目录不能确定成功还是失败,退出后看状态,输入echo $? 结果值为0表示成功,非0表示失败.
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是: ln –s 源文件目标文件。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less
26.ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。ls 命令在日常的linux操作中用的很多!
1. 命令格式:
ls [选项] [目录名]
2. 命令功能:
列出目标目录中所有的子目录和文件。
3. 常用参数:
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)
配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是‘never‘、‘always‘或‘auto‘其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列,-Sr就是按照相反的顺序排序
-ld目录和符号链接信息
-R, –recursive 同时列出所有子目录层,递归
--block-size=M就是以M为单位显示。
-s, –size 以块大小为单位列出所有文件的大小,
-S 根据文件大小排序
--time =WORD,与-l一起用,WORD 以下是可选用的 WORD 和它们代表的相应选项代替Mtime显示
--sort =:WORD以下是可选用的 WORD 和它们代表的相应选项
extension –X status –c none -U time –t size –S atime –u access -u
version –v use –u
例如: ls –cl–sort=time 按照ctime顺序排序, 等于 ls -clt
-t 以文件修改时间排序
-u 配合 -t:显示访问时间atime而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件,分行显示
–help 显示此帮助信息并离开
–version 显示版本信息并离开
27.查看文件状态
vstat:查看详细的元数据
v文件:metadata, data
v三个时间戳:
accesstime:访问时间,atime,读取文件内容
modifytime: 修改时间,mtime,改变文件内容(数据)
changetime: 改变时间,ctime,元数据发生改变
如果atime的时间是一天以上就会变
如果atime比ctime时间旧,就会改变(正常情况下atime的时间比ctime的新)
避免频繁更改,提高性能
atime可以安全不让修改, 输入chattr +A f1就可以使atime不变了(f1为文件名)。
chattr强行锁定atime,不让修改
echo xx >>aa 将xx写入aa文件里,Mtime和ctime就会发生改变。
28.文件通配符
v *匹配零个或多个字符
v ?匹配任何单个字符,
v ~当前用户家目录
v ~username用户家目录
v ~+当前工作目录,pwd或$PWD或$OLDPWD或 .
v ~- 前一个工作目录
v [0-9]匹配一个数字范围
或的关系,匹配任意字符f[1a3]=f1 fa f3
v[a-z]:大写和小写字母
是按照aAbBcC……zZ匹配 f[a-c] 就是aAbBc
v[A-Z]:大写字母
f[A-C] AbBcC
v[wxc]匹配列表中的任何的一个字符
v[^wxc]匹配列表中的所有字符以外的字符
v预定义的字符类:#man 7 glob
[[:digit:]]:任意数字,相当于0-9
[[:lower:]]:任意小写字母
[[:upper:]]:任意大写字母
[[:alpha:]]:任意大小写字母
[[:alnum:]]:任意数字或字母
[[:space:]]:空格
[[:punct:]]:标点符号
原文地址:http://jaggerzhang.blog.51cto.com/11887424/1832368