跳到主要内容

Linux 常用命令

⚠️ 学好正则表达式!!!


grep

Linux grepglobal 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中,你可以使用 declaretypeset 命令来声明整数变量。

这样的变量只包含整数值,例如:

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 脚本时,向脚本传递参数,脚本内获取参数的格式为 $nn 代表一个数字,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