文件和目录被组织成一个单根倒置树结构
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
二进制程序:/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
- 普通文件
d 目录文件 directory
b 块设备 blok
c 字符设备 character
l 符号链接文件 link
p 管道文件 pipe
s 套接字文件 socket
pwd命令: printing working directory
[root@VM-0-9-centos ~]# pwd
/root
相关的环境变量:
PWD:当前目录路径
OLDPWD:上一次目录路径
文件名 基名:basename,只取文件名而不要路径
所在目录名:dirname,只取路径,不要文件名
[root@VM-0-9-centos ~]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig
dirname 就是这个文件所在的上级目录 /etc/sysconfig
[root@VM-0-9-centos ~]# basename /etc/sysconfig/network-scripts
network
basename 基名,文件名的本身 network-scripts
命令 cd : change directory 改变目录
选项:-P 切换至物理路径,而非软链接目录
可以使用绝对或相对路径
切换至父目录 : cd ..
切换至当前用户主目录: cd
切换至以前的工作目录: cd -
相关的环境变量
[root@CentOS6 ~ 09:57:23]#echo $OLDPWD $OLDPWD 显示上一次目录的路径
/bin
[root@CentOS6 ~ 09:57:38]#cd - cd - 切换到以前的工作目录
/bin
[root@CentOS6 /bin 09:57:44]#pwd pwd 显示当前路径
/bin
[root@CentOS6 /bin 09:57:54]#
ls 命令可以列出当前目录的内容或指定目录
用法:
ls 选项 目录
常选项:
-a 显示所有隐藏文件
-l 显示额外的信息
-R 目录递归
-ld 目录和符号链接信息
-d 代表目录
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-F 对不同类型文件显示时附加不同的符合: */=>@|
-C 文件多时,以多列的方式显示文件,默认时一列(标准输出)
ls 查看不同后缀文件时的颜色由 /etc/DIR_COLORS 和@LS_COLORS变量定义
文件相关信息:metadata, data
每个文件有三个时间戳:
[root@centos8 ~]#stat /etc/passwd
File: /etc/passwd
Size: 1306 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 134792556 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-12-09 20:37:12.830991350 +0800
Modify: 2019-12-09 20:37:12.826991351 +0800
Change: 2019-12-09 20:37:12.826991351 +0800
Birth:
文件可以包含多种类型的数据,使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使
用
file [options] <filename>...
常用选项:
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
--help 显示命令在线帮助
[root@centos8 ~]#file linux.txt
linux.txt: ASCII text
文件通配符可以用来匹配符合条件的多个文件,方便批理管理文件
通配符采有特定的符号,表示特定的含义,此特符号称为元字符
常见的通配符如下;
字符 | 代表意思 |
---|---|
* | 匹配零个或者多个字符 |
? | 匹配任何单个字符 |
~ | 当前用户家目录 |
~tang | 用户tang家目录 |
~+和. | 当前工作目录 |
~- | 前一个工作目录 |
[0-9] | 匹配数字范围 |
[a-z] | 字母 |
[A-Z] | 字母 |
[wang] | 匹配列表中的任何的一个字符 |
[^wang] | 匹配列表中的所有字符以外的字符 |
另外还有在Linux 系统中预定义的字符类: man 7 glob | |
字符 | 代表意思 |
:--------: | :-------------: |
[:digit:] | 任意数字,相当于0-9 |
[:lower:] | 任意小写字母,表示 a-z |
[:upper:] | 任意大写字母,表示 A-Z |
[:alpha:] | 任意大小写字母 |
[:alnum:] | 任意数字或字母 |
[:blank:] | 水平空白字符 |
[:space:] | 水平或垂直空白字符 |
[:punct:] | 标点符号 |
[:print:] | 可打印字符 |
[:cntrl:] | 控制(非打印)字符 |
[:graph:] | 图形字符 |
[:xdigit:] | 十六进制字符时间 |
touch命令可以用来创建空文件或刷新文件的时间
格式:
touch 选项 文件
选项说明:
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
[16:11:03 root@centos8 data]#touch `date -d "-1 day" +%F_%T`.log
[16:11:48 root@centos8 data]#ls
2019-12-12_16:11:48.log
[16:11:55 root@centos8 data]#touch $(date -d "1 year" +%F_%T).log
[16:13:11 root@centos8 data]#ls
2019-12-12_16:11:48.log 2020-12-13_16:13:11.log
利用 cp (copy) 命令可以实现文件或目录的复制
格式:
cp [选项]... [-T] SOURCE源 DEST目标
cp [选项]... SOURCE... DIRECTORY 把多个源复制过去,目标必须是个文件夹
cp [选项]... -t DIRECTORY SOURCE..
常用用选项:
- i 覆盖前提示
- n 不覆盖,注意两者顺序
- r ,-R 递归复制目录及内部的所有内容
-a 归档,相当于-dR --preserv=all
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p 等同--preserv=mode权限,ownership所有者,timestamp时间戳 保留文件,属性
-v --verbose
-f --force 如果目标不存在,就删除了在复制
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,形式为 filename~
--backup=numbered 目标存在,覆盖前先备份加数字后缀
源\目标 | 不存在 | 存在且为文件 | 存在且为目录 |
---|---|---|---|
一个文件 | 新建DEST,并将SRC中,内容填充至DEST中 | 将SRC中的内容覆盖至DEST中 注意数据丢失风险!建议用 -i 选项 | 在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中 |
多个文件 | 提示错误 | 提示错误 | 在DEST下新建与原文件同名的文件,并将原文件内容复制进新文件中 |
目录需使用-r选项 | 创建指定DEST同名目录,复制SRC目录中所有文件至DEST下 | 提示错误 | 在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中 |
cp -av /etc/ . 复制并显示进度
mv 命令可以实现文件或目录的移到和改名
同一分区移到数据,速度很快:数据位置没有变化
不同分区移动数据,速度相对慢:数据位置发生了变化
格式:
mv [选项]... [-T] SOURCE DEST
mv [选项]... SOURCE... DIRECTORY
mv [选项]... -t DIRECTORY SOURCE...
常见选项:
-i 交换式
-f 强制
-b 目标存在,覆盖前先备份
格式:
rename [options] <expression> <replacement> <file>...
#为所有的conf文件加上.bak后缀:
rename 'conf' 'conf.bak' f*
解析: 搜索文件名中的conf 把他变成conf.bak f* 查找文件中是否有conf,有则修改全部修改为conf.bak
#去掉所有的bak后缀:
rename '.bak' '' *.bak
rm 命令可以删除文件
格式:
rm 选项 文件
常用选项:
-i 交互式 交互式就是会问你是删,还是不删
-f 强制删除
-r 递归
--no-preserve-root 删除/
范例:
删除根目录下所有文件
rm -fr /* 删除根目录下所有文件
删除隐藏文件和非隐藏文件
rm -rf * .[^.]*
rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件
shred是一条终端命令,功能是重复覆盖文件,使得即使是昂贵的硬件探测仪器也难以将数据复原,(参见”shred –help”)。这条命令的功能足够适合实现文件粉碎的功效。
shred格式
shred 选项 文件
常见选项:
-z 最后一次覆盖添加0,以隐藏覆盖操作
-v 能够显示操作进度
-u 覆盖后截断并删除文件
-n 指定覆盖文件内容的次数(默认值是3次)
范例:
shred -zvun 5 文件.txt
常用选项:
-d 只显示目录
-L level: 指定显示的层级数目
-P pattem: 只显示由指定wil-card pattern匹配到的路径
常见选项:
-p 确保目录名称存在,不存在就创建
-v 显示详细信息
-m 创建目录时可以直接指定权限
mkdir -m 777 test
常用选项:
-p 递归删除父空目录
-v 显示详细信息
注意: rmdir 只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树
硬链接本质上就给一个文件起一个新的名字,实质是同一个文件
硬链接特性