目录
一、通配符
1.定义
2.作用
二、命令
1.alias——别名
1.1定义
1.2通式
1.3命令执行的过程
2.du(disk usage)—— 查看磁盘使用量
2.1定义
2.2常用选项
2.3拓展——ll和du的区别
3.mkdir——建立文件夹
3.1格式
3.2示例
4.touch——建空文件
4.1功能
5.硬连接与软连接
5.1硬连接
5.2语法
6.cp(copy)——复制
6.1定义
6.2格式
6.3扩展
7.mv——移动或改名
7.1格式
8.rm、shred——删除
8.1rm
8.2shred
9.Which——查找
9.1格式
10.locate——查找
10.1优缺点
10.2用途
11.find——查找
11.1定义
11.2优缺点
11.3通式
11.4使用find命令实现多个查找条件
11.4.1各表达式之间使用逻辑运算符
11.4.2示例
11.4.3find时间命令延伸
11.4.4fls
11.4.5批量改名
12.empty——空文件
13.管道符(|)——扩展
生产环境中尽量不要直接使用ls命令
有些符号不表示原来的意思,它代表了一类字符
“ * ” 代表任意长度的字符 不能显示隐藏文件
“ ? ”代表任意一个字符
[root@localhost opt]#ls
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[root@localhost opt]#ls ?.txt
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
代表查看以txt结尾的单个字符的文件
[root@localhost opt]#ls ??.txt
10.txt
代表查看以txt结尾的两个字符的文件
[root@localhost opt]#touch 123456789.txt
[root@localhost opt]#ls
123456789.txt rh
10.txt 123456789.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
代表查看以txt结尾的任意长度字符的文件(不能显示隐藏文件)
匹配文件的名字
例如,要匹配以p开头的文件,格式为:ls p*
要匹配以conf结尾的文件,格式为:ls *conf
包含conf的文件 *conf*
通配符只能匹配文件的名字
正则表达式能匹配文章里的内容
通过别名机制简化常用的、比较长的命令
[root@localhost mnt]#alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde
直接输入alias代表查看所有的别名
alias 自定义命令='原始命令' (单引号双引号都可以 引号内如果有特殊字符需要加引号 )
其中,myvim代表自定义命令;”vim/etc/sysconfig/network-scripts/ifcfg-ens33“代表原始命令
内部-----hash-----外部
别名的优先级高于内部命令
命令执行的顺序:绝对路径下命令优先级>别名优先级>内部优先级>hash>外部命令优先级
使用alias命令创建的别名是临时性的,重启之后就不存在了
du命令默认递归显示
统计指定目录(或文件)所占磁盘空间的大小
du [选项] [文件或目录]
选项 | 说明 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占空间总的(Summary)大小,而不是统计每个子目录,文件的大小 |
[root@localhost ~]#du -sh /var/log
4.6M /var/log
使用命令du -sh 显示/var/log的文件所占空间的大小
-a -s 两者不能同时使用
[root@localhost ~]#du -as du: 不能既显示总用量,同时又显示每个项目 Try 'du --help' for more information.
ll看到的是文件的真实大小
du看到的是文件占自盘的多少块(一块的默认值为4k;如果一个文件不足4k按4k算)
(du看到的文件大小一定是4的倍数)
延伸:如果只想看到前两层的文件夹(前两层:不包含本层 本级的下两层)
du -d 2/etc = du --max-depth=2 /etc
[root@localhost opt]#du --exclude=*.txt
12 .
查看除以txt结尾的文件之外的文件大小
[root@localhost opt]#du -a --exclude=*.txt
4 ./passwd
4 ./fstab
4 ./.shadow
12 .
查看除以txt结尾的文件之外的文件大小,但显示隐藏文件
[root@localhost opt]#ls -a
. .. fstab passwd .shadow test.txt
[root@localhost opt]#du -a
4 ./passwd
4 ./fstab
4 ./.shadow
4 ./test.txt
16 .
查看所有文件包含隐藏文件
mkdir [选项] 目录位置及名称
mkdir -p 代表一次性创建嵌套的多层目录(递归显示)
[root@localhost opt]#mkdir aa bb cc
[root@localhost opt]#ls
aa bb cc rh
代表一次性建立三个文件夹aa、bb、cc
[root@localhost opt]#mkdir dd
[root@localhost opt]#ls
dd rh
单个创建文件夹dd
[root@localhost opt]#mkdir -p aa/bb/cc
代表倒序建立aa/bb/cc文件夹
[root@localhost opt]#ls
aa rh
查看opt文件夹下(aa为蓝色,代表文件夹)
[root@localhost opt]#ls -R
.:
aa rh
./aa:
bb
./aa/bb:
cc
./aa/bb/cc:
./rh:
倒序查看opt下的文件
拓展:磁盘空间不足,如何排查哪些文件夹有比较大的文件
先使用du命令查看比较大的文件和文件夹,确认文件有没有用,再看有没有权限删除
mkdir -pv 代表在数据库mysql文件夹下建立以下文件
touch 文件(如果文件不存在则新建一个大小为0的空文件)
1.新建空文件 touch 命令 跟着的文件名不存在
2.刷新文件时间 touch 命令 跟着的文件名已存在
当用户访问aa时,通过inode号在硬盘中找到aa硬盘中的位置,然后加载到内存中使用,给inode号1234做一个硬连接到B文件夹存为bb,此时aa和bb都可以使用inode号为1234的文件。
硬连接:多了一种找到inode号为1234文件的方法
文件夹不能做硬连接;硬连接的本质是文件有多少种叫法,再深层次理解为有多少种找到文件的方法;做一个硬连接 inode号不会增加
硬连接语法 ln 源文件 目的位置
软连接语法 ln -s 源文件 目的位置
源文件要使用绝对路径
[root@localhost opt]#ln -s /opt/aa ./a
给aa文件夹做一个软连接a
[root@localhost opt]#ll -i
总用量 0
70438404 lrwxrwxrwx. 1 root root 7 12月 20 19:48 a -> /opt/aa
67160160 drwxr-xr-x. 3 root root 16 12月 20 19:20 aa
2396087 drwxr-xr-x. 2 root root 6 3月 26 2015 rh
注意:删除软连接文件夹的时候,一定不能加 “ / ”
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp 源文件或文件夹 目标位置
copy命令执行后,相同设备上的inode号不会相同,但不同设备上可能会一样
复制文件夹一定要加 -r
-a和-p均代表保留属性 但是-a的保留权限更大
-a可以代替-r -p
增备 -u 只增加每天备份的量
[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖
如果复制多个文件,只能复制到文件夹
mv 源文件 目标位置
源文件和目标文件路径位置一样,是改名
如果源文件和目标文件路径位置不一样,是移动也可以移动并改名
rm [选项] 要删除的文件或目录
选项 | 说明 |
-f | 强制 |
-i | 交互 |
-r | 递归 |
在使用前要查看权限是否可以删除
[root@localhost ~]# rm -rf / #不让执行
[root@localhost ~]# echo * #删根后查看
[root@localhost ~]# rm -rf /data/*
[root@localhost ~]# rm -rf /data/* ##之间的区别误操作,等于删根
[root@localhost ~]# touch ./-f
# -开头的文件
[root@localhost ~]# ls
[root@localhost ~]# rm -f -f
#删除不掉
[root@localhost ~]# rm -f ./-f
#需要加路径
[root@localhost ~]# touch ./-f
[root@localhost ~]# rm -- -f
rm:是否删除普通空文件 "-f"?y
shred [OPTION]... FILE...
安全的删除数据
选项 | 说明 |
-z | 最后一次覆盖添加0,以隐藏覆盖操作 |
-v | 能够显示操作进度 |
-u | 覆盖后截断并删除文件 |
-n# | 指定覆盖文件内容的次数(默认值是3次) |
查找命令/文件存放目录
搜索范围由环境变量PATH决定(echo $ PATH)
which 命令/程序名 或 which -a 命令/程序名
示例:which is which cd
命令文件:ls、mkdir、cp;
内部命令是Shell的一部分(内部命令没有文件)
查找外部命令
which is 查找得更精准
where is 会在固定的5个文件夹中找(环境变量PATH)
优点:快
缺点:1.不够精确,模糊查找;
2.找是系统的数据库文件,不具备实时性;
3.不是去磁盘上真的给你找,而是去数据库找;
updatedb 不太建议用,因为可能会死机
查找系统中一些老旧文件,不常改变文件使用locate比较好
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找(一定要先指定查找范围(如若不指定那就是当前查找范围) )
优点:1.精确查找;2.选项多,查找的功能多
缺点:慢
find 范围 查找条件 处理动作
查找类型 | 关键字 | 说明 |
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“ * ”及“ ? ”通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找 一般使用“ + ”、“ - ”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括kB(k要小写)、MB、GB |
按文件属性主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按名称查找 -name
find /etc/ -name passwd
查找etc文件夹下,名为passwd的文件
find /etc/ -name fstab
查找etc文件夹下,名为fstab的文件
按文件大小查找 -size
find -size +1M
查找文件大小为1M以上的文件
" - " “ + ” 只能表示一个范围
按文件属主查找 -user
nouser代表无主用户
按文件类型查找 -type
注意:寻找普通文件的话 要将 “ - ”变成“ f ”
延伸:
因为A选项的“d”是目录,故A排除;B选项连接个数为1,故B排除;C选项“l”表示连接,并且连接个数为1,所以选C;D选项“ - ”表示普通文件,连接个数是2,所以D选项是硬连接,故选D。故,此题选CD。
例题1:
ls -a ./* 只显示非隐藏文件 选D
例题2:
du命令中a和s不能同时出现,选B
例题3:
使用mkdir可以查看默认的别名;cp -a保留连接属性;cp复制多个文件,最后只能跟文件夹;所以选D
“ -a ”表示 而且(and)
“ -o ”表示 或者(or)
“ not ”非 或者!
find /boot -size + 1024k -a -name “vmlinuz*”
find /boot -size + 1024k -o -name “vmlinuz*”
[root@localhost data]#find ! -type d
找到非d类型的文件
./passwd
./aa/1.txt
./aa/2.txt
./hard
[root@localhost data]#find ! -type d -o ! -empty
find /opt/ -inum 75497602 -delete
找到opt文件夹下 inode号为75497602的文件进行删除操作
权限:r=4 w=2 x=1;iname不区分大小写
find -p
找到以p为首字符的文件
find -perm 777
找到prem文件
延伸:只看第二层文件夹
找到一个30天以上 以log结尾的普通文件
find / -name "*log" -type f -mtime +30
找到一个30天以上 以log结尾的普通文件并删除
find / -name "*log" -type f -mtime +30 -delete
找到一个30天以上 以log结尾的普通文件 复制或移动到
exec和ok的区别的是ok会问要不要执行命令;exec不会再问
find /boot/-mtime +30 -type f -name "vm*" -exec cp {} /mnt\;
exec 连接符 连接find命令和下一个命令
{}代表find 找到的内容
\; 固定格式 代表结束
处理动作:
-ls 显示详细信息
-delete 删除
-ok 询问是否要操作
-exec 不询问直接操作
find /boot/ -name “vm*” -fls abc
找到boot文件夹下以vm开头的文件并存放至abc文件夹下
重点
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 \;
find -name “*.txt” -exec mv {} {}.bak \;
找到以txt结尾的文件批量修改名称为 以bak结尾的文件
inode是有限的 这个资源用完了就无法再连接资源
延伸:硬盘有一个T,无法再建文件,inode号用完了,解决办法删除空文件(find /opt/ -empty )
在Linux文件详细信息中,第一个字符为p代表是管道文件
可以将前一个命令的结果 当做最后一个命令的对象执行
ls | wc -l
ls代表查看当前文件下的信息,wc -l 表示统计ls已经查看到文件下的信息的个数
管道符可以添加多个;将第一个命令的执行结果当做参数传给后一个命令去执行