文件系统基础
操作系统用于明确存储设备或分区上文件的存储结构,在存储设备上组织文件的方式,它主要负责为用户创建文件、存入、读出、修改、删除、复制、剪切等来控制文件。
Linux文件系统结构:一个倒立的树状结构,层级,有索引
/:原始起点
/dev/pts/2:
最左侧/:为根目录
其它/:为路径分隔符
文件路径表示:
绝对路径:以根目录为起点的路径
相对路径:以指定目录为起点的路径
文件命名法则:
1.不能超过255个字符
2.严格区分大小写
3.同一级目录下,不可出现两个文件名同名
4.可以使用/以外的所有字符
文件系统结构:
/boot:存放开机启动文件,内核文件,Bootloader引导程序
/etc:存放配置文件
/dev:存放特殊文件
b:block设备,随机访问,以块为单位
c:character设备,线性访问,以字符为单位
/home:存放普通用户的家目录
/bin:存放基本用户命令,普通用户可执行
/sbin:存放管理命令,只有管理员才有权限执行
/usr:存放共享文件以及二进制文件
/var:经常可变化的文件
/lib:存放程序所依赖的库文件
/lib64:存放用于x86_64系统上的库文件
/root:管理员家目录
/opt:第三方程序文件
/mnt:默认文件系统挂载点
/media:默认光盘挂载点
/tmp:存放临时文件
/srv:系统上运行的服务用到的数据
/proc:用于输出内核与进程相关信息的伪文件系统
/sys:用于输出当前系统上硬件相关信息的伪文件系统
linux上的程序组成:
1.二进制文件:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
2.库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
3.帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
4.配置文件:/etc, /etc/DIRECTORY, /etc/local/etc
linux下文件类型:
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
基础命令
cd命令:切换当前用户的工作目录
cd [OPTIONS...] DIORECTORY
cd /PATH:切换至指定工作目录
cd ~:切换至用户家目录
cd ~USERNAME:切换指定用户的家目录
cd -:与上一次所在工作目录之间来回切换
cd ..:切换之上一级目录
ls命令:显示当前目录或指定目录下的文件列表
ls [OPTIONS...] DIRECTORY
-d:只显示目录文件本身
-i:显示每个文件的inode号
-h:对文件大小做单位换算,一般和-l选项结合用
-R:递归显示目录下所有文件以及子目录下的文件
-r:逆序显示文件列表
-a:显示目录下所有文件,包括以.开头的文件
-A:除了.和..以外,其余都显示
-S:文件以大到小排序显示
-Sr:文件从小到大显示
文件通配符:
*:匹配任意字符任意次
?:匹配任意单个字符
[]:匹配指定范围内任意单个字符
[^]:匹配指定范围外任意单个字符
[0-9]:匹配数字范围
[a-z]:匹配字母范围
[abc123]:范围内任意一个字符
预定义的字符类:#man 7 glob 可查看帮助
[:digit:]:匹配任意单个数字
[:alpha:]:匹配任意单个大小写字母
[:space:]:匹配空白字符
[:punct:]:匹配任意特殊字符
[:upper:]:匹配大写字母
[:lower:]:匹配小写字母
[:alnum:]:匹配字母或数字
pwd命令:显示当前用户所在工作目录
当前工作目录环境变量$PWD
上一次所在目录环境变量$OLDPWD
stat命令:查看文件元数据,包括文件时间戳,权限,大小,属主属组,链接数等
文件三个时间戳:
Access time:访问时间,读取文件内容时将改变此时间戳
Modify time:修改时间,修改文件内容时将改变此时间戳
Change time:改变时间,文件元数据发生变动时,将改变此此时间戳
touch命令:修改文件时间戳或创建空文件
touch [OPTIONS...] FILE...
-a:更新文件的访问时间戳
-m:更新文件的修改时间戳
-c:刷新文件的所有时间戳,如果文件不存在,则不予创建
-t DATE:明确指定文件时间戳
YYmmddHHMM.S
touch FILE:创建空文件
cp命令:复制文件或目录
cp [OPTIONS...] SOURCE DEST
cp SRC DEST:单源复制
如果DEST存在,且为文件,把SRC文件内容覆盖至DEST
如果DEST不存,则创建,并把文件内容覆盖至DEST
如果DEST存在,且为目录,在DEST目录下创建一个与SRC同名的文件,并把内容填充至此
cp SRC... DEST:多源复制
如果DEST不存在,则报错
如果DEST存在,且为目录,则将SRC...复制到DEST目录下
如果DEST存在,且为文件,报错
cp SRC DEST:单源复制,源为目录,需要加-r选项
如果DEST存在,且为目录,将SRC目录复制到DEST目录下
如果DEST存在,则为文件,报错
如果DEST不存在,则创建DEST目录,并把SRC目录下所有文件复制到DEST目录
-r:复制目录文件,默认只能复制文件
-f:强制
-i:交互式
-p:保留原文件的ownership,mode,timestamp属性
-a:归档
-v:显示详细过程
--preserv=
mode:权限
ownership:属主属组
timestamp:时间戳
link:链接属性
all:所有
命令别名:定义别名可以简化操作,提高命令执行效率
alias:显示当前shell进程所定义的别名
定义别名:
alias NAME='COMMAND'
撤销别名:
unalias NAME
执行原始命令:
\COMMAND
'COMMAND'
/PATH/TO/COMMAND
在命令行定义别名只对当前shell进程有效,如果想永久有效,则需要定义在配置文件当中
/etc/bashrc:全局配置,所有用户都生效
~/.bashrc:只对当前用户生效
练习:
1、定义别名命令baketc,每天将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为backupYYYY-mm-dd,备份过程可见
2、创建/testdir/rootdir目录并复制/root所有下文件到该目录内,要求保留原有权限
mv:移动或重命名文件或目录
工作机制与cp命令一致
mv [OPTIONS...] SRC DEST
-i:交互式
-f:强制
重命名文件名:mv NAME NEWNAME
rm:删除文件或目录
rm [OPTIONS...] FILE...
-r:递归删除
-f:强制删除
-i:交互式
注意:危险操作 rm -rf /*
tree命令:以树状格式查看目录结构
-L:查看目录级别
-d:只显示目录
mkdir命令:创建目录
-p:递归创建
-v:显示详细信息
-m MODE:创建目录时,指定权限
rmdir命令:删除空目录
-p:递归删除空目录
-v:显示过程
file命令:查看文件内容类型
file [OPTIONS...] FILE...
-b:列出命令结果,不显示文件名
-c:显示命令执行过程
-f:列出指定文件中的文件的类型
-L:查看软链接文件对应的文件类型
-F:使用指定分隔符号替换输出文件名后默认的”:”分隔符
-i:输出mime类型的字符串
-z:尝试去解读压缩文件的内容