1. grep
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
参考:Shell中的grep命令详解_致守的博客-CSDN博客_shell获取grep结果
2. echo
用于字符串的输出
3. 管道(|)
管道操作作为不同命令之间的协同工作提供了一种机制,位于管道符号“ | ”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。
[root@localhost opt]# grep "/bin/bash$" /etc/passwd //过滤文件中以/bin/bash结尾的行
root:x:0:0:root:/root:/bin/bash
[root@localhost opt]# grep "/bin/bash$" /etc/passwd | awk -F: '{print $1,$7}'
//过滤该行以冒号分割的第一位与第七位
root /bin/bash
[root@localhost opt]# free -m //查看内存使用使用情况
total 内存总数:7806M
used 已经使用的内存数: 463M
free 空闲的内存数: 6760M
shared 当前已经废弃不用,总是10M
buffers Buffer 缓存内存数: 582M
cached Page 缓存内存数:582M
available 实际可用的内存数:7055M
total used free shared buff/cache available
Mem: 7806 463 6760 10 582 7055
Swap: 8063 0 8063
[root@localhost opt]# free -m |grep "Mem:" |awk '{print $4}' //过滤内存空闲的内存数
6760
参考:Shell编程规范与shell中的管道(|)与重定向(< 、>、>>)_wulimingde的博客-CSDN博客
4. 重定向输出
重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示 器的屏幕上。重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。
【其中:‘>’是覆盖;‘>>’是追加】
5. 重定向输入
重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待 从键盘输入。重定向输入使用“<”操作符。
通过重定向输入可以使一些交互式操作过程能够通过读取文件来完成。例如,使用passwd 命令为用户设置密码时,每次都必须根据提示输入两次密码字串,非常烦琐,若改用重定向输入将可以省略交互式的过程,而自动完成密码设置(结合 passwd 命令的“–stdin” 选项来识别标准输入)。
[root@localhost ~]# vim pass.txt //添加初始密码串内容"123456" 123456
[root@localhost ~]# passwd --stdin jerry < pass.txt
//从pass.txt 文件中取密码,需要注意 SELinux 会影响此命令执行,若执行失败可尝试关闭 SELinux
Changing password for user jerry.
passwd: all authentication tokens updated successfully.
6. 错误重定向
错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指定的文件,而不是直接显示在屏幕上。错误重定向使用“2>”操作符,其中“2”是指错误文件的编号(在使用标准出、标准输入重定向时,实际上省略了 1、0 编号)。
在实际应用中,错误重定向可用来收集程序执行的错误信息,为排错提供依据;
其中[‘2>’是覆盖;‘2>>’是添加]
当命令输出的结果可能既包括标准输出(正常执行)信息,又包括错误输出信息时,可 以使用操作符“>”“2>”将两类输出信息分别保存到不同的文件,也可以使用“&>”操作符将两类输出信息保存到同一个文件。例如,在编译源码包的自动化脚本中,若要忽略 make、make install 等操作过程信息,则可以将其定向到空文件/dev/null。
7. cat
8. awk
9. 分卷压缩与解压
参考:linux shell tar 分卷压缩与解压_whatday的博客-CSDN博客
10. ‘’,“”,`` 的区别
在bash中“空格”是一种很特殊的字符,比如在bash中这样定义str=this is String,这样就会报错,为了避免出错就得使用单引号' '和双引号" "。
(base) CN4614000117M:~ yan$ str=hello world
-bash: world: command not found
(base) CN4614000117M:~ yan$ str='hello world' str1="hello world"
(base) CN4614000117M:~ yan$ echo $str;echo $str1
hello world
hello world
(base) CN4614000117M:~ yan$ echo '$str';echo "$str1"
$str
hello world
(base) CN4614000117M:~ yan$
' ' : 单引号是不能识别变量,只会原样输出,单引号是不能转义的
" " : 双引号能够识别变量,双引号能够实现转义(类似于“\
”)
`` :反引号(esc
键下方的那个键),当在脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用“反引号
”
(base) CN4614000117M:~ yan$ str=`date +'%Y%m%d'`;echo $str
20220902
(base) CN4614000117M:~ yan$
11. date的使用
参考:shell脚本中date的使用_CristL的博客-CSDN博客_shell中date的用法
使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
–help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
–version : 显示版本编号
时间方面 :
% : 印出
% %n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
待续。。。