linux中七大文件类型
| 序号 | 类型 | 备注说明 |
|---|---|---|
| 1 | — (小短杠) | 普通文件夹 |
| 2 | d | directory 目录文件夹 |
| 3 | c | character 字符设备(键盘) |
| 4 | b | 块设备(硬盘、磁盘) |
| 5 | l | 软连接link,类似于windows中的快捷方式 |
| 6 | p | 用于程序之间的数据传递,特点是单项。 好处是减少干扰、加快速度。 |
| 7 | s | socket套接字 作用也是用于传递数据,是双向的,可以跨主机。 |
不同颜色对应的文件类型
| 文件颜色 | 文件类型 |
|---|---|
| 黑色 | 普通文件 |
| 绿色 | 可执行文件 |
| 黄色 | 块设备文件硬件设备(硬盘) |
| 红色 | 压缩包 |
| 蓝色 | 文件夹 |
| 天蓝色 | 连接文件(快捷方式) |
linux命令
1、pwd
全称是print work direwctory ,显示当前的绝对路径。
2、cd
change directory 更改、切换工作目录,cd适用对象是文件夹。
3、ls (重点命令!)
list列表,显示当前文件夹下的所有文件。是一个外部命令。
命令语法:
ls [选项]…[参数]… #其中,参数 默认是当前文件夹。
| 选项 | 备注说明 |
|---|---|
| -a | 显示隐藏文件(以点开头的文件为隐藏文件),包括 . 和 .. |
| -A | 显示隐藏文件(linux以点开头的行 是隐藏文件),不包括 . 和 .. |
| -l | 长格式显示文件的属性 ,可以简写成ll,ls -l 等于 ll |
| -R | 递归显示,类似于tree,可以显示文件夹里所有的文件及其逻辑关系。 安装tree的命令:yum install tree -y |
| -d | 查看当前目录属性 ls -d |
| -h | 友好显示文件大小(human,人性化) |
| -r | 倒序显示 |
| -t | 按时间排序,默认新的在前 ls -lt ls -ltr |
| -S(大S) | 按大小排序 |
| -i | 显示文件的inode号,是有限的、唯一的,和磁盘大小有关。 |
| -color | 显示颜色 |
3.1 ls -l 属性拆分(等于ll):
-或d:第一个字母,代表文件的属性。
以rw-r--r--为例:第一个字符后面的9个字符,# 代表文件的权限。
rw- 属主/主人
r-- 属组 #就是对有相同属性的信息,进行设置。
r-- 其他
. 代表建立文件时,启用了selinux 核心防护。
1 或 2 :文件的硬链接个数
第一个root:文件的拥有者 #主人
第二个root:代表文件的拥有组 #也就是属组
0 或 17: 文件的大小
3月 27 12:14 代表文件最后一次的使用时间
123 或 opt : 代表文件的使用名
3.2 ls 与 通配符
生产环境中,如果文件数量巨大,直接使用ls ,容易造成死机,所以ls 一般与 通配符 配合使用。
- 通配符含义:将某些字符,赋予新的含义。这种字符又称为元字符。
- 通配符作用:是匹配文件的名字
通配符与正则表达式的区别:通配符匹配的是文件的名字,而正则表达式匹配文件的内容,或者字符串。
- ls 后面一般固定是 通配符
- grep 后面一般固定是 正则表达式
| 通配符及补充 | 备注说明 |
|---|---|
| * | 代表多个字符、任意长度字符,但不匹配以“.”开头的隐藏文件。如果想显示隐藏文件,要用 .* |
| ? | 代表单个字符,长度为1 |
| p* | 以p开头 |
| *conf | 以conf结尾 |
| *conf * | 包含conf的文件名 |
| [0-9]* | 以数字开头的文件 |
| ^ | 取反 |
| {1..10} | 代表1-10 |
| {a..z} | 代表a-z,注意是两个点.. |
| {A..Z} | 代表A-Z,注意是两个点.. |
| [123] | [ ]代表一个字符,长度为1。[123]是指,在123中显示其中某一个字符。 |
| [:lower:] | 代表小写字母 |
| [:upper:] | 代表大写字母 |
| [[:lower:]] | 代表单个小写字母 |
| [[:alpha:]] | 任意字母 |
4、alias 别名
有的命令比较长,比如:vim /etc/sysconfig/network-scripts/ifcfg-nes33 ,不方便使用,可以采用 alias别名 来简化原本复杂的命令。
命令语法:
alias 自定义命名='原始命令' # 引号一定要记得加。
unalias 取消别名 语法是unalias+自定义命名
注意:
- 使用别名时,不要选用linux系统中原有的命令!比如:系统中原有的ls cd等命令,要避免在别名中进行使用。
- 使用别名生成的命令是临时性的,系统不会长期保存,重启之后别名就会消失。如果想要进行永久保存,则要将别名写入到文件中。
命令的执行顺序:别名 内部 缓存 外部
5、du
disk usage 磁盘使用量
命令语法:
du [选项] [文件或目录]
在文件夹下使用du 可以统计 文件占用磁盘的大小,但是du 看到的不是文件的真实大小,而是该文件占用了磁盘的具体空间,不满4K按4K来算。
注意: du中,-a 和 -s 不能同时使用。
| 选项 | 备注说明 |
|---|---|
| -a | 显示 所有 |
| -s | 显示 总和 |
| -h | 人性化显示 |
| -d 数字 | 显示层级 ,语法:du -d2 ,意思是除了当前文件夹之外,最多显示两层 |
| --exclude | 不计入统计 |
小tips:
- ll (ls -l)看到的是文件的真实大小。假如文件大小是7k,ll命令看到的就是7k
- du看到的却不是文件真实大小,文件大小是4的倍数,不满4K会按4K进行计算。假如文件大小是7k,那du命令看到的就是4+4=8k
小拓展:
1、面试官问你,磁盘满了怎么处理?
答:使用du命令,查找占用量较大的文件夹或文件,然后确认该文件是垃圾或无用文件,可以将其删除。
2、 du统计的时候,是默认统计隐藏文件的。
6、mkdir
mkdir 建立文件夹,文件名最长255个字节。
命令语法:
mkdir [选项] [文件夹名字]... # ...代表可以有多个
| 选项 | 备注说明 |
|---|---|
| -p | 递归建立 |
| -v | 显示过程 |
| mkdir aa | 创建了aa文件夹 |
| mkdir aa cc | 同一文件夹下创建aa 和 cc 文件夹 |
| mkdir -p aa/bb/cc | 创建递归(嵌套)文件夹,中间用 / 相连。 也就是在aa下面创建bb文件夹,在bb下面创建cc文件夹。 |
小拓展:
mkdir -p /mysql/{1,2,3}/{data,etc,log,config} ,请问根据上述公式,共新建了多少个文件夹?
首先判断,该公式创建的 -p是递归
- 首先,在 /根 下面建立了mysql 一个文件夹;
- 其次,在mysql 文件夹下创建了1 2 3 共三个文件夹;
- 然后,分别在1 2 3 三个文件夹下都建立了data,etc,log,config文件夹,共十二个;
- 最后,一共新建了 1+3+12=16 个文件夹。
7、touch
新建空文件
命令语法:
touch [选项] [文件名]
# 若文件名已存在
touch作用:刷新文件的时间
# 若文件名不存在
touch作用:新建文件
touch 123 : 新建空文件夹123 # 注意touch建立的文件都是空文件。
touch aa bb cc : 新建aa bb cc空文件夹。
8、link 链接 (重点!!!)
8.1 硬链接 hard link
硬链接的本质,相当于是小名。 硬链接是将源文件复制出来一份,占用双倍资源,其中一个改动,另一个也会同步改动。 因为无法对文件夹使用硬链接,所以硬链接使用的少,
通过名称找到inode号,再通过inode号对应查看在inode表中的位置,通过位置可以查看对应的文件夹的具体位置。
命令语法:
ln 源文件(建议使用绝对路径) 硬链接位置
8.2 软链接 soft link
类似于windows的快捷方式。 软连接是相当于,为源文件创建一个快捷方式,不额外占用资源,另一处访问快捷方式,实际访问的是源文件路径。如果源文件被修改,软连接就会失效。
软链接作用: 指明源文件在什么位置。用软链接相当于使用原来的文件。
命令语法:
ln -s 源文件(建议使用绝对路径) 软链接位置
8.3 硬链接与软链接区别:
- 硬链接不支持文件夹、软链接支持文件夹;
- 硬链接本质是同一个文件,软链接本质不是同一个文件;
- 硬连接的inode号和源文件是一样的,硬连接的inode号和源文件不一样;
- 删除源文件后,硬连接可以继续查看,而软连接无法再查看;
- 硬连接文件属性是一样的,软链接文件属性不一样。
9、cp 复制
命令语法:
cp [选项] [源文件] [存放点/目的文件] # 可以改名,也可以不改名。
| 选项 | 备注说明 |
|---|---|
| -i | 提醒覆盖,cp默认就是cp -i |
| -f | 不提醒强制覆盖 |
| -p | 保持权限复制 , cp -p 保留权限的复制 |
| -r | 复制文件夹一定要加 ,cp -r 复制文件夹 |
| -a | 更强大的保留权限 ,可以替代-r |
| -v | 可视化,显示过程 |
| -u | 相当于增备,差异备份(只对文件夹起作用) |
10、mv 移动或改名
命令语法:
mv [源文件] [目的地]
怎么区分是移动还是改名?
- 源文件不改变路径,就是改名;
- 源文件改变路径,就是移动,也可以移动并改名。
11、rm 删除
也就是remove 移除。
该命令危险系数较高,不建议使用,使用的话尽量不要加选项。
| 选项 | 备注说明 |
|---|---|
| -f | 强制 |
| -i | 交互 |
| -r | 递归(删除目录需要) |
注意: 删除文件后空间不释放,是因为有别的用户在使用这个文件,所以造成空间不释放。
小拓展: rm删除的文件,有可能会被恢复,在安全要求较高的场景下,可以使用shred安全删除文件。
12、which 查找
which 是常用外部命令 ,搜索范围由环境变量PATH决定。(which的查找路径 echo $PATH)
命令语法:
which 命令|程序名
which ls
whereis passwd # whereis找的比which多一点 , 勤劳模式
13、locate
locate 特点是快,找的是数据库,但是只适合查找老旧文件。
locate passwd
// 手动更新命令:updatedb
14、find(重点!!!)
find特点: 精确查找、实时查找、支持查找条件多。
命令语法:
find [查找范围] [查找精确表达式] [处理动作]
1、范围:要找的文件范围,不写就是默认在当前文件夹
2、精确表达式:选项 条件表达式 描述你要找的文件
3、处理动作:对找到的文件进行处理 # 删除、修改、移动等
14.1 常用可选项
| 选项关键字 | 查找类型 | 备注说明 |
|---|---|---|
| -name | 按名字进行查找 | |
| -user | 按文件属组进行查找 | nouser 是无主文件 |
| -type | 按文件类型进行查找 | 普通文件(f)、目录(d)、块设备(b)、字符设备文件(c) |
| -size | 按文件大小进行查找 | 有三种情况,“ - ”或“ + ”或 “不写” |
| -mtime/-atime/-ctime | 按时间查找 | 目前统一用-mtime ,大于30天是+30。 |
| -inum | 按inode号 | 根据文件inode号查找 |
| -perm | 按权限查找 | 按文件权限查找 |
| -maxdepth level | 最大搜索目录深度 | 将你的文件已分级的形式查找 |
| -mindepth level | 最小搜索目录深度 | 同上 find /etc -maxdepth 2 -mindepth 2 |
# 按层次查找
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度
14.1.1 size扩展
常用单位:K , M , G , C(byte),同时注意1G不能直接写1G,要写1024M。
假设大小为6K:
-6K 表示[0,-1] 意思是:0 到 5K
6K 表示(-1,#自己] 意思是:大于5K,但小于等于6K。# (5K,6K]左开右闭,是指区间不包括左边的内容,但是涵盖右边的内容。
+6K 表示(#自己,∞) 意思是:6K以上
14.1.2 时间戳
每个文件有三个时间戳,目前统一用的时间戳是 -mtime
| 时间戳 | 简写 | 类型 | 备注说明 |
|---|---|---|---|
| access time | atime | 访问时间 | 读取文件内容 |
| modify time | mtime | 修改时间 | 改变文件内容(数据) |
| change time | ctime | 改变时间 | 元数据发生改变(元数据 文件大小 权限 ) |
1、以“天”为单位:
# 同样存在“ - ”或“ + ”或 “不写”
假设时间为3:
-3 表示[0,#自己) 意思是:3天以内
3 表示[#自己,#自己+1) 意思是:3 到 4天
+3 表示[#自己+1,∞] 意思是:4天以上
2、以“分钟”为单位:
-amin
-mmin
-cmin
14.2 条件表达式
- 且(与):-a and
- 或:-o
- 非:-not ! 取反
// -a 的优先级比 -O 高,并且很多时候句子中会隐藏 -a
14.3 处理动作
| 动作 | 备注说明 |
|---|---|
| -ls | 查看 |
| 打印 | |
| -delete | 删除 |
| -fls | 把找到的内容存到文件夹里 |
| -exec | 连接符 ,把前面的命令和后面的命令连接起来,如果用mv移动的时候是不会询问的。 |
| -ok | 连接符 ,find自带的处理动作。 例如:find -type f -ok mv {} /opt/ \ , 移动的时候会询问你。# 后面不要忘加 \结束符 |
| { } | 用于引用查找到的文件名称自身 |