[TOC]
语法
if 条件语句
if
:用于执行一个命令并根据其退出状态码执行不同的操作。$(if $(KBUILD_OUTPUT),, ...):
这是一个条件判断语句。(if ...)
函数的语法是$(if condition, then-part, else-part)
如果condition
为真,则执行then-part
;否则,执行else-part
。- 环境变量
shift 命令用于移动参数
shift
命令用于移动参数。它会将所有参数左移一个位置,即$2
的值赋给$1
,$3
的值赋给$2
,以此类推。$1
的值会被丢弃,而$0
(脚本名称)不会受到影响。
local 命令用于声明局部变量
${parameter+word} 用于检查变量是否已经定义
- 一种参数替换语法,用于检查变量是否已设置并根据结果返回不同的值。以下是对这种语法的详细解释:
1 | {parameter+word} |
- 如果 parameter 已设置且不为空,则结果为 word。
- 如果 parameter 未设置或为空,则结果为空字符串。
标志
$BASH 指向的 shell路径
LFS_CFLAGS 获取与大文件支持相关的编译标志(CFLAGS)
LFS_LDFLAGS 获取与大文件支持相关的链接标志(LDFLAGS)
LFS_LIBS 获取与大文件支持相关的库(LIBS)
$1 $2 $3
… 获取脚本参数
$#
获取脚本参数的个数
-o
逻辑或运算符,表示如果任意一个条件为真,则整个条件为真
-d 选项用于检查目录是否存在
-z 选项用于检查字符串为空
-n 选项用于检查字符串不为空
函数
uname 返回系统信息
-m
:返回当前系统的硬件架构
-s
命令用于获取当前主机的操作系统名称
sed 对文本进行基本的文本转换和操作
基本用法
sed
的基本语法如下:
1 | sed [选项] '命令' 文件 |
常见命令
-n 只打印那些被 p
命令显式指定的行
- :
-n
选项告诉sed
只打印那些被p
命令显式指定的行,而不是默认打印所有处理过的行。
-e 用于指定一个 sed
命令
-e
选项:-e
选项用于指定一个sed
命令。可以使用多个-e
选项来指定多个命令,这些命令将按顺序执行。
s/ 替换命令
- 格式为 s/
模式
/替换
/。它的作用是将匹配的模式替换为指定的字符串。 - 可以有多个模式替换命令,每个命令之间用()分隔,最后的替换用/进行区分。
- ( 和 ):圆括号用于定义一个捕获组。捕获组会保存匹配的子字符串,以便在替换或后续操作中引用
- \1:反向引用第一个捕获组。在替换中,\1 会被匹配的第一个捕获组替换。
- \2:反向引用第二个捕获组。在替换中,\2 会被匹配的第二个捕获组替换。
p 打印替换后的行
-E 启用扩展正则表达式
^
:匹配行的开头。$
:匹配行的结尾。.
:匹配任意字符。*
:匹配前面一个字符零次或多次。+
:匹配前面一个或多个字符。- 例如:[0-9]+ 匹配一个或多个数字。
\.
:匹配点号。(.*):匹配任意字符零次或多次。
tr 将输入中的字符进行替换、删除或压缩
基本用法
tr
命令的基本语法如下:
1 | tr [选项] SET1 [SET2] |
SET1
:要转换的字符集。SET2
:转换后的字符集。
常见选项
-d
:删除 SET1
中的所有字符。
-s
:压缩 SET1
中的重复字符。
-c
:补集,表示 SET1
中未包含的所有字符。
[:upper:]
用于匹配所有的大写字母(A-Z)
[:lower:]
用于匹配所有的小写字母(a-z)。
1 | tr '[:upper:]' '[:lower:]' |
getconf 查询系统配置变量的值
ln 创建符号链接
-f
选项表示强制创建符号链接,即使目标文件已经存在。-s
选项表示创建符号链接而不是硬链接。-n
选项表示如果目标是一个目录,则在目标目录中创建符号链接。
find 查找文件
-path 选项用于匹配文件路径
-newer 选项用于查找比指定文件新的文件
test 用于检查文件类型和比较值的命令。
- 它可以用于各种条件判断,包括文件属性检查、字符串比较和数值比较。
-gt 用于检查一个数值是否大于另一个数值
- -gt 是 test 命令的一个比较操作符,表示“大于”(greater than)。它用于比较两个整数值。
-e 用于检查指定的文件或目录是否存在
- 如果指定的文件或目录存在,test -e 返回真(状态码 0);否则,返回假(非零状态码)
-f 用于检查指定的路径是否为一个文件
-ef 比较两个文件或目录是否指向相同的文件系统对象
-n 用于检查字符串是否为空
grep 用于在文件中搜索指定的字符串
基本用法
1 | grep [选项] 搜索模式 [文件] |
搜索模式
:要搜索的字符串或正则表达式。文件
:要搜索的文件。如果省略文件名,则grep
会从标准输入读取数据。
常见选项
-i:忽略大小写
-i
选项告诉grep
忽略大小写,即不区分大小写地搜索指定的字符串。
-v:反向匹配
-v
选项告诉grep
反向匹配,即只显示不匹配的行。
-c:统计匹配行的数量
-c
选项告诉grep
统计匹配行的数量,而不是显示匹配的行。
-n:显示匹配行的行号
-n
选项告诉grep
显示匹配行的行号。
-r:递归搜索
-r
选项告诉grep
递归搜索指定目录下的所有文件。
-w:匹配整个单词
-w
选项告诉grep
只匹配整个单词,而不是匹配包含指定字符串的任意行。
-l:只显示包含匹配字符串的文件名
-l
选项告诉grep
只显示包含匹配字符串的文件名,而不显示匹配的行。
-L:只显示不包含匹配字符串的文件名
-L
选项告诉grep
只显示不包含匹配字符串的文件名,而不显示匹配的行。
-o:只显示匹配的字符串
-o
选项告诉grep
只显示匹配的字符串,而不显示整行。
-q:静默模式
-q
选项告诉grep
静默模式,即不显示任何输出。这在脚本中非常有用,因为你可以根据grep
的退出状态码来判断是否匹配成功。
-A:显示匹配行及后面的行
-A
选项告诉grep
显示匹配行及后面的行。
-B:显示匹配行及前面的行
-B
选项告诉grep
显示匹配行及前面的行。
-C:显示匹配行及前后的行
-C
选项告诉grep
显示匹配行及前后的行。
-E:启用扩展正则表达式
-E
选项告诉grep
启用扩展正则表达式,这样你就可以使用更多的元字符和操作符。
-F:禁用正则表达式
-F
选项告诉grep
禁用正则表达式,即将搜索模式视为普通字符串。
-P:启用 Perl 兼容正则表达式
-P
选项告诉grep
启用 Perl 兼容正则表达式,这样你就可以使用 Perl 正则表达式的语法。
-m:限制匹配行的数量
-m
选项告诉grep
限制匹配行的数量,即只显示指定数量的匹配行。
-s:静默模式
-s
选项告诉grep
静默模式,即不显示任何错误消息。这在脚本中非常有用,因为你可以根据grep
的退出状态码来判断是否匹配成功。
-x:匹配整行
-x
选项告诉grep
只匹配整行,而不是匹配包含指定字符串的任意行。
awk 用于处理文本文件
基本用法
1 | awk [选项] '程序' 文件 |
程序
:要执行的awk
程序。文件
:要处理的文件。如果省略文件名,则awk
会从标准输入读取数据。
常见选项
-F:指定字段分隔符
-F
选项用于指定字段分隔符。默认情况下,awk
使用空格作为字段分隔符。
NF:字段数量
NF
是一个内置变量,表示当前行的字段数量。
NF1:第一个字段
NF-1:倒数第二个字段
用法
重定向操作
2>/dev/null
是一个重定向操作,用于将标准错误输出(stderr)重定向到null。这意味着任何错误消息都会被丢弃,而不会显示在终端或日志中。
具体来说,2>/dev/null
的作用如下:
2>
:表示重定向标准错误输出(文件描述符 2)。- null:是一个特殊的文件,所有写入它的数据都会被丢弃。通过将标准错误输出重定向到null,可以避免在执行命令时显示错误消息。这在某些情况下非常有用,例如,当你希望静默地执行某些命令,而不希望用户看到任何错误消息时。
“$file” in ~ 忽略临时文件
git 命令
rev-parse 用于解析 Git 引用
rev-parse
命令用于解析 Git 引用,例如分支、标签、提交 ID 等。它可以将引用解析为完整的 SHA-1 值,或者将 SHA-1 值解析为引用。
–show-cdup 选项用于显示当前目录与顶层目录之间的相对路径
–head 选项用于显示 HEAD 引用的 SHA-1 值
describe 用于显示最接近的标签
–match 选项用于指定要匹配的标签模式
- 如果 $tag 的值是 v1.0.*,那么 git describe –match=$tag 将只考虑名称以 v1.0. 开头的标签,并生成相应的描述字符串。
1 | $ git describe --match=v2025.04-rc1 |
–no-optional-locks 选项用于禁用可选的锁定
--no-optional-locks
选项用于禁用可选的锁定。这意味着 Git 不会尝试获取可选的锁定,而是直接执行操作。这在某些情况下非常有用,例如,当你希望忽略锁定问题并继续执行操作时。
status 用于显示工作树的状态
-u 指定如何显示未跟踪的文件
- normal:显示未跟踪的文件(这是默认行为)。
- no:不显示未跟踪的文件。
- all:示所有未跟踪的文件,包括未跟踪的目录中的文件。
–porcelai 选项用于以机器可读的格式显示状态
--porcelain
选项用于以机器可读的格式显示状态。这意味着 Git 会以一种易于解析的格式显示状态,而不是以人类可读的格式显示状态。这在脚本中非常有用,因为你可以根据输出来执行其他操作。
diff-index 用于比较工作树和索引
–name-only 选项用于只显示文件名
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
评论