[命令] Linux 命令 [[]] (比较数值、文件、目录、链接、块、特殊文件、字符串)

内容一:[[]] 比较符号

1.1 [[]] 数值比较符号

1) -eq 或者 ==,若两个数值存在且相等,则结果为真
2) -ne 或者 !=,若两个数值存在且不相等,则结果为真
3) -gt 或者 >,若两个数值存在且前一个数值大于后一个数值,则结果为真
4) -lt 或者 <,若两个数值存在且前一个数值小于后一个数值,则结果为真
5) -ge 或者 >=,若两个数值存在且前一个数值大于或等于后一个数值,则结果为真
6) -le 或者 <=,若两个数值存在且前一个数值小于或等于后一个数值,则结果为真

1.2 [[]] 字符串比较符号

1) -z,如果字符串为空值,则结果为真
2) -n,如果字符串不为空值,则结果为真
3) == 或者 =,若两个字符串存在且一样,则结果为真
4) !=,若两个字符串存在且不一样,则结果为真
5) >,若两个字符串存在且前一个字符串大于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
6) <,若两个字符串存在且前一个字符串小于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真

1.3 [[]] 文件、目录、链接、块、特殊文件比较符号

1) -e,若文件或目录或链接存在,则结果为真
2) -d,若目录存在,则结果为真
3) -f,若文件存在,则结果为真
4) -L,若链接存在,则结果为真
5) -b,若块文件存在,则结果为真
6) -c,若字符型特殊文件存在,则结果为真
7) -s,若文件存在且里面有内容,则结果为真
8) -r,若文件且可读,则结果为真
9) -w,若文件且可写,则结果为真
10) -x,若文件且可执行,则结果为真
11) -nt,若两个文件存在且前一个文件比后一个文件新,则结果为真
12) -ot,若两个文件存在且前一个文件比后一个文件新,则结果为真

1.4 [[]] 逻辑符号

1) &&,和
2) ||,或
3) !,非

1.5 [[]] 运算符号

1) +,若两个数值存在,则相加
2) -,若两个数值存在,则相减
3) *,若两个数值存在,则相乘
4) /,若两个数值存在,则相除
5) %,若两个数值存在,则取余

1.6 [[]] 其他符号

1) =~,两个字符串或数值存在且后一个字符串或数值匹配正则表达式后一样,则结果为真
2) [0-9] 等所有 Linux 正则表达式
3) * 等所有 Linux 通配符

内容二:[[]] 的数值比较案例

2.1 案例一:对整数进行比较

# [[ 0 -ne 1 ]]
# echo $?
0

(补充:这里以测试数字 0 是否不等于数字 1 为例)

2.2 案例二:对字符串进行比较

# [[ a == a ]]
# echo $?
0

(补充:这里以测试字符串 a 是否等于字符串 a 为例)

2.3 案例三:对文件进行比较

# [[ -f test.txt ]]
# echo $?
0

(补充:这里以测试文件 test.txt 是否存在为例)

2.4 案例四:对变量进行比较

# a=1
# [[ $a == 1 ]]
# echo $?
0

(补充:这里以测试变量 a 是否等于数字 1 为例)

2.5 案例五:对数值运算后进行比较

# a=2
# b=3
# c=5
# [[ $a+$b -eq $c ]]
# echo $?
0

(补充:这里以测试变量 a 加变量 b 是否等于变量 c 为例)

(注意: [[]] 数值运算后需要使用 -eq、-ne、-gt、-lt、-ge、-le 进行比较而不是使用 ==、!=、>、<、>=、<=)

2.6 案例六:使用逻辑符号对多个变量进行比较

# a=eternalcenter
# b=eternalcenter
# c=eternalcentre
# [[ $a == $b && $b != $c ]]
# echo $?
# 0

(补充:这里以测试变量 a 是否等于变量 b 且变量 b 是否不等于变量 c 为例)

2.7 案例七:使用通配符对字符串进行比较

# [[ eternalcenter = eternalcen??? ]]
# echo $?
# 0

或者:

# [[ eternalcenter = e*r ]]
# echo $?
# 0

(补充:这里以测试字符串 eternalcenter 是否等于字符串加通配符 eternalcen??? 或字符串加通配符 e*r 为例)

2.8 案例八:使用正则表达式对字符串进行比较

# [[ 10 =~ [0-9]{2} ]]
# echo $?
# 0

(补充:这里以测试数字 10 是否是每位数是 0 到 9 的两位数为例)

[消息] Rocky Linux 和 AlmaLinux 可以用于代替 CentOS Linux

今天,我们可以用 Rocky Linux 和 AlmaLinux OS 替代 CentOS Linux。

今天 CentOS 团队正式停止了对 CentOS Linux 8 的维护。并将自己的方向放在了 CentOS Stream 上。CentOS Stream 是一个 Red Hat 商业 Linux 系统 RHEL 的前置测试版。这是 Red Hat 正式收购 CentOS 以后第一次对 CentOS 项目作出的重大决策,同时也彻底改变了 CentOS 项目的初衷。未来全世界运行在 CentOS 系统上的众多服务(业务)将面临更多的不确定性。

生命不死,自由不息。在开源的大环境和领域,一个项目最初的美好初衷发生了改变,就会诞生新的项目继承并发扬这些初衷。Rocky Linux 和 AlmaLinux OS 就是 CentOS 最初初衷的继承者。

Rocky Linux 由 CentOS 创始人 Gregory Kurtzer,在发现 CentOS 项目的初衷发生变化后创建。

AlmaLinux OS 诞生的目的,是为了弥补 CentOS Linux 稳定版停产后留下的空白,其是 RHEL 的 1:1 二进制兼容分支。

[步骤] GitHub 代码的更新 (令牌版)

步骤一:在 GitHub 官网上生成令牌

1.1 在 https://github.com 上登录或注册 GitHub 用户

(步骤略)

1.2 在 GitHub 上创建仓库

右上角 + –> New repository –> 填写 Repository name –> 勾选 Public –> Create repository

(注意:只有当要使用的仓库还没有创建时才需要进行此步骤)

1.3 在 GitHub 官网上生成令牌

右上角的头像 –> Settings –> Developer settings –> Personal access tokens –> Generate new token –> 填写 Note –> 勾选需要的 scopes –> Generate token

1.4 复制生成的令牌

(步骤略)

步骤二:更新 GitHub 代码

2.1 进入有代码需要更新的目录

# cd github

(补充:这里以进入 github 目录为例)

2.2 初始化 Git 环境

# git init

2.3 添加需要更新的代码

# git add *

(补充:这里以添加当前目录下的所有文件为例)

2.4 提交刚刚的添加

# git commit -m "last commit"

(补充:这里以提交时添加 “last commit” 备注为例)

2.5 创建或选择代码库的分支

# git branch -M main

(补充:这里以创建或选择库里的 main 分支为例)

2.6 添加 GitHub 源

# git remote add origin git@github.com:eternalcenter-now/eternalcenter-now.github.io

(补充:这里以添加 GitHub 的 eternalcenter-now 用户的 eternalcenter-now.github.io 库为例)

(注意:这里的 eternalcenter-now 用户和 eternalcenter-now.github.io 库是指在 1.1、1.2 上创建的用户和库)

2.7 通过令牌设置 GitHub 源

# git remote set-url origin https://gafafhp_Nfaodfwiixma8hPpds4e6asdflim@github.com/eternalcenter-now/eternalcenter-now.github.io

(补充:这里以使用 GitHub 的 gafafhp_Nfaodfwiixma8hPpds4e6asdflim 令牌、eternalcenter-now 用户的 eternalcenter-now.github.io 库为例)

(注意:这里的 eternalcenter-now 用户、eternalcenter-now.github.io 库和 gafafhp_Nfaodfwiixma8hPpds4e6asdflim 令牌是指在 1.1、1.2、1.3 上创建的用户、库和生成的令牌)

2.8 将代码更新至 GitHub

# git push -u origin main

(补充:这里以将代码更新至 main 分支为例)