一、Linux的文件系统基础
一切皆文件
a、遍历
b、层级结构
两类数据:
元数据(metadata):索引
数据(data):文件内容
/:根
目录: 路径映射 /dev/tty1
例:
路径:/usr/share/doc
/doc 路径基名
/usr/share 目录名
basename NAME 获取文件的路径基名
dirname NAME 获取文件的路径目录名
FHS:文件层级系统
LSB定义的Linux发行版基础目录名称命名法则及功能规定
/bin,/sbin:系统自身启动和运行时可能会用到的核心二进制程序
/boot:系统引导启动时要加载的静态文件、内核和ramdisk及grub等
/dev:device的简写,所有设备相关文件文件
/etc:大多数应用程序的配置文件集中存放位置
/home:普通用户的家目录的统一存放位置,每个用户的主目录通常默认为/home/USERNAME
/root:管理员root用户的主目录
/lib,/lib64:libraries 库文件的存放位置
/lib/modules/KERNEL_VERSION/:内核模块存放位置
/lost+found:当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损 坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
/media和/mnt:外部存储设备的挂载路径
/misc:备用目录
/opt:早起用于安装第三方程序
/proc:伪文件系统,由内核参数映射而来
内核有很多特性可通过内核参数进行配置,内核也有很多信息如统计数据等可通过内核参数进行 输出
/sys:伪文件系统,由内核中硬件相关信息映射而来
内核中与设备配置相关的信息
/selinux:Security Enhanced Linux
/srv:services简写,服务类程序用到的中间数据
/tmp:temporary,临时文件存放位置,
/usr:
/usr/bin,/usr/sbin:系统允许过程中,用户为完成某些操作可能用到的二进制程序
/usr/lib,/usr/lib64
/usr/share:共享文件
/usr/src:sources的简写,程序的源码存放位置
/usr/local:
/usr/local/bin,/usr/local/sbin:第三方程序安装的二进制程序存放位置
/var:various,经常发生变化的文件存放位置
对于计算机来讲,文件是什么?
文件存储在硬盘上是于二进制数据流的形式
路径分隔符:/
相对路径:从当前位置开始定位的路径表示形式
绝对路径:从根开始定位的路径表示形式
特殊目录:
.表示当前目录
..表示当前的上一级目录
文件有两类标识符:
名字:
数字:inode i节点
Linux文件名:
1、严格区分大小写字符
file,File,FILE
2、文件名可以使用除了/以外的任意字符,建议不使用特殊符号
3、文件名最长255个字符
4、以.开头的文件是隐藏文件
二、文件管理类命令
文本文件的查看
目录管理
文本搜索
文本排序
ls:list显示指定目录下的文件及子目录列表
ls [OPTION]... [FILE]...
常用选项:
-l:长格式显示文件的详细属性信息
drwxr-xr-x. 6 root root 4096 Jun 18 08:27 cache
左起第一位:文件类型
后面9位:文件访问权限 .表示特殊权限
数字:当前文件被硬链接的次数
此文件的所有主
此文件的所有组
数字:文件大小,单位为字节,
如果是目录,表示该目录大小。注意是目录本身大小,而非目录及其下面的文件的总大小。
日期时间:当前文内容件最近一次被修改的时间
-a:显示所以文件,包括隐藏文件
-r:逆逆显示
-R:递归显示
-d:常与-l选项一起使用,用于显示目录自身的属性
-S:按文件大小排序,从大到小排序,逆序
-i:显示文件的inode的号码
-n:以ID号显示所有者和所有组
文件类型:
-:普通文件
d:directory目录文件
l:link,符号链接文件
b:block块设备文件,随机访问设备
c:character字符设备文件,线性设备
p:pipe,管道文件
s:socket,套接字文件
文件内容的类型查看:
file /PATH/TO/FILE
2、文件管理之目录管理:
创建:mkdir:make directory
mkdir [OPTION]... DIRECTORY... -v:verbose 显示创建过程 -p:parent 创建父目录 注意:Linux不以文件后缀名判断文件类型
删除:
rmdir 只能删除空目录
查看:tree
tree -L N DIRECTORY 指明显示层级
bash的特性之三:命令执行状态返回值
命令执行成功与否的状态,由bash自己追踪,保存在特殊变量“$?”中:
返回值:0-255 0成功 1-255:失败
bash的特性之四:命令行展开 #Linux运维工程师十大常用技巧之一
~:自动展开为当前用户的主目录
~USERNAME:自动展开为指定用户的家目录
{}:(x+y)z=xz+yz
(x+y)(m+n)=xm+xn+ym+yn
/tmp/{x,y,z}=/tmp/x,/tmp/y,/tmp/z
/tmp{x,y}{m,n}
练习:
1、创建/tmp下a_c,a_d,b_c,b_d
2、创建/tmp下
x
y1
m
n
y2
r
y3
o
q
p
目录
3、文件管理之文本文件查看命令:
cat,tac,more,less,head,tail,touch,stat
cat
cat [OPTION]... [FILE]...
n 列出行号
E:显示行结束符,非打印字符
tac:逆显示文件内容,
翻屏:shift+pageup/pagedown 缓冲区的内容
分屏文本显示:more,less
more FILENAME
首尾显示:head,tail
显示文件前N行: head -n N 默认前10行
显示文件后N行:tail -n N 默认后10行
-f:follow,常用于手动监控日志 动态显示后10行内容?
stat:查看文件的状态数据信息
root@localhost ~]# stat /etc/fstab File: "/etc/fstab" Size: 1134 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 260107 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-19 11:18:47.307542246 +0800 Modify: 2015-07-02 06:28:17.286227637 +0800 Change: 2015-07-02 06:28:17.286227637 +0800
时间戳:
Access:最近一次被访问的时间
Change:最近一次被改变的时间,即文件属性发生了改变
Modify:最近一次被修改的时间,即文件内容被改变
touch:修改文件的时间戳
-a:仅改变访问时间
-m:仅改变修改时间
-t STAMP:修改指定时间而非当前时间[[CC]YYMMDDhhmm[.ss]]
-c:不创建不存在的文件
程序的组成部分:
二进制程序、库、配置文件、帮助文件
bash特性之五:命令别名和命令引用
命令别名的定义方式:alias ALIAS='COMMAND' #重启失效
撤销方式:unalias ALIAS
unalias -a:撤销所有的定义过的命令别名
命令别名与命令名称相同时,可使用\COMMAND,来调用命令本身,而非命令别名,
另一种方式:使用命令程序的绝对路径
命令引用:
bash支持三类引用:
强引用:‘’
弱引用:“”
命令引用:``,$() 引用一个命令的执行结果,而非命令本身
bash特性之六:文件名通配
文本名中可用的通配符:
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:字符范围,匹配指定字符集合中的任意单个字符
[a-z],[0-9],[a-z0-9],
[^]:字符范围,匹配除指定字符集合 中的任意单个字符
[^a-z],[0-9],[^a-z0-9]
字符集合表示方式:
所有的小写字母:[:lower:]
所有的大写字母:[:upper:]
所有的字母:[:alpha:]
所有数字[:digit:]
所有的字母和数字:[:allnum:]
所有的标点符号:[:punct:]
所有的空白字符:[:space:]
[^[:lower:]]除小写字母外所有字母
echo命令:
echo [OPTIONS]... [STRING]...
-n:关闭自动换行功能
-e:启动转义符
\t:tab键
\n:new line 换行
\b:退格键,删除前一个字符,但是不能放在最后一个位置,WHY?
\033[NN
第一个数字:
3:字体前景色
4:背景色
第二个数字:颜色0-7 1红色 2绿色 3绿色
\033[03m:关闭字体功能
例:
echo -e '\033[31mhello,world.\033[0m'
详细信息见附1
echo "SHELL" 输出变量的值
附1:linux echo颜色控制
echo要变换颜色的时候,要使用参数-e
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
例如:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的颜色
那些ascii code 是对颜色调用的始末.
\033[ ; m …… \033[0m
让字体变为红色并且不停的闪烁
#echo -e "\033[31m \033[5m 请确认是否要停止当前的squid进程,输入[Y/N] \033[0m"
或者
#echo -e "\033[31m \033[05m 请确认是否要停止当前的squid进程,输入[Y/N] \033[0m"
字背景颜色范围:40----49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字颜色:30-----------39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
===============================================ANSI控制码的说明
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \33[37m 设置前景色
\033[40m -- \33[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标