各项命令
设置别名
作用
通过别名机制可以简化我们常用的一些比较长的命令
代码
- alias 命令别名=‘命令’
注意事项:=号两边不能有空格
- 设置别名
[root@localhost ~]# alias myls='ls-alh'
- 检查
[root@localhost ~]# type myls
myls 是 `ls-alh' 的别名
- 删除别名
[root@localhost ~]# unalias myls
统计目录及文件占用
作用
统计指定目录或文件所占用磁盘空间大小
代码
- du [选项] [文件或者目录]
常用的几个选项
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s | 只统计所占用空间总的大小,而不是统计每个子目录、文件的大小 |
- -max-depth=n | 统计所有小于等于第n层的目录的总大小 |
注意事项:-a和-s不能同时使用
- -a表示磁盘内所有文件
[root@localhost ~]# du -a
4 ./.bash_logout
4 ./.bash_profile
4 ./.bashrc
4 ./.cshrc
4 ./.tcshrc
4 ./anaconda-ks.cfg
4 ./.cache/dconf/user
4 ./.cache/dconf
4 ./.cache/imsettings/log
4 ./.cache/imsettings
0 ./.cache/evolution/addressbook/trash
0 ./.cache/evolution/addressbook
0 ./.cache/evolution/calendar/trash
0 ./.cache/evolution/calendar
0 ./.cache/evolution/mail/trash
0 ./.cache/evolution/mail
0 ./.cache/evolution/memos/trash
0 ./.cache/evolution/memos
........
- -s表示总大小
[root@localhost ~]# du -s
4252 .
- -h显示大小,默认单位是KB
[root@localhost ~]# du -h
4.0K ./.cache/dconf
4.0K ./.cache/imsettings
0 ./.cache/evolution/addressbook/trash
........
- 组合使用
[root@localhost ~]# du -s -h
4.2M .
- du - -max-depeth=1 -h
第一层文件大小,配合-h使用
[root@localhost /]# du --max-depth=1 -h
126M ./boot
0 ./dev
12K ./home
du: 无法访问"./proc/42988/task/42988/fd/4": 没有那个文件或目录
du: 无法访问"./proc/42988/task/42988/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/42988/fd/4": 没有那个文件或目录
du: 无法访问"./proc/42988/fdinfo/4": 没有那个文件或目录
0 ./proc
9.2M ./run
0 ./sys
37M ./etc
4.2M ./root
121M ./var
52K ./tmp
3.3G ./usr
0 ./media
0 ./mnt
0 ./opt
0 ./srv
0 ./222.txt
0 ./222
3.6G .
创建新目录
代码
mkdir[选项]目录位置及名称
-p:一次性创建嵌套的多层目录
- 创建一个ccc的目录
[root@localhost /]# mkdir ccc
[root@localhost /]# ls
ccc etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var
- 创建目录/aa,在此目录下创建/bb,在/bb目录下创建/cc
[root@localhost /]# mkdir -p /aa/bb/cc
创建空文件
作用
更新文件的时间标记
- 更新 “4月 7 2021 anaconda-ks.cfg”改文件
[root@localhost ~]# ll
总用量 8
drwxr-xr-x. 2 root root 6 4月 7 13:51 111.txt
-rw-r--r--. 1 root root 0 4月 7 13:55 123.txt
drwxr-xr-x. 3 root root 16 4月 7 15:11 aa
-rw-r--r--. 1 root root 0 4月 7 13:56 aa.txt
-rw-------. 1 root root 1933 4月 7 2021 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 4月 7 13:56 bb.txt
drwxr-xr-x. 2 root root 6 4月 7 15:08 ccc
-rw-r--r--. 1 root root 0 4月 7 13:56 cc.txt
-rw-r--r--. 1 root root 1964 4月 7 15:21 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 4月 7 2021 公共
drwxr-xr-x. 2 root root 6 4月 7 2021 模板
drwxr-xr-x. 2 root root 6 4月 7 2021 视频
drwxr-xr-x. 2 root root 6 4月 7 2021 图片
drwxr-xr-x. 2 root root 6 4月 7 2021 文档
drwxr-xr-x. 2 root root 6 4月 7 2021 下载
drwxr-xr-x. 2 root root 6 4月 7 2021 音乐
drwxr-xr-x. 2 root root 6 4月 7 2021 桌面
- 日期已更新
[root@localhost ~]# touch anaconda-ks.cfg
[root@localhost ~]# ll
总用量 8
drwxr-xr-x. 2 root root 6 4月 7 13:51 111.txt
-rw-r--r--. 1 root root 0 4月 7 13:55 123.txt
drwxr-xr-x. 3 root root 16 4月 7 15:11 aa
-rw-r--r--. 1 root root 0 4月 7 13:56 aa.txt
-rw-------. 1 root root 1933 4月 7 15:23 anaconda-ks.cfg
常用于创建多个新的空文件
- 代码:
touch aa bb
touch {a,b}.txt
[root@localhost ~]# touch aa.txt
[root@localhost ~]# touch {aa,bb,cc}.txt
创建链接文件
作用
为文件或目录建立链接文件,类似于Windows系统的快捷方式
类型
- 软链接(又称符号链接)
- 硬链接
ln代表创建,加上-s就是软链接,不加就是硬链接
创建软链接的时候,源文件一定要用绝对路径表示
对比
- 当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名
- 但是删除一个文件名,不影响别的文件名的访问
- 删除一个文件名,只会使得"硬链接数"减1
- 需要注意的是不能对目录做硬链接。在日常工作中几乎不会建立文件的硬链接。
代码
软链接
[root@localhost ~]# ln -s 1.txt a.txt
lrwxrwxrwx. 1 root root 5 4月 7 16:10 a.txt -> 1.txt
- 在源文件1.txt内编辑内容
[root@localhost ~]# vi 1.txt
- 查看源文件内容
[root@localhost ~]# cat 1.txt
123456
654322
- 查看链接文件内容
[root@localhost ~]# cat a.txt
123456
654322
- 此时我们编辑a.txt内容
[root@localhost ~]# cat a.txt
123456
654322
abcd
dcba
- 查看1.txt内容
[root@localhost ~]# cat 1.txt
123456
654322
abcd
dcba
- 继续创建一个abc.txt文件与1.txt链接
[root@localhost ~]# ln -s 1.txt abc.txt
- 查看abc.txt
[root@localhost ~]# cat abc.txt
123456
654322
abcd
dcba
- 将abc.txt移动至上层目录
[root@localhost ~]# mv abc.txt ../
- 查看abc.txt
lrwxrwxrwx. 1 root root 5 4月 7 16:22 abc.txt -> 1.txt
[root@localhost /]# cat abc.txt
cat: abc.txt: 没有那个文件或目录
文件虽然还是和1.txt链接,但是状态已经变红,并且无法查询到
- 在根目录下创建一个1.txt
[root@localhost /]# touch 1.txt
- 查看
[root@localhost /]# cat 1.txt
[root@localhost /]#
总结:在同一目录下,互相链接成功后可以相互修改内容,一旦文件被移动至其他目录时,软链接因为没有使用的是绝对路径,所以内容无法被复制到其他目录,虽然链接方式还存在,但是里面已经不是原先的链接文件了
- 在根目录下创建绝对路径链接
[root@localhost /]# ln -s /root/1.txt 100.txt
- 查看100.txt
[root@localhost /]# cat 100.txt
123456
654322
abcd
dcba
设置绝对链接后,即使在其他目录下,依旧能和1.txt进行链接
- 移动100.txt至其他目录
[root@localhost /]# mv 100.txt /opt
- 检查
[root@localhost /]# cd /opt
[root@localhost opt]# ls
100.txt aa rh ###100.txt移动至opt内
[root@localhost opt]# cat 100.txt ###查看
123456
654322
abcd
dcba
总结:设置绝对路径后,无论怎么移动,链接始终保持为与源文件1.txt链接
硬链接
- 设置链接2.txt
[root@localhost ~]# ln /root/1.txt 2.txt
- 删除1.txt
[root@localhost ~]# rm -rf 1.txt
- 查看2.txt
[root@localhost ~]# cat 2.txt
123456
654322
abcd
dcba
- 链接3.txt 4.txt
[root@localhost ~]# ln /root/2.txt 3.txt
[root@localhost ~]# ln /root/2.txt 4.txt
[root@localhost ~]# ll
总用量 16
-rw-r--r--. 3 root root 24 4月 7 16:21 2.txt
-rw-r--r--. 3 root root 24 4月 7 16:21 3.txt
-rw-r--r--. 3 root root 24 4月 7 16:21 4.txt
lrwxrwxrwx. 1 root root 5 4月 7 16:10 a.txt -> 1.txt
- 编辑3.txt
[root@localhost ~]# vi 3.txt
- 查看2.txt 4.txt
[root@localhost ~]# cat 2.txt
123456
654322
abcd
dcba
33333333
[root@localhost ~]# cat 4.txt
123456
654322
abcd
dcba
33333333
总结:硬链接设置后,无论删除或者修改,所有链接的文件都能同步进行
- 删除2.txt 3.txt
[root@localhost ~]# rm -rf 3.txt
[root@localhost ~]# rm -rf 2.txt
- 查看4.txt
[root@localhost ~]# cat 4.txt
123456
654322
abcd
dcba
33333333
- 链接5.txt,删除4.txt
[root@localhost ~]# ln /root/4.txt 5.txt
[root@localhost ~]# rm -rf 4.txt
- 查看
[root@localhost ~]# cat 5.txt
123456
654321
abcd
dcba
3333333
总结:硬链接不论怎么连接删除,数据都能保存下来
复制文件或目录
常用选项
- -f:覆盖目标同名文件或目录时不进行提醒,而直接强制复制
- -i:覆盖目标同名文件或目录时提醒用户确认
- -p:复制时保持源文件的权限、属主及时间标记等属性不变
- -r:复制目录时必须使用此选项,表示递归复制所有文件及子目录
注:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在
CP默认是加入-i指令的
[root@localhost ~]# type cp
cp 是 `cp -i' 的别名
代码
- 复制文件
[root@localhost ~]# cp 1.txt abc/1.txt ###将目录下1.txt文件复制到abc/目录下
cp:是否覆盖"abc/1.txt"? y ###默认-i指令
[root@localhost ~]# cd abc/
[root@localhost abc]# cat 1.txt ###查看
222333
- 复制目录
[root@localhost ~]# cp -r abc /opt/ ###复制目录进opt内
[root@localhost ~]# cd /opt ###进入opt
[root@localhost opt]# ls
100.txt aa abc rh
[root@localhost opt]# cd abc/ ###进入abc
[root@localhost abc]# ls
1.txt
[root@localhost abc]# cat 1.txt ###查看1.txt
222333
- -p
[root@localhost ~]# ll -a
总用量 48
..... ###省略不复制的内容
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc ###复制该条信息
.....
[root@localhost ~]# cp -p .bashrc /opt/1234 ###复制进opt内,并改名1234
[root@localhost ~]# cd /opt
[root@localhost opt]# ll -a
总用量 4
....
-rw-r--r--. 1 root root 176 12月 29 2013 1234 ###除名字外,其他信息全部没变
....
[root@localhost opt]#
删除文件或目录
作用
删除指定的文件或者目录
常用选项
- -f:删除文件或目录时不进行提醒,而直接强制删除
- -i:删除文件或目录时提醒用户确认。(y表示删除, n表示不删除)
- -r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)
注意:不要直接删除系统中已有的目录或配置文件,以避免出现意外故障
默认指令带有-i
[root@localhost ~]# type rm
rm 是 `rm -i' 的别名
代码
- -i
[root@localhost ~]# cd /opt ###进入opt
[root@localhost opt]# ls ###查看
100.txt 1234 aa abc rh
[root@localhost opt]# rm 1234 ###删除1234
rm:是否删除普通文件 "1234"?y
[root@localhost opt]# ls
100.txt aa abc rh ###已删除
[root@localhost opt]#
- -r
[root@localhost aa]# cd /opt ###进入opt
[root@localhost opt]# ls
100.txt aa abc rh
[root@localhost opt]# rm -r aa/ ###删除aa目录
rm:是否进入目录"aa/"? y ###询问是否进入aa
rm:是否进入目录"aa/bb"? y ###是否进入bb
rm:是否删除目录 "aa/bb/cc"?y ###是否删除文件cc
rm:是否删除目录 "aa/bb"?y ###依次删除
rm:是否删除目录 "aa/"?y
[root@localhost opt]# ls ###查看
100.txt abc rh
[root@localhost opt]#
移动文件或目录
作用
- 将指定的文件或者目录转移位置
- 如果目标位置与源位置相同,则相当于执行重命名操作
mv命令只能对单个文件重命名,可使用rename命令批量修改文件名
- rename 旧字符 新字符 目标文件
例: rename jpg gif *.jpg
代码
- 移动不改变信息
[root@localhost ~]# ls
1.txt abc initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# mv 1.txt /opt/ ###移动1.txt到opt内
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
100.txt 1.txt abc rh ###无改变转移过来
- 移动改名
[root@localhost ~]# ls
222.txt abc initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# mv 222.txt /opt/333.txt ###将222改名333
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
100.txt 1.txt 333.txt abc rh ###改名转移过来
[root@localhost opt]#
- 不移动改名
[root@localhost opt]# ls
100.txt 1.txt 333.txt abc rh
[root@localhost opt]# mv 333.txt 444.txt ###不移动文件,使得333改名444
[root@localhost opt]# ls
100.txt 1.txt 444.txt abc rh
[root@localhost opt]#
查找命令文件存放目录
- 搜索范围由变量PATH决定(echo $PATH)
- 使用which查找内部命令时,将找不到对应的程序
代码
- 查看命令位置
[root@localhost opt]# which ls ##查看ls位置
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost opt]#
- 分辨命令是内部还是外部
[root@localhost ~]# which txt
/usr/bin/which: no txt in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) ###找不到对应程序的为内部命令
[root@localhost ~]# which rm
alias rm='rm -i'
/usr/bin/rm
查找文件或目录
作用
采用递归方式,根据目标的名称、类型、大小等不同属性进行精确查找
- find [查找范围] [查找条件表达式]
- 查找范围:查找文件或子目录的目录位置
- 查找条件表达式:查找条件类型
常用查找条件类型
各表达式之间使用逻辑运算符
- “-a” 表示 而且(and)
- “-o” 表示 或者(or)
代码
- -type f
[root@localhost boot]# find /boot/ -type f ###搜索boot下所有的普通文件
/boot/grub2/device.map
/boot/grub2/i386-pc/gcry_rmd160.mod
/boot/grub2/i386-pc/acpi.mod
/boot/grub2/i386-pc/gcry_rsa.mod
/boot/grub2/i386-pc/adler32.mod
/boot/grub2/i386-pc/gcry_seed.mod
/boot/grub2/i386-pc/affs.mod
/boot/grub2/i386-pc/gcry_serpent.mod
.......
- -name *
[root@localhost boot]# find ./ -name "vm*" ###查找根目录下文件名称是vm开头的文件
./vmlinuz-3.10.0-693.el7.x86_64
./vmlinuz-0-rescue-54acb63e3efc4724b810aac9ce025cef
[root@localhost boot]#
- -size +
[root@localhost boot]# find ./ -size +10M ###查找根目录下大于10M的文件
./initramfs-0-rescue-54acb63e3efc4724b810aac9ce025cef.img
./initramfs-3.10.0-693.el7.x86_64.img
- 联合使用
-name -size
查找img文件并且要小于10M
[root@localhost boot]# find ./ -name "*.img" -a -size -10M
./grub2/i386-pc/core.img
./grub2/i386-pc/boot.img
exec用法
-
-exec参数后面跟的是Linux命令,它是以分号“;"为结束标志,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符“\”
- {}代表前面find查找出来的文件名
-
find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用Is -|命令将它们列出
- find ./ -type f -exec Is -I {} \;
代码
- 查找大于10M的文件或者vm开头文件
[root@localhost boot]# find ./ -size +10M -o -name "vm*" -exec ls -l {} \;
-rwxr-xr-x. 1 root root 5877760 8月 23 2017 ./vmlinuz-3.10.0-693.el7.x86_64
-rwxr-xr-x. 1 root root 5877760 4月 7 19:55 ./vmlinuz-0-rescue-54acb63e3efc4724b810aac9ce025cef