Linux文件管理
文件系统与目录结构
- 文件和目录被组织成一个单根倒置树结构
- 文件系统从根开始,用“/”表示
- 文件名称区分大小写
- 以.开通的文件为隐藏文件
- 路径分隔符为 /
文件命名规则
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 颜色表示
- 蓝色 —>目录
- 绿色—>可执行文件
- 红色—>压缩文件
- 蓝绿色—>链接文件
- 灰色—>其他文件
- 白色 普通的文件
- 除了斜杠/和NULL,所有的字符都有效
- 文件名称大小写敏感
文件系统结构
- /boot 引导文件存放目录,内核文件、引导加载器都存放在此目录
- /bin 所有用户使用的基本命令,不能关联至独立分区,系统启动即会用到程序
- /sbin 管理类的基本命令;不能关联至独立分区,系统启动即会用到程序
- /lib 启动时程序以来的基本共享库以及内核模块文件
- /lib64 专用于X86_64系统上的辅助共享库文件存放位置
- /etc 配置文件目录
- /home/USERNAME 普通用户家目录
- /root 管理员的家目录
- /media 便携式移动设备挂载点
- /mnt 临时文件系统挂载点
- /dev 设备文件及特殊文件存储位置
- /opt 第三方应用程序的安装位置
- /src 系统上允许的服务用到的数据
- /tmp 临时文件存储位置
- /usr 存放安装程序
- /var 存放经常变化的文件,比如日志
- /proc 用于输出内核与进程相关的虚拟文件系统
- /sys 用于输出当前系统上硬件设备相关虚拟文件系统
- /selinux selinux相关的安全策略等信息的存储位置
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
centos7 目录变化
- /bin —>/usr/bin
- /sbin —> /usr/sbin
- /lib —>/usr/lib
- /lib64 —> /usr/lib64
相对和绝对路径
相对路径
- 以根开始
- 完整的文件的位置路径
- 可用于任何想指定一个文件名
绝对路径
- 不以根开始
- 指定相对于当前工作工作目录或者某目录的位置
- 可以作为简短的形式指定一个文件名
- . 当前目录
- .. 父目录
basename
[root@centos network-scripts]#basename /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0 [root@centos network-scripts]#dirname /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts
更改目录
cd 改变目录 (change directory)
使用绝对或者相对路径
- cd /etc/sysconfig/network-script
- cd ifcfg-eth0
切换至父目录
[root@centos network-scripts]#cd .. [root@centos sysconfig]#
切换之当前用户主目录
[root@centos sysconfig]#cd [root@centos ~]#
切换至上一次的工作目录
[root@centos ~]#cd - /etc/sysconfig
显示当前工作目录
pwd (printing working directory)
[root@localhost etc]#pwd /etc [root@localhost etc]#cd sysconfig/network-scripts/ [root@localhost network-scripts]#pwd /etc/sysconfig/network-scripts
列出目录内容
列出当前目录或者指定目录的内容
用法 ls [options] [files_or_dirs]
ls -a 列出所有的文件,包括隐藏文件 ls -l 使用较长格式列出信息 ls -R 目录递归显示
ls -d 显示目录本身 ls -ld 显示目录(本身)和符号链接信息 ls -1(数字1) 文件分行显示 ls -S 按从大到小排序
ls -lSr 升序排序 ls -t 按创建时间排序 ls -r 倒序排序 ls -d */ 显示当前目录下的目录 ls -lh 按照人类易读方式显示 l. 显示当前目录下的目录 ls -u 配合-t选项,显示并按照atime从心到旧排序
文件通配符
- * 匹配零个或者多个字符
- ?匹配任意单个字符
- ~ 当前用户的家目录
- [0-9] 匹配数字范围
- [a-z] 字母(有坑)从a-z并且包括A-Y
- [A-Z] 字母 (有坑) 从A-Z 并且包括b-z
- [abcdef] 任意一个字符
- [:digit:] 任意数字
- [:lower:] 任意小写字母
- [:upper:] 任意大写字母
- [:alpha:] 任意字母
- a-zA-Z 所有字母
- [:alnum:] 任意数字或字母
- a-zA-Z0-9 任意字母或者数字
查看文件状态
[root@localhost etc]#stat a.txt
File: ‘a.txt’
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17645672 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2019-07-31 21:08:58.702394849 +0800
Modify: 2019-07-31 21:09:40.923395591 +0800
Change: 2019-07-31 21:09:40.923395591 +0800
Birth: -
[root@centos ~]#stat a.txt 文件:"a.txt" 大小:5 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:17645672 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:etc_t:s0 最近访问:2019-07-31 21:08:58.702394849 +0800 最近更改:2019-07-31 21:09:40.923395591 +0800 最近改动:2019-07-31 21:09:40.923395591 +0800 创建时间:- access time 访问时间,atime 读取文件内容 modify time 修改时间,mtime 改变文件内容 change time 改变时间 ctime 原数据发生改变
创建空文件和刷新时间
touch
- 格式 touch [OPTION]... FILE...
- -a 仅改变atime 和ctime
- -m 仅改变mtime和ctime
如果文件存在的话,则修改时间
如果不存在,则创建文件
复制文件和文件夹
Usage: cp [OPTION]... [-T] SOURCE(源文件) DEST(目标文件) or: cp [OPTION]... SOURCE... DIRECTORY or: cp [OPTION]... -t DIRECTORY SOURCE...
-
-
如果目标不存在,新建一个目标文件,并将数据写入到目标文件里面
-
如果目标文件存在
-
如果目标文件是一个目录,直接在目标目标下面新建一个跟源文件同名的文件,并将数据目标文件写入到文件
-
如果说目标文件是一个文件,直接就覆盖,为了安全起见,建议cp配合-i使用
-
-
-
如果源文件是多个文件的话
-
目标文件如果是文件的话,则直接报错
-
如果目标文件是一个目录的话,则直接复制进目录
-
-
如果源文件是目录的话
-
如果目标不存在,则创建指定的目录,必须-r选项
-
如果说目录存在
-
如果目录是一个文件的话,则会报错
-
如果目标是一个目录的话,则在目录下面创建一个新的同名目录,并把文件复制过去
-
-
常用选项
-i 覆盖前提示 -n 不覆盖 -f 强制 -r -R 递归复制目录及内部的所有文件 -a 归档 -d 不复制源文件,只复制链接名 -v 显示详细的步骤 -b 目标存在,覆盖前先备份 --backup=numbered 目标存在,覆盖前先备份加数字后缀 -p 保留原来属性
移动和重命名文件
Usage: mv [OPTION]... [-T] SOURCE DEST or: mv [OPTION]... SOURCE... DIRECTORY or: mv [OPTION]... -t DIRECTORY SOURCE... -i 交互式 -f 强制 -b 覆盖前做备份 -v 显示进度
删除
rm [OPTION]... FILE... -i 交互式 -f 强制删除 -r 递归删除 rm -rf /* 慎用 cd / rm -rf *
目录操作
- tree 显示目录树
yum install -y tree tree name -L 控制显示的层数 -b 只显示目录
- mkdir 创建目录
mkdir s21 mkdir s21-{3..10} mkdir -p a/b/c/d mkdir -pv {s13,s14}/{ss11,ss12}/{sss11,sss12} -p 递归创建 -v 显示创建过程
- rmdir 删除空目录
- -p 递归删除父空目录
- -v 显示详细信息
- rm -r 递归删除目录树
linux下的文件类型
- - 普通文件
- d 目录文件
- b 块设备
- c 字符设备
- l 符号链接文件
- p 管道文件pipe
- s 套接字文件socket
查看文件类型
file
链接
硬链接
-
-
-
源文件发生改变,目标会发生改变
-
将硬盘的引用次数+1
-
删除
-
将磁盘上的引用次数-1
-
源文件删除对目标不会受影响
-
-
不能对目录做硬链接
-
不能跨越分区
-
软链接
-
-
-
ln -s 可以生成软链接
-
链接大小就是制定的源文件的字符数
-
源文件发生改变,目标会发生改变
-
删除
-
源文件删除目标会收影响
-
-
可以对目录做软链接
-
可以跨域分区
-