一、常用快捷键
指令 | 说明 |
---|---|
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 |
使用习惯:
- 数字不加引号,其他默认加双引号
- 因为bash属于弱类型语言,默认会将所有内容当成字符串
命令变量
定义方式一:变量名=`命令`(注意:` 是反引号)
定义方式二:变量名=$(命令)
执行流程:
- 执行 ` 或者 $() 范围内的命令
- 将命令执行后的结果,赋值给新的变量名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. 默认赋值
格式一:${变量名:-默认值}
- 变量a如果有内容,那么就输出a的变量值
- 变量a如果没有内容,那么就输出默认的内容
格式二:${变量名+默认值}
- 无论变量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 -