目录
有些符号不表示原来的意思,它代表一类字符
匹配文件的名字(内容看不到)
符号 | 效果 |
? | 代表任意一个字符,匹配一个字符 f?.txt |
* | 代表任意长度的字符 |
{1..10} | 1到10 |
{a..z} | a、b、c……z |
{A..Z} | A 、B、 C……Z |
[123] | 值代表任意一个字符,1或2或3 |
[a-z] | 单个小写字母 |
[0-9] | 单个数字 |
\ | 代表原来的意思,如:\*就是* |
[[:lower:]] | “[:lower:]”固定格式,小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhou] | ^代表非,除了,匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
[[:alpha:]] | 任意字母 |
[root@localhost opt]#touch {1..10}.txt //创建1-10.txt文件
[root@localhost opt]#ls [123].txt //匹配包含123任意一个数的文件
1.txt 2.txt 3.txt
[root@localhost opt]#ls
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt rh
[root@localhost opt]#ls [0-9].txt //代表单个数字,等价[0123456789]
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[root@localhost opt]#ls [0-9][0-9].txt //代表两位数
10.txt
[root@localhost opt]#ls ?.txt //?代表一个字符
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[root@localhost opt]#ls ??.txt //??代表两个字符
10.txt
[root@localhost opt]#ls [^1].txt //^代表非,除了
2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
alias //显示所有别名
alias 自定义的命令=原始命令(包含特殊字符需要加引号)
[root@localhost ~]#alias myens33='/etc/sysconfig/network-scripts/ifcfg-ens33' //定义别名
[root@localhost ~]#alias //查看所有别名
[root@localhost ~]#unalias myens33 //删除别名
[root@localhost ~]#\别名 //显示原始命令
命令执行顺序:绝对路径--->别名--->内部--->hash--->外部
使用alias建立的别名是临时性的,重启失效;如果想永久修改,需要写入配置文件。
[root@localhost ~]#du //disk ues查看磁盘使用量
[root@localhost ~]#du -s //总大小
[root@localhost ~]#du -a //每个文件大小,as不可以同时使用
[root@localhost ~]#du -h //显示格式
[root@localhost ~]#du -d 2 //只查看前两层文件夹,不包含自己目录,--max--depth=2
[root@localhost ~]#du --exclude=*.txt //排除已txt结尾的,--exclude代表不计入统计
疑问:磁盘空间不足如何排查哪些文件夹比较大?
首先输入命令du -a,查看每个文件的大小,然后查看大文件是否可以删除,必要时需要做备份。
mkdir [选项] 目录位置及名称…
mkdir -p 递归建立
mkdir -v 显示过程
[root@localhost ky35]#mkdir a b c //一次创建3个文件夹目录
[root@localhost ky35]#mkdir -p aa/bb/cc -v //-p,递归建立,-v显示过程,在aa下创建bb,在bb下创建cc
mkdir: 已创建目录 "aa"
mkdir: 已创建目录 "aa/bb"
mkdir: 已创建目录 "aa/bb/cc"
[root@localhost ky35]#tree
.
├── a
├── aa
│?? └── bb
│?? └── cc
├── b
└── c
6 directories, 0 files
[root@localhost ky35]#mkdir -p a/{1,2,3}/{4,5,6} //一次建立多个文件
[root@localhost ky35]#tree
.
├── a
│?? ├── 1
│?? │?? ├── 4
│?? │?? ├── 5
│?? │?? └── 6
│?? ├── 2
│?? │?? ├── 4
│?? │?? ├── 5
│?? │?? └── 6
│?? └── 3
│?? ├── 4
│?? ├── 5
│?? └── 6
touch 新文件…(可为空)
① 新建空文件夹(文件名不存在)
② 刷新文件时间(文件名存在)
[root@localhost ky35]#touch 1.txt 2.txt 3.txt //创建新文件
[root@localhost ky35]#echo " " > 4.txt //创建4.txt空文件
[root@localhost ky35]#ls
1.txt 2.txt 3.txt 4.txt
[root@localhost ky35]#stat 1.txt //查看三个时间戳
文件:"1.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:67385786 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:default_t:s0
最近访问:2023-12-20 19:09:18.500368360 +0800 //access time访问时间,atime读取文件内容
最近更改:2023-12-20 19:09:18.500368360 +0800 //modify time修改时间,mtime改变文件内容(数据)
最近改动:2023-12-20 19:09:18.500368360 +0800 //change time 改变时间,ctime原数据发生改变(原数据,文件大小,权限)
生产环境正常用不到,硬链接即多了一条找到indoe号文件的方法路径,硬盘并没有多一个文件(内存可能会多一个),做了硬链接的两个文件除了名字不一样,其他的都一样。注意文件夹不能做硬链接,但是可能有多种名称,如:a文件夹可能叫做“.”,"../"。
类似于windows里快捷方式,软连接,符号连接,会指向原来的文件。其占用大小一般是指向路径字节大小。
对比项 | 硬链接 | 软连接 |
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
[root@localhost ky35]#ln -s ./1.txt 2.txt //创建软链接,语法:ln -s 源文件绝对路径 目的位置
[root@localhost ky35]#ln ./2.txt 6.txt //创建硬链接,语法:ln 源文件绝对路径 目的位置
[root@localhost ky35]#ll
总用量 4
-rw-r--r--. 1 root root 0 12月 20 19:09 1.txt
-rw-r--r--. 2 root root 0 12月 20 19:09 2.txt
-rw-r--r--. 1 root root 0 12月 20 19:09 3.txt
-rw-r--r--. 1 root root 2 12月 20 19:09 4.txt
lrwxrwxrwx. 1 root root 7 12月 20 19:29 5.txt -> ./1.txt //l代表软连接
-rw-r--r--. 2 root root 0 12月 20 19:09 6.txt //2代表硬链接个数
[root@localhost ky35]#ll
总用量 0
-rw-r--r--. 1 root root 0 12月 20 19:48 1.txt
-rw-r--r--. 2 root root 0 12月 20 19:09 2.txt
lrwxrwxrwx. 1 root root 7 12月 20 19:29 5.txt -> ./1.txt
-rw-r--r--. 2 root root 0 12月 20 19:09 6.txt
[root@localhost ky35]#rm -rf 1.txt 2.txt
[root@localhost ky35]#ll
总用量 0
lrwxrwxrwx. 1 root root 7 12月 20 19:29 5.txt -> ./1.txt //5.txt变红,/1.txt闪烁
-rw-r--r--. 1 root root 0 12月 20 19:09 6.txt //硬链接不受影响
[root@localhost ky35]#touch 1.txt 2.txt //重新创建文件,软连接可以访问
[root@localhost ky35]#rm -rf ./5.txt //删除软连接5.txt
注:删软链接文件的时候一定不能加/,否则会删除源文件内容?
cp 源文件路径 复制到 目标文件夹
选项 | 说明 |
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化,显示过程 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
[root@localhost ky35]#tree
.
└── a
└── 1.txt
1 directory, 1 file
[root@localhost ky35]#cp ./a ./b -v -r //复制文件夹a包含文件内容到文件夹b,没有文件夹b新建
"./a" -> "./b"
"./a/1.txt" -> "./b/1.txt"
[root@localhost ky35]#tree
.
├── a
│?? └── 1.txt
└── b
└── 1.txt
mv 源文件路径 目标文件路径(增加新名称代表移动并改名;目标文件更换名称即重命名)
选项 | 说明 |
-f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
-i | 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) |
-n | 如果目标文件已经存在,则不会覆盖移动,而且不询问用户 |
-v | 显示文件或目录的移动过程 |
[root@localhost ky35]#tree
.
├── a
│?? └── 1.txt
└── b
2 directories, 1 file
[root@localhost ky35]#mv ./a/1.txt ./b/2.txt //移动文件夹a下的1.txt到文件夹b下并改名2.txt
[root@localhost ky35]#tree
.
├── a
└── b
└── 2.txt
可以批量改名,但是有局限性,只能该统一标识,如:"txt"全部改成"txt.bak*"
rm [选项] 要删除的文件或目录
rm -rf 文件或目录的路径 // -r代表递归 -f代表强制
除了rm可以删除文件,shared也具有删除文件,其原理就是望硬盘块里写0,即删除;格式:shred? [选项]? 参数
查找外部命令文件,如ls,mkdir,其搜索范围在:“echo $PATH”
which 命令或者程序名
会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件
[root@localhost ky35]#whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
//whereis 可以查找命令具体的位置所在
Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
优点:快
缺点:① 找的系统的数据库文件,不具备实时性,数据库需要实际更新
? ? ? ? ? ?② 模糊查找不够精确
? ? ? ? ? ?③ 不是去磁盘上直接找
find命令是一种通过条件匹配在指定目录下查找对应文件或者目录的工具。匹配的条件可以是文件名称、类型、大小、权限属性、时间戳等。还可以配合相关命令对匹配到的文件作出后续处理。
缺点:慢
优点:① 精确查找
? ? ? ? ? ?② 选项多,查找的功能多?
find 范围(不写即当前目录) 查找条件(名字大小类型) 处理动作
-name:按名字查找
-size:按大小查找
-user:按用户查找
-type :按类型查找
-ls:显示详情信息
-delete:删除
-ok:询问是否要操作
-exec:不询问直接操作
找到30天以上普通文件以log结尾删除,移动
find / -mtime +30 -type f -name "*log" -exec mv {} /opt \;
find / -mtime +30 -type f -name "*log" -delete
find / -mtime +30 -type f -name "*log" -exec rm -rf {} /opt \;
注:-exec只会出现在find命令里?
管道命令可以将多条命令按一定指向结合起来,一次性完成复杂的处理任务,管道即“|”。
[root@localhost ky35]#echo "123456789" > 1.txt | cat 1.txt | grep 9
123456789
//此时可以看见数字9高亮