Linux 常用命令
⚠️ 学好正则表达式!!!
grep
Linux grep
(global regular expression
) 命令用于查找文件里符合条件的字符串或正则表达式。
grep [options] pattern [files]
- pattern - 表示要查找的字符串或正则表达式。
- files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
常用选项(options):
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。(统计)
更多参数说明(options):
- -A 显示行数 或 --after-context=显示行数 : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
- -B 显示行数 或 --before-context=显示行数 : 除了显示符合样式的那一行之外,并显示该行之前的内容。
- -C 显示行数 或 --context= 显示行数或-显示行数 : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
- -o 或 --only-matching : 只显示匹配PATTERN 部分。
- -w 或 --word-regexp : 只显示全字符合的列。
- -x --line-regexp : 只显示全列符合的列。
awk
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
awk options 'pattern {action}' file
选项参数说明:
options
:是一些选项,用于控制awk
的行为。pattern
:是用于匹配输入数据的模式。如果省略,则awk
将对所有行进行操作。{action}
:是在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行。
常用命令:
awk -F'[指定分割符]' '$1" "$2 >= "开始日期" && $1" "$2 <= "结束日期"' 日志文件
示例:
awk -F'[, ]' '$1" "$2 >= "2025-08-15 17:47:00" && $1" "$2 <= "2025-08-15 17:48:00"' 日志文件
curl
curl(Client URL)是一个强大的命令行工具,用于在 Linux/Unix 系统中传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等。
curl [options] [URL...]
options
:各种可选参数,用于控制 curl 的行为URL
:要访问的一个或多个网址
常用选项参数详解
基本请求控制
选项 | 说明 | 示例 |
---|---|---|
-X | 指定 HTTP 方法 | curl -X POST https://example.com |
-d | 发送 POST 数据 | curl -d "name=John" https://example.com |
-G | 将 -d 数据作为 GET 参数发送 | curl -G -d "q=keyword" https://search.com |
-H | 添加请求头 | curl -H "Content-Type: application/json" https://api.com |
示例
- Get 请求
curl -X GET "http://10.32.142.26:8705/cs/rpa/trend?date=2025-08-15"
- Post 请求
curl -X POST -d "username=admin&password=123456" https://api.example.com/login
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"John","age":30}' \
https://api.example.com/users
Shell
脚本开头需要定义使用的Shell
#!/bin/bash
# 编写Shell命令
Shell 变量
在 Shell 编程中,变量是用于存储数据值的名称。
变量定义
定义变量时,变量名不加美元符号($
),如:
var="hello shell"
注意:等号两侧避免使用空格!
变量使用
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
echo $var
echo ${var}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
变量只读
使用readonly
命令可以将变量定义为只读变量,只读变量的值不能被改变。
readonly var
变量删除
使用 unset 命令可以删除变量。语法:
unset var
变量被删除后不能再次使用。unset 命令不能删除只读变量。
变量类型
- 字符串变量: 在 Shell中,变量通常被视为字符串。
你可以使用单引号 ' 或双引号 " 来定义字符串,例如:
var="hello shell"
var='hello shell'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字符串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
- 整数变量: 在一些Shell中,你可以使用 declare 或 typeset 命令来声明整数变量。
这样的变量只包含整数值,例如:
declare -i my_integer=42
这样的声明告诉 Shell 将 my_integer 视为整数,如果尝试将非整数值赋给它,Shell会尝试将其转换为整数。
- 数组变量: Shell 也支持数组,允许你在一个变量中存储多个值。
数组可以是整数索引数组或关联数组,以下是一个简单的整数索引数组的例子:
my_array=(1 2 3 4)
或者关联数组(字典):
declare -A associative_array
associative_array["name"]="John"
associative_array["age"]=30
- 环境变量: 这些是由操作系统或用户设置的特殊变量,用于配置 Shell 的行为和影响其执行环境。
例如,PATH 变量包含了操作系统搜索可执行文件的路径:
echo $PATH
- 特殊变量: 有一些特殊变量在 Shell 中具有特殊含义,例如 $0 表示脚本的名称,$1, $2, 等表示脚本的参数。
$#表示传递给脚本的参数数量,$? 表示上一个命令的退出状态等。
Shell 参数传递
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为 $n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数。
例如可以使用 $1、$2 等来引用传递给脚本的参数,其中 $1 表示第一个参数,$2 表示第二个参数,依此类推。
Shell 运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
算术运算符
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | expr $a + $b 结果为 30。 |
- | 减法 | expr $a - $b 结果为 -10。 |
* | 乘法 | expr $a \* $b 结果为 200。 |
/ | 除法 | expr $b / $a 结果为 2。 |
% | 取余 | expr $b % $a 结果为 0。 |
= | 赋值 | a=$b 把变量 b 的值赋给 a。 |
== | 相等。用于比较两个数字,相同则返回 true。 | [ $a == $b ] 返回 false。 |
!= | 不相等。用于比较两个数字,不相同则返回 true。 | [ $a != $b ] 返回 true。 |
Shell 流程控制
注意:
- 条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
- 在控制台中编写 Shell 语句时,一条指令结束后需要使用分号进行分隔
;
。
var=false
if [[ $var = true ]]; then echo "hello"; else echo 'false'; fi