Linux文件和目录相关操作
文件目录结构
1 - 文件和目录被组织成一颗倒置的树状结构 2 - 文件系统从根开始,“/” 3 - 文件名称严格区分大小写 4 - 隐藏文件以"."开头 5 - 路径的分隔符为"/"
文件命名规范
1 - 文件字符最长为255个字符 2 - 包括路径在内文件名称最长为4095个 3 - 颜色表示 4 - 蓝色 ---> 文件夹 5 - 绿色 --> 可执行文件 6 - 红色 --> 压缩文件 7 - 蓝绿色 --> 链接文件 8 - 灰色-->其他文件 9 - 白色 --> 文件 10 - 除了斜杠和NULL,其他所有字符都可以使用 11 - 对大小写敏感
文件系统结构
1 - /boot 引导文件的存放位置,内核文件、引导加载器都在此目录 2 - /bin 所有的用户都可以使用的命令 3 - /sbin 管理类的命令 4 - /lib 启动时程序使用的基本库文件 .so结尾 5 - /lib64 专门存放X86_64系统上得辅助库文件 6 - /etc 存放配置文件 7 - /home/USERNAME 普通用户的家目录 8 - /root 管理员的家目录 9 - /media 便携式移动设备的挂载点 10 - /mnt 临时文件的挂载点 11 - /dev 设备文件和特殊文件的存放位置 12 - /opt 第三方的应用的安装位置 13 - /tmp 临时文件的存放位置(定时清空或重启清空) 14 - /usr 存放安装程序 15 - /var 存放经常变化的文件,比如日志 16 - /proc 存放内核启动和进程相关的虚拟文件 17 - /sys 输出当前系统上的硬件相关的文件 18 - /srv 系统上允许的服务用到的数据
linux应用程序的组成
1 - 二进制文件 2 - /bin 3 - /sbin 4 - /usr/bin 5 - /usr/sbin 6 - /usr/local/bin 7 - /usr/local/sbin 8 - 库文件 9 - /lib 10 - /lib64 11 - /usr/lib 12 - /usr/lib64 13 - /usr/local/lib 14 - /usr/local/lib64 15 - 配置文件 16 - /etc 17 - /etc/name 18 - /usr/local/etc 19 - 帮助文件 20 - /usr/share/man 21 - /usr/share/doc 22 - /usr/local/share/man 23 - /usr/local/share/doc
绝对路径和相对路径
1 - 绝对路径 2 - 以根开始 3 - 完整的文件的存放位置 4 - 可以读取到任何一个文件或者文件夹 5 - 相对路径 6 - 不以根开始 7 - 相对当前的位置来决定 8 - 可以简短的表示一个文件或者文件夹 9 - . 当前目录 10 - .. 父级目录
目录名和基名
1 ``` 2 [root@localhost log]#basename /etc/sysconfig/network-scripts/ifcfg-ens33 3 ifcfg-ens33 4 [root@localhost log]#basename /etc/sysconfig/network-scripts 5 network-scripts 6 [root@localhost log]#dirname /etc/sysconfig/network-scripts 7 /etc/sysconfig 8 [root@localhost log]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33 9 /etc/sysconfig/network-scripts 10 ```
切换目录
cd 切换目录 change directory
1 - 可以使用相对路径 2 - 可以使用绝对路径
切换到家目录
1 ``` 2 [root@localhost log]#cd 3 [root@localhost ~]# 4 ```
切换到上一次的目录
1 ``` 2 [root@localhost ~]#cd /etc/sysconfig/network-scripts/ 3 [root@localhost network-scripts]#cd - 4 /root 5 [root@localhost ~]#cd - 6 /etc/sysconfig/network-scripts 7 ```
显示当前的工作目录
pwd print working directory
1 ``` 2 [root@localhost network-scripts]#pwd 3 /etc/sysconfig/network-scripts 4 # 查看链接的真正目录 5 [root@localhost /]#cd lib 6 [root@localhost lib]#pwd -P 7 /usr/lib 8 ```
列出目录或者文件
ls list
命令格式:Usage: ls [OPTION]... [FILE]...
1 ``` 2 ls -a 显示所有文件 3 ls -l 以长格式显示文件列表 4 total 21104 5 -rw-r--r--. 1 root root 0 Aug 22 17:21 10 6 权限 硬盘的引用次数 属主 属组 大小 访问时间 文件名称 7 ls -R 递归显示目录 8 ls -d 显示目录本身 9 ls -1(数字1) 文件分行显示 10 ls -S 安装文件大小排序 11 ls -r 倒序显示 12 ls -t 按照时间来排序 13 ls -lh 显示人类易读的方式 14 ls -d */ 显示当前目录下的文件夹 15 l. 只显示隐藏文件 16 ```
linux下的目录类型
1 - \- 用来表示文件 2 - d 用来表示目录 3 - b 块设备 4 - c 字符设备 5 - l 表示符号链接文件 6 - s socket套接字
查看文件状态
1 ``` 2 File: ‘anaconda-ks.cfg’ 3 Size: 1747 Blocks: 8 IO Block: 4096 regular file 4 Device: fd00h/64768d Inode: 33574992 Links: 1 5 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) 6 Context: system_u:object_r:admin_home_t:s0 7 Access: 2019-08-22 12:09:03.288000381 +0900 # 访问时间 8 Modify: 2019-08-22 11:47:12.262947345 +0900 # 修改时间 9 Change: 2019-08-22 11:47:12.262947345 +0900 # 改动时间 10 atime 访问时间 查看文件内容就会改变 11 mtime 修改时间 改变内容发生变化 12 ctime 改动时间 元数据发生变化 13 ```
touch
1 创建空文件和刷新时间,如果文件存在,则刷新时间,如果文件不存在,则创建文件 2 3 -a 只修改atime和ctime 4 5 -m 只修改mtime和ctime
文件通配符
1 - \* 所有 2 - ? 匹配的是任意单个字符 3 - ~ 表示用户的家目录 4 - [123] 其中一个 5 - [^123] 取反 6 - [0-9] 表示数字 7 - file[a-z] 字母(有坑)缺少Z 8 - file[A-Z] 字母(有坑)缺少a 9 - [:lower:] 小写字母 10 - [:upper:] 大写字母 11 - [:alpha:] 所有字母 a-zA-Z 12 - [:alnum:] 表示字母和数字 13 - [:digit:] 表示数字
创建目录
mkdir 创建目录
1 - -p 递归创建 2 - -v 显示详细过程
显示目录树
1 安装:yum install -y tree 2 3 tree 显示目录树 4 5 -d 只显示文件夹 6 7 -L # 只显示#层
删除目录
1 rmdir 只能删除非空目录 2 3 -p 递归删除空父目录 4 5 -v 显示删除过程 6 7 rm -rf 删除非空目录
复制文件和文件夹
cp copy 默认情况下是别名,原来本身命令是不提示覆盖的
1 ``` 2 Usage: cp [OPTION]... [-T] SOURCE DEST 3 or: cp [OPTION]... SOURCE... DIRECTORY 4 or: cp [OPTION]... -t DIRECTORY SOURCE... 5 -i 显示提示信息 6 -n 不覆盖 7 -r -R 递归复制 8 -d 只复制链接文件,不复制源文件 9 -a 归档 10 -v 显示过程 11 -b 备份原来的文件 12 --backup=number 备份文件加上数字 13 -p 保留原来的属性 14 15 ```
1 - 如果源文件是文件的话 2 - 目标是文件 3 - 目标文件如果不存在的话,则新建目标文件,并把内容写到目标文件中 4 - 如果目标文件存在的话,本来的命令是直接覆盖,建议使用-i来提示用户 5 - 目标是文件夹 6 - 在文件夹中新建一个同名的文件,并把文件内容写到新文件中 7 - 如果源文件为多个文件的话 8 - 目标必须是文件夹,文件夹必须存在,其他情况都会报错 9 - 如果源文件是文件夹的话 10 - 目标文件是文件: 不可以 11 - 目标文件必须是文件夹,必须使用-r选项 12 - 如果目标文件不存在:则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹 13 - 如果目标文件存在: 14 - 如果是文件的话,则报错 15 - 如果是文件夹:则在目标文件夹中创建同名文件夹,并把所有数据都复制到新文件夹
移动、重命名
mv move
1 ``` 2 Usage: mv [OPTION]... [-T] SOURCE DEST 3 or: mv [OPTION]... SOURCE... DIRECTORY 4 or: mv [OPTION]... -t DIRECTORY SOURCE... 5 -i 提示 6 -f 强制 7 -b 备份 8 --backup=number 备份后面加数字 9 -v 显示过程 10 ```
删除
rm remove
1 ``` 2 Usage: rm [OPTION]... FILE... 3 -i 提示 4 -r -R 递归删除 5 -f 强制删除 6 rm -rf 慎用 7 rm -rf /* 8 cd / 9 rm -rf * 10 ```
链接
软链接
1 - 相当于windows的快捷方式 2 - 创建命令 ln -s 源文件 目标文件 3 - 可以对目录做软链接 4 - 指向另外的一个文件或者目录的路径,大小是路径的长度的字符 5 - 对磁盘引用次数没有影响 6 - 可以跨分区 7 - 源文件发生改变,软链接会跟着发生变化 8 - 源文件删除,软链接不能访问
硬链接
1 - 磁盘引用次数会发生变化 2 - 指向的是硬盘上的同一块区域 3 - 磁盘的引用数会随着硬链接次数来增加 4 - 不能对目录做硬链接 5 - 不能跨越分区 6 - 源文件发生改变,硬链接也会跟着变化 7 - 源文件删除以后,硬链接可以访问
查看文件类型
1 file name 查看文件或文件夹类型