目录
一、通配符
生产环境中尽量不要直接使用ls命令
1.定义
有些符号不表示原来的意思,它代表了一类字符
“ * ” 代表任意长度的字符 不能显示隐藏文件
“ ? ”代表任意一个字符
[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结尾的任意长度字符的文件(不能显示隐藏文件)
2.作用
匹配文件的名字
例如,要匹配以p开头的文件,格式为:ls p*
要匹配以conf结尾的文件,格式为:ls *conf
包含conf的文件 *conf*
通配符只能匹配文件的名字
正则表达式能匹配文章里的内容
二、命令
1.alias——别名
1.1定义
通过别名机制简化常用的、比较长的命令
[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代表查看所有的别名
1.2通式
alias 自定义命令='原始命令' (单引号双引号都可以 引号内如果有特殊字符需要加引号 )
其中,myvim代表自定义命令;”vim/etc/sysconfig/network-scripts/ifcfg-ens33“代表原始命令
1.3命令执行的过程
内部-----hash-----外部
别名的优先级高于内部命令
命令执行的顺序:绝对路径下命令优先级>别名优先级>内部优先级>hash>外部命令优先级
使用alias命令创建的别名是临时性的,重启之后就不存在了
2.du(disk usage)—— 查看磁盘使用量
du命令默认递归显示
2.1定义
统计指定目录(或文件)所占磁盘空间的大小
du [选项] [文件或目录]
2.2常用选项
选项 | 说明 |
-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.
2.3拓展——ll和du的区别
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 .
查看所有文件包含隐藏文件
3.mkdir——建立文件夹
3.1格式
mkdir [选项] 目录位置及名称
mkdir -p 代表一次性创建嵌套的多层目录(递归显示)
3.2示例
[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文件夹下建立以下文件
4.touch——建空文件
touch 文件(如果文件不存在则新建一个大小为0的空文件)
4.1功能
1.新建空文件 touch 命令 跟着的文件名不存在
2.刷新文件时间 touch 命令 跟着的文件名已存在
5.硬连接与软连接
5.1硬连接
当用户访问aa时,通过inode号在硬盘中找到aa硬盘中的位置,然后加载到内存中使用,给inode号1234做一个硬连接到B文件夹存为bb,此时aa和bb都可以使用inode号为1234的文件。
硬连接:多了一种找到inode号为1234文件的方法
文件夹不能做硬连接;硬连接的本质是文件有多少种叫法,再深层次理解为有多少种找到文件的方法;做一个硬连接 inode号不会增加
5.2语法
硬连接语法 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
注意:删除软连接文件夹的时候,一定不能加 “ / ”
6.cp(copy)——复制
6.1定义
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
6.2格式
cp 源文件或文件夹 目标位置
copy命令执行后,相同设备上的inode号不会相同,但不同设备上可能会一样
复制文件夹一定要加 -r
-a和-p均代表保留属性 但是-a的保留权限更大
-a可以代替-r -p
6.3扩展
增备 -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 直接覆盖
如果复制多个文件,只能复制到文件夹
7.mv——移动或改名
7.1格式
mv 源文件 目标位置
源文件和目标文件路径位置一样,是改名
如果源文件和目标文件路径位置不一样,是移动也可以移动并改名
8.rm、shred——删除
8.1rm
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
8.2shred
shred [OPTION]... FILE...
安全的删除数据
选项 | 说明 |
-z | 最后一次覆盖添加0,以隐藏覆盖操作 |
-v | 能够显示操作进度 |
-u | 覆盖后截断并删除文件 |
-n# | 指定覆盖文件内容的次数(默认值是3次) |
9.Which——查找
查找命令/文件存放目录
搜索范围由环境变量PATH决定(echo $ PATH)
9.1格式
which 命令/程序名 或 which -a 命令/程序名
示例:which is which cd
命令文件:ls、mkdir、cp;
内部命令是Shell的一部分(内部命令没有文件)
查找外部命令
which is 查找得更精准
where is 会在固定的5个文件夹中找(环境变量PATH)
10.locate——查找
10.1优缺点
优点:快
缺点:1.不够精确,模糊查找;
2.找是系统的数据库文件,不具备实时性;
3.不是去磁盘上真的给你找,而是去数据库找;
updatedb 不太建议用,因为可能会死机
10.2用途
查找系统中一些老旧文件,不常改变文件使用locate比较好
11.find——查找
11.1定义
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找(一定要先指定查找范围(如若不指定那就是当前查找范围) )
11.2优缺点
优点:1.精确查找;2.选项多,查找的功能多
缺点:慢
11.3通式
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
11.4使用find命令实现多个查找条件
11.4.1各表达式之间使用逻辑运算符
“ -a ”表示 而且(and)
“ -o ”表示 或者(or)
“ not ”非 或者!
11.4.2示例
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文件
延伸:只看第二层文件夹
11.4.3find时间命令延伸
找到一个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 不询问直接操作
11.4.4fls
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 \;
11.4.5批量改名
find -name “*.txt” -exec mv {} {}.bak \;
找到以txt结尾的文件批量修改名称为 以bak结尾的文件
12.empty——空文件
inode是有限的 这个资源用完了就无法再连接资源
延伸:硬盘有一个T,无法再建文件,inode号用完了,解决办法删除空文件(find /opt/ -empty )
13.管道符(|)——扩展
在Linux文件详细信息中,第一个字符为p代表是管道文件
可以将前一个命令的结果 当做最后一个命令的对象执行
ls | wc -l
ls代表查看当前文件下的信息,wc -l 表示统计ls已经查看到文件下的信息的个数
管道符可以添加多个;将第一个命令的执行结果当做参数传给后一个命令去执行