概述

1、强大好用的 Shell;

通过上下方向键来调取过往执行过的 Linux 命令;
1、命令或参数仅需输入前几位就可以用 Tab 键补全;
2、具有强大的批处理脚本;
3、具有实用的环境变量功能。

2、执行帮助文档命令;

  1. main --help
  2. grep --help 或者 grep -h
  3. [root@localhost ~]# grep --help
  4. 用法: grep [选项]... PATTERN [FILE]...
  5. 在每个 FILE 或是标准输入中查找 PATTERN
  6. 默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
  7. 例如: grep -i 'hello world' menu.h main.c
  8. 正则表达式选择与解释:
  9. -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
  10. -F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
  11. -G, --basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)
  12. -P, --perl-regexp PATTERN 是一个 Perl 正则表达式
  13. -e, --regexp=PATTERN PATTERN 来进行匹配操作
  14. -f, --file=FILE FILE 中取得 PATTERN
  15. -i, --ignore-case 忽略大小写
  16. -w, --word-regexp 强制 PATTERN 仅完全匹配字词
  17. -x, --line-regexp 强制 PATTERN 仅完全匹配一行
  18. -z, --null-data 一个 0 字节的数据行,但不是空行
  19. Miscellaneous:
  20. -s, --no-messages suppress error messages
  21. -v, --invert-match select non-matching lines
  22. -V, --version display version information and exit
  23. --help display this help text and exit

3、常用系统工作命令;

3.1、echo 命令把指定信息显示在屏幕上

  1. [root@localhost ~]# echo a
  2. a

3.2、将内容写入到文件中:echo “文件信息” > XXX文件

  1. [root@localhost ~]# echo "将这些信息写到一个txt文件中" > a.txt
  2. [root@localhost ~]# more a.txt
  3. 将这些信息写到一个txt文件中

4、系统状态检测命令;

4.1 ifconfig获取网卡配置与网络状态等信息

  1. [root@VM-0-15-centos sysconfig]# ifconfig
  2. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  3. inet 172.17.0.15 netmask 255.255.240.0 broadcast 172.17.15.255
  4. inet6 fe80::5054:ff:fe4c:8e55 prefixlen 64 scopeid 0x20<link>
  5. ether 52:54:00:4c:8e:55 txqueuelen 1000 (Ethernet)
  6. RX packets 17807 bytes 15517304 (14.7 MiB)
  7. RX errors 0 dropped 0 overruns 0 frame 0
  8. TX packets 12659 bytes 1526715 (1.4 MiB)
  9. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  10. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  11. inet 127.0.0.1 netmask 255.0.0.0
  12. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  13. loop txqueuelen 1000 (Local Loopback)
  14. RX packets 3607 bytes 502523 (490.7 KiB)
  15. RX errors 0 dropped 0 overruns 0 frame 0
  16. TX packets 3607 bytes 502523 (490.7 KiB)
  17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  18. [root@VM-0-15-centos sysconfig]#

4.2 uname 用于查看系统内核与系统版本等信息,格式为“uname [-a]”

  1. [root@VM-0-15-centos sysconfig]# uname -a
  2. Linux VM-0-15-centos 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

4.3 uptime 查看系统负载

uptime 命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以
及平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情
况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要
超过 5

  1. [root@VM-0-15-centos sysconfig]# uptime
  2. 18:25:47 up 1:31, 1 user, load average: 0.00, 0.04, 0.14

4.4 free 显示当前系统中内存的使用量信息

1 内存总量 total
2 已用量 used
3 可用量 free
4 进程共享的 内存量 shared
5 磁盘缓存的 内存量 buffers
  1. [root@localhost etc]# free -h
  2. total used free shared buff/cache available
  3. Mem: 1.8G 181M 1.5G 9.5M 144M 1.5G
  4. Swap: 2.0G 0B 2.0G
  5. [root@localhost etc]#

4.5 who 显示登录的用户名

  1. [root@localhost etc]# who
  2. root pts/0 2022-04-09 16:45 (192.168.75.1)

4.6 last 查看所有系统的登录记录

  1. [root@localhost etc]# last
  2. root pts/0 192.168.75.1 Sat Apr 9 16:45 still logged in
  3. reboot system boot 3.10.0-1160.el7. Sat Apr 9 16:14 - 20:58 (04:43)
  4. root pts/0 192.168.75.1 Thu Apr 7 17:15 - crash (1+22:59)
  5. reboot system boot 3.10.0-1160.el7. Thu Apr 7 17:15 - 20:58 (2+03:43)

4.7 history 显示历史执行过的命令

实际是保存在每个用户的.bash_history里面,不过该文件保存的是用户上次退出保留的命令,所以如果要同步把这次的缓存写进去用history -w,清空的话用history -c

  1. [root01@VM-0-15-centos coremail]$ cat ~/.bash_history

5、工作目录切换命令

5.1 pwd显示用户当前所处的目录

5.2 cd切换路径

返回上一次的目录 cd -
切换到用户家目录 cd ~

5.3 ls 显示目录中的文件信息

  1. ls -al 等价于 ll -a
  2. ls -l 等价于 ll

6、文本文件编辑命令

6.1 cat 显示文件

6.2 more 一页一页显示

1、空格键:查看下一屏;

2、回车键:往下滚动一行;

3、b 键:往前查看一屏;

4、q 键:退出。

5、more +N 从N行开始往下看

6、more -N 一页显示N行

6.3 head 默认显示前10行

1、head -n N 显示指定前N行

2、head -n -N 显示最后除了-N以外的全部内容

6.4 less

1、 上一行 j

2、 下一行 k

3、 上一屏 ctrl + f

4、 下一屏 ctrl + b

5、 退出 q

6、 斜杠搜索 n下一个,N上一个

7、 首行 g

8、 末行 G

6.5 tail

1、 动态的加载文件的内容 tail -f 或者tail -100f

2、 查看最后100行 tail -n 100 file.txt

6.6 tr 对输入的字符进行替换、删除,不改变文本内容

  1. echo "HELLO WORLD" | tr 'A-Z' 'a-z'
  2. hello world
  3. echo "hello 123 world 456" | tr -d '0-9'
  4. hello world

7、文件目录管理命令

7.1 touch 创建空文件或者修改文件时间

  1. [root@localhost study]# touch abc.txt
  2. [root@localhost study]# file abc.txt
  3. abc.txt: empty
  4. [root@localhost study]# touch -d "2025-12-2 12:01" abc.txt
  5. [root@localhost study]# ll abc.txt
  6. -rw-r--r--. 1 root root 0 12 2 2025 abc.txt

7.2 mkdir 创建文件夹

1、参数-m 选项自定义目录权限。
2、参数 -p 递归建立目录。

  1. [root@localhost study]# mkdir -m "777" a
  2. [root@localhost study]# ll
  3. drwxrwxrwx. 2 root root 6 4 18 16:16 a
  4. [root@localhost study]# mkdir -p a/b/c/d

7.3 cp 复制

1、参数-a 所有参数都有 的复制

2、参数/ 覆盖复制 /cp b.txt /study/

3、参数-r 递归复制(用于目录)

7.4 mv 文件重命名或者移动文件到指定目录下

  1. [root@localhost study]# mv b.txt bbb.txt
  2. [root@localhost study]# mv bbb.txt /root/

7.5 rm 删除文件或目录

  1. [root@localhost study]# rm -rf bbb.txt #强制递归删除

7.6 dd 刻录启动光盘、备份硬盘文件和格式化硬盘数据

1、参数if 输入的文件名称
  1. dd if=/dev/sda of=/dev/sdb # 将sda硬盘数据备份到sdb上
  2. dd if=/dev/sda of=/mnt/sda.mbr bs=512 count=1 #备份硬盘引导分区表
  3. dd if=dev/zero of=/dev/sda bs=1k count=3000 #格式化硬盘数据

7.7 file 查看文件的类型(是根据文件的内容来判断的,不是 根据文件的后缀来判断)

  1. [root@localhost study]# file abc.txt #这是个空的文件
  2. abc.txt: empty
  3. [root@localhost study]# file bbb.txt #这个是文本文件
  4. bbb.txt: ASCII text
  5. [root@localhost study]# file b #没有这个文件或者文件夹
  6. b: cannot open (No such file or directory)
  7. [root@localhost study]# file a #这是一个文件夹
  8. a: directory

8、打包压缩与搜索命令

8.1 tar 对文件进行打包压缩或解压

1、打包 tar -zcvf a.tar.gz a

2、解压 tar -zxvf a.tzr.gz

8,2 grep 文本中执行关键词搜索并显示匹配的结果

grep -E 相当于是egrep
grep -A 匹配你需要的内容接下的5行
grep -B 匹配你需要的内容上面的5行
grep -C5 匹配你需要的内容上下5行
grep -c 统计出现了多少行,类似wc-l
[root@VM-0-15-centos re]# grep -c 1 test1.txt
9
grep -v 取反、排除
ps -ef | grep sshd | grep -v grep
grep -n 显示匹配的数据的行号
grep -i 忽略大小写
grep -w 精确匹配,就是匹配某个值要完全匹配
\b表示边界,和-w用法一致。 grep ‘\ba\b’ 写法就是这样

8.3 find 按照指定条件来查找文件

1、按照名字查找
  1. [root@localhost /]# find . -name 'bbb.*'
  2. ./study/bbb.txt
  3. ./bbb.txt

2、按照目录查找
  1. [root@localhost /]# find /study/ -name 'bbb.*'
  2. /study/bbb.txt

3、按照权限查找
  1. [root@localhost study]# ll
  2. 总用量 8
  3. -rw-r--r--. 1 root root 0 4 18 2022 11:11
  4. drwxrwxrwx. 2 root root 6 4 18 16:16 a
  5. -rwxr-xr-x. 1 root root 0 12 2 2025 abc.txt
  6. -rw-r--r--. 1 root root 0 4 18 2022 a.txt
  7. -rw-r--r--. 1 root root 11 4 18 16:30 bbb.txt
  8. drwx------. 3 root root 15 4 18 16:18 d
  9. -rw-r--r--. 1 root root 22 4 18 16:27 xt
  10. [root@localhost study]# find . -perm 755 #查询结果
  11. .
  12. ./abc.txt

4、按照类型查找

f 普通文件
d 目录文件
l 软链接文件
b 块设备文件(存放在/dev目录下)
c 字符设备文件
p 管道文件
s 套接字文件

  1. [root@localhost study]# find . -type f
  2. ./11:11
  3. ./a.txt
  4. ./abc.txt
  5. ./xt
  6. ./bbb.txt
  7. [root@localhost study]# find . -type f | wc -l
  8. 5

5、按照属主以及所属组查找
  1. [root@localhost study]# find . -user root -type f
  2. ./11:11
  3. ./a.txt
  4. ./abc.txt
  5. ./xt
  6. ./bbb.txt

6、按照时间查找
  1. [root@localhost study]# find . -mtime -2 -type f
  2. ./11:11
  3. ./abc.txt
  4. ./xt
  5. ./bbb.txt
  6. ./a.txt
  1. [root@localhost study]# find . -mtime +2 -type f
  2. ./11:11
  3. ./abc.txt
  4. ./xt
  5. ./bbb.txt
  6. ./a.txt

7、按照大小查找
  1. [root@localhost study]# du -sh *
  2. 0 11:11
  3. 0 a
  4. 0 abc.txt
  5. 16K a.txt
  6. 4.0K bbb.txt
  7. 0 d
  8. 4.0K xt
  9. [root@localhost study]# find . -size -15 -type f #查找小于15K的文件
  10. ./11:11
  11. ./abc.txt
  12. ./xt
  13. ./bbb.txt
  1. [root@localhost study]# du -sh *
  2. 0 11:11
  3. 0 a
  4. 0 abc.txt
  5. 16K a.txt
  6. 4.0K bbb.txt
  7. 0 d
  8. 4.0K xt
  9. [root@localhost study]# find . -size +15 -type f #查找大于15K的文件
  10. ./a.txt

8、查找并删除或者备份(方法很多,不唯一)
  1. rm -rf $(find / -type f)  # 查找结果直接以变量 删除
  2. rm -rf `find / -type f`  # 同上做变量 删除
  3. ps -ef | grep coremail | awk '{print "kill -9 " $2}' |sh #关闭某个程序的进程
  4. #删除/var/log/下最近7天之前的的日志文件
  5. [root@yinwucheng ~]# find /var/log/ -type f -mtime +7 -exec rm -f {} \;
  1. find . -type f -exec cp -a {} /root/find/ \; #注: \; 之间没有空格
  2. [root@localhost study]# find . -name b* -exec cp -a {} /root/find/ \;