# nohup
在后台运行命令,并忽略所有挂起(SIGHUP)信号,即使终端关闭或用户退出也不会中断该程序。
# jq
用于解析和处理 JSON 数据格式的工具。可以用来过滤、排序、转换等操作。
# ex:
jq '.name' // 要查询name字段
jq '.people[] | .name' // 要查询所有people数组对象中的name字段
jq '.[].name' // 从JSON数据中选择所有对象,并输出它们的name字段
echo composer.json | xargs jq . // 按照文件格式输出
# watch
监视一个命令的输出并定期重新运行该命令。
# ex:
-n seconds:指定执行命令的时间间隔,默认值为 2 秒。
-d:高亮显示命令输出中变化的部分。
-t:不显示标题。
-h:显示帮助信息。
# cut
cut -c 1-5 是一个命令行工具,用于从文件或输出的每一行中提取前五个字符。它从标准输入或作为参数指定的文件中读取输入,并将提取的字符打印到标准输出
# ex:
cut -f 1,2 data.txt // -f 选项用于指定要提取的字段或列。
cut -d ',' -f 1,2 data.csv // -d 选项来指定其他分隔符。
cut -f 3-5 data.txt // n-m 的方式指定要提取的字段或列范围。
cut -f 4- data.txt // 提取文件中从第 4 列到最后一列的数据。
-s:禁止输出不包含分隔符的行。
--complement:补集选项,提取未指定的字段或列。
# gzip
我可以展示一些使用gzip命令进行文件压缩和解压缩的例子。请告诉我您想要压缩或解压缩哪个文件,并指定相应的操作类型(压缩或解压缩)。
例如,如果您想要压缩一个名为example.txt的文本文件,可以使用以下命令:
gzip example.txt
这将创建一个名为example.txt.gz的压缩文件,并删除原始文件。如果您不想删除原始文件,可以使用-k选项来保留它:
gzip -k example.txt
如果您要解压缩一个名为example.txt.gz的压缩文件,可以使用以下命令:
gunzip example.txt.gz
这将创建一个名为example.txt的解压缩文件,并删除原始压缩文件。如果您要保留原始文件,可以使用-k选项:
gunzip -k example.txt.gz
如果您要同时压缩多个文件,可以将它们组合成一个tar归档文件,然后使用gzip进行压缩。例如,要将所有当前目录中的文本文件压缩到一个名为archive.tar.gz的压缩文件中,请使用以下命令:
tar cvf - *.txt | gzip > archive.tar.gz
这将创建一个名为archive.tar.gz的压缩文件,其中包含所有当前目录中的文本文件。
# tee
tee -a 是一个在Unix/Linux操作系统中使用的命令,它允许将命令的输出同时显示在屏幕上并追加到文件中。 -a选项表示输出应该追加到文件末尾,而不是覆盖它。
例如,如果运行命令 ls | tee -a file.txt,它将在屏幕上显示文件和目录列表,并将输出附加到名为“file.txt”的文件末尾。如果文件不存在,它将被创建。
# tr
tr 是一个Unix命令行实用程序,可以转换或删除字符。
# ex:
用法:tr [选项]…SET1 [SET2] 从标准输入中转换、压缩和/或删除字符,写入到标准输出中。
-c, --complement 使用 SET1 的补集
-C, --no-verify-complement 不要验证 SET1 是否有效
-d, --delete 删除 SET1 中的字符,不进行转换。
-s, --squeeze-repeats 将在 SET1 中被列出的每个重复字符的输入序列替换为该字符的一个单一出现。
-t, --truncate-set1 首先将 SET1 截断为 SET2 的长度
--help 显示此帮助信息并退出
--version 输出版本信息并退出
#- 删除
echo "hello world" | tr -d 'o'
#- 替换
echo "hello world" | tr 'o' 'b'
#- 要从文件中删除所有空格,可以使用以下命令:
`tr -d ' ' < file.txt> newfile.txt`
#- 要将大写字符转换为小写字符:
`echo "HELLO" | tr '[:upper:]' '[:lower:]'`
TIP
tr 和 sed 是在 Linux 系统中常用的文本处理工具,它们的作用虽然有一定重叠,但是有些不同之处。
tr (translate) 命令用于对输入的字符进行简单的替换、删除和压缩等操作。tr 命令可以将一个字符集映射成另一个字符集,也可以删除指定的字符或者重复的字符并进行压缩。例如,可以使用 tr 'a-z' 'A-Z' 把小写字母转换为大写字母;或者使用 tr -d '\r' 删除 Windows 平台下的回车符。
sed (stream editor) 命令则是一款强大的流编辑器,可以实现更复杂的文本处理操作。sed 命令支持的功能包括替换、删除、添加和查找等。与 tr 命令不同的是,sed 通常以行为单位处理文本数据。通过使用正则表达式来匹配和操作文本,可以在文本文件中进行高级搜索和替换操作。例如,可以使用 sed 's/old/new/g' 将所有出现的 old 替换为 new。
总体来说,tr 命令适合进行简单的字符替换和压缩等文本处理任务,而 sed 命令则更适合用于复杂的文本处理任务,例如搜索和替换、删除指定行等。
# mapfile
mapfile 是 Bash 的一个内置命令,用于将输入数据按行读取到数组中。其语法如下:
mapfile [-d delimiter] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C command] [-c quantum] [array]
其中,常用的参数包括:
-d: 指定输入分隔符。
-t: 去除每个行末的换行符。
-s: 跳过指定数量的行。
-n: 读取指定数量的行。
array: 指定要存储输入数据的数组名。
# EX:
1、例如:
mapfile -t my_array < input.txt
将把文件 input.txt 的每一行读入数组 my_array 中,并去除每个行末的换行符。
2、读取 .env 文件并
#读取第二行
mapfile -t a < .env | echo ${a[1]}
# 读取全部
mapfile -t a < .env | echo ${a[@]}