【Shell01】常见指令(grep、xargs、cat、tee等)

一、常用快捷键

指令说明
Ctrl + A光标迅速回到行首
Ctrl + E光标迅速回到行尾
Ctrl + k删除光标到行尾内容
Ctrl + u删除光标到行首内容
Ctrl + y粘贴删除的内容
Ctrl + c临时终止命令行命令
Esc + b移动到当前单词的开头
Esc + f移动到当前单词的结尾

二、常见指令说明

1. grep

用法:grep [选项]… PATTERN [FILE]…
说明:在每个 FILE 或是标准输入中查找 PATTERN。
例如:grep -i 'hello world' menu.h main.c

常用参数

常用参数:
	-i: 不区分大小写
    -v: 查找不包含指定内容的行,反向选择
    -w: 按单词搜索
    -o: 打印匹配关键字
    -c: 统计匹配到的次数
    -n: 显示行号
    -r: 逐层遍历目录查找
    -A: 显示匹配行及后面多少行	
    -B: 显示匹配行及前面多少行
    -C: 显示匹配行前后多少行
    -l: 只列出匹配的文件名
    -L: 列出不匹配的文件名
    -e: 使用正则匹配
    -E: 使用扩展正则匹配
    ^key:以关键字开头
    key$:以关键字结尾
    ^$:匹配空行

在这里插入图片描述

2. |(管道)

用法:cmd_1 | cmd_2
作用:将cmd_1的标准输出,作为cmd_2的标准输入

3. xargs

用法01:xargs [OPTION]... COMMAND INITIAL-ARGS...
用法02:somecommand | xargs -option command
用法03:xargs -a filename(读取文件中的内容)
作用:Run COMMAND with arguments INITIAL-ARGS and more arguments read from input.
说明:xargs 可以从标准输入中读取的数据作为参数,传递给COMMAND

常用「OPTION」

OPTIONS:
    -a file 从文件中读入作为sdtin
    -E flag flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
    -p 当每次执行一个argument的时候询问一次用户。
    -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
    -t 表示先打印命令,然后再执行。
    -i 或者是-I,将xargs接收的每项名称,逐行赋值给 {},可以用 {} 代替。
    -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
    -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。

在这里插入图片描述
在这里插入图片描述

三、变量

1. 变量的声明

普通变量

序号样式要点
方式一变量名=变量值变量值必须是一个整体,中间没有特殊字符
“=” 前后不能有空格
方式二变量名=‘变量值’原字符输出,我看到的内容,我就输出什么内容,
方式三变量名=“变量值”如果变量值范围内,有可以解析的变量A,那么首先解析变量A,
将A的结果和其他内容组合成一个整体,重新赋值给变量B

使用习惯:

  1. 数字不加引号,其他默认加双引号
  2. 因为bash属于弱类型语言,默认会将所有内容当成字符串

命令变量

定义方式一:变量名=`命令`(注意:` 是反引号)

定义方式二:变量名=$(命令)

执行流程:

  1. 执行 ` 或者 $() 范围内的命令
  2. 将命令执行后的结果,赋值给新的变量名A

2. 内置变量

序号变量名解析
1$0获取当前执行的shell脚本文件名
2$n获取当前执行的shell脚本的第n个参数值,n=1…9,
当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来${10}
3$#获取当前shell命令行中参数的总个数
4$?获取执行上一个指令的返回值(0为成功,非0为失败)
5$_在此之前执行的命令或脚本的第一个内容
6$@传给脚本的所有参数
7$*是以一个单字符串显示里所有向脚本传递的参数,与位置参数不同,参数可超过9个
8$$是脚本运行的当前进程的ID号,作用是方便以后管理它杀掉他
9$!前一条命令进程的ID号,作用是方便以后管理它杀掉他

四、常见函数

1. 字符串函数

${#var_name},获取字符串的长度

字符串截取

${var:pos:length},对变量 var 从 pos 开始截取 length 个字符,pos 为空表示0

${file:0:5},从0开始,截取5个字符
${file:5:5},从5开始,截取5个字符
${file::5},从0开始,截取5个字符
${file:0-6:3},从倒数第6个字符开始,截取之后的3个字符
${file: -4},返回字符串最后四个字节,-前面是"空格"

2. 默认赋值

格式一:${变量名:-默认值}

  1. 变量a如果有内容,那么就输出a的变量值
  2. 变量a如果没有内容,那么就输出默认的内容

格式二:${变量名+默认值}

  1. 无论变量a是否有内容,都输出默认值

五、其他使用

1. 后台执行

& 就是将一个命令从前台转到后台执行:COMMAND &
在这里插入图片描述

2. EOF

在shell编程中,“EOF"通常与”<<"结合使用
“<<EOF"表示后续的输入作为子命令或子shell的输入
直到遇到"EOF”,会再次返回到主调用shell,可将其理解为分界符(delimiter)
所谓的 EOF,就是End of file的缩写,它是一种自定义的文件内容终止符

“EOF"中间的内容将以标准输入的形式输入到"交互式程序”
当shell看到"<<"知道其后面输入的分界符
当shell再次看到分界符时,两个分界符中间的部分将作为标准输入

3. cat & EOF

语法格式
    cat > file  << EOF
    ...
    EOF
注意:
	> 代表覆盖式增加内容到 file 文件
	>> 代表追加式增加内容到 file 文件
# 定制主机解析名信息
[root@localhost ~]# cat >> hosts << EOF
10.0.0.13 k8s-master
10.0.0.14 k8s-node1
10.0.0.15 k8s-node2
EOF

# 演示效果
[root@localhost ~]# cat hosts
10.0.0.13 k8s-master
10.0.0.14 k8s-node1
10.0.0.15 k8s-node2

4. tee & EOF

tee命令读取标准输入,会把这些内容同时输出到标准输出和(多个)文件中
tee命令可以重定向标准输出到多个文件
注意:在使用管道线时,前一个命令的标准错误输出不会被tee读取

命令说明

样式1:只输出到标准输出
	tee
样式2:输出到标准输出的同时,保存到文件file中
	tee file
样式3:输出到标准输出的同时,追加到文件file中。如果文件不存在则创建;如果文件存在则追加。
	tee -a file
	tee host2 <<- EOF ... EOF
样式4: 输出到标准输出两次。
	tee -
样式5:输出到标准输出两次,同时保存到file1和file2中。
	tee file1 file2 -

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值