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 查看文件或文件夹类型

 

posted @ 2020-04-21 15:20  佛祖让我来巡山  阅读(277)  评论(0编辑  收藏  举报

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网