Shell常见命令、语句及函数
一、常用命令
1、grep
grep(global search regular expression and print out the line)命令是一个强大的文本搜索命令
命令格式:
grep [参数] [关键字] <文件名>
注意:
-
查看某个文件的内容的时候,需要<文件名>
-
grep命令在结合|(管道符)使用的情况下,后面的<文件名>是没有的
-
可以通过 grep --help 查看grep的帮助信息
参数说明:
-
-c:只输出匹配行的计数。
-
-n:显示匹配行及行号。
-
-v:显示不包含匹配文本的所有行。
精确定位错误代码
grep -nr [错误关键字] *
2、sed
sed 行文件编辑工具。因为它编辑文件是以行为单位的
命令格式:
sed [参数] '<匹配条件> [动作]' [文件名] # 替换指定第n行的第n个匹配内容 sed [参数] 'n<匹配条件>[动作]n' [文件名]
参数说明:
- -i 表示对文件进行编辑
匹配条件:
-
匹配条件分为两种:数字行号或者关键字匹配
-
关键字匹配格式:’/关键字/’
动作详解:
- -s 替换匹配到的内容
3、awk
awk是一个功能非常强大的文档编辑工具,它不仅能以行为单位还能以列为单位处理文件。
命令格式:
awk [参数] 'BEGIN{...}{动作}END{...}' [文件名]
常见参数:
-F指定列的分割符
常见动作:
-
print 显示内容
-
$0 显示当前行所有内容
-
n 显示当前行的第n列内容,如果存在多个n,它们之间使用逗号(,)隔开
常见内置变量
| 变量 | 作用 |
|---|---|
| NR | 指定显示行的行号 |
| NF | 输出 最后一列的内容 |
| OFS | 输出格式的列分隔符,缺省是空格 |
实例代码:
# 打印第一行第1和第3列内容 ~$ awk 'NR==1 {print $1,$3}' awk.txt # 指定隔离分隔符,查看内容 ~$ awk -F ':' '{print $1,$7}' linshi.txt # 设置显示分隔符,显示内容 ~$ awk 'BEGIN{OFS=":"} {print NR,$0}' awk.txt
4、scp
远程文件传输
传输场景:
| 场景 | 样式 |
|---|---|
| 推送 | scp 本地文件 远程连接的用户@远程主机:远程主机的目录路径 scp python.tar.gz root@192.168.8.13:/root/ |
| 拉取 | scp 远程连接的用户@远程主机:远程主机的文件路径 本地目录 scp root@192.168.8.13:/root/python.tar.gz ./ |
二、流量控制
1、if语句
双分支if - 单条件,两结果
if [ 条件 ] then 指令1 else 指令2 fi
多分支if - n条件,n+1结果
if [ 条件 ] then 指令1 elif [ 条件2 ] then 指令2 else 指令3 fi
2、case语句
case 变量名 in 值1) 指令1 ;; ... 值n) 指令n ;; esac
脚本内容:
# cat case.sh #!/bin/bash # case语句使用场景 case "$1" in "start") echo "服务启动中..." ;; "stop") echo "服务关闭中..." ;; "restart") echo "服务重启中..." ;; *) echo "$0 脚本的使用方式: $0 [ start or stop or restart ]" ;; esac
3、循环语句
for循环
for 条件 do 执行语句 done
特点:for语句,循环的数量有列表中元素个数来决定
while循环
当条件成立时,执行循环 while 条件 do 执行语句 done
until循环
知道条件成立时,结束循环 until 条件 do 执行语句 done
4、函数
函数就是将某些命令组合起来实现某一特殊功能的方式,是脚本编写中非常重要的一部分
# 1、定义简单函数 函数名(){ 函数体 } # 调用函数 函数名 # 2、定义传参函数 函数名(){ 函数体 $n } # 调用函数 函数名 参数
简单函数定义和调用示例
#!/bin/bash # 函数使用场景一:执行频繁的命令 dayin(){ echo "wo de mingzi shi 111" } dayin
注意:这种方法,在函数体内使用echo,就相当于一种状态返回值的变种
函数传参和函数体内调用参数示例
#!/bin/bash # 函数的使用场景二 dayin(){ echo "wo de mingzi shi $1" } dayin 111 # 3、定义脚本传参函数 # 3.1、脚本传参 /bin/bash 脚本名 参数 # 3.2、函数体调用参数 函数名(){ 函数体 $1 } 函数名 $1 # 生产用 # 脚本传参 /bin/bash 脚本名 参数 # 函数体调用参数 本地变量名="$1" 函数名(){ 函数体 $1 } 函数名 "${本地变量名}" # 注意:类似于shell内置变量中的位置参数
浙公网安备 33010602011771号