菜单

Shell 工具和文本处理

相关源文件

本页面介绍了 tldr-pages 仓库中的 Shell 工具和文本处理工具,重点关注用于条件表达式、文本搜索、模式匹配和输入处理的命令行工具。关于文件操作工具,请参阅文件和数据操作。关于系统监控工具,请参阅系统监控和管理

Shell 工具概述

Shell 工具是命令行界面的核心组成部分,使用户能够执行条件测试、搜索文本、处理输入以及操作 Shell 历史记录。这些工具是 Shell 脚本和命令行数据处理工作流程的基本组成部分。

来源: pages/common/grep.md1-37 pages/common/[.md1-34 pages/common/[[.md1-38

条件表达式和测试工具

Shell 脚本通常需要评估条件来做出决策。tldr-pages 仓库记录了为此目的的几种工具,包括方括号命令([[[)和 test 命令。

Test 命令和方括号语法

test 命令及其方括号语法等效项([[[)用于在 Shell 脚本中检查文件类型和比较值。单方括号 [ 是符合 POSIX 标准的 test 命令,而双重方括号 [[ 是 Bash 特有的扩展,具有附加功能。

来源: pages/common/[.md1-34 pages/common/[[.md1-38

以下是不同测试语法的比较

来源: pages/common/[.md1-34 pages/common/[[.md1-38

常见测试操作

test[[[ 都支持各种操作,用于检查文件属性、比较字符串和评估数值。pages/common/[[.md15-37 pages/common/test.md7-21

文本搜索和模式匹配

文本搜索和模式匹配是处理文本数据必不可少的功能。为此最常用的工具是 grep

Grep: 全局正则表达式打印

grep 是一个强大的工具,用于使用正则表达式在文件中查找模式。它是 Shell 脚本和命令行操作中最常用的文本处理工具之一。

来源: pages/common/grep.md1-37

grep 主要功能

grep 支持各种选项来定制其行为

  1. 模式类型:

    • 默认: 基本正则表达式
    • -F, --fixed-strings: 将模式解释为固定字符串 (非正则表达式)
    • -E, --extended-regexp: 使用扩展正则表达式
  2. 搜索范围:

    • 单个文件: grep "pattern" file
    • 多个文件: grep "pattern" file1 file2
    • 递归: grep -r "pattern" directory
  3. 输出控制:

    • -n, --line-number: 显示行号
    • -o, --only-matching: 仅显示匹配部分
    • -v, --invert-match: 显示不匹配的行
    • --context=N: 显示匹配周围 N 行上下文
  4. 大小写敏感性:

    • -i, --ignore-case: 忽略大小写差异

来源: pages/common/grep.md6-36

使用 Read 进行输入处理

read 内置命令用于从标准输入中检索数据,对于交互式脚本和逐行处理输入非常有用。

来源: pages/common/read.md1-37

Read 主要功能

read 命令提供了各种选项以满足不同的输入处理需求

  1. 基本用法:

    • 将输入存储到变量中: read variable
    • 将输入存储到多个变量中: read var1 var2 var3
  2. 数组存储:

    • 将输入存储为数组元素: read -a array
  3. 输入限制:

    • -n count: 仅读取指定数量的字符
    • -r: 原始模式 (不特殊处理反斜杠)
  4. 用户交互:

    • -p "prompt": 在读取输入前显示提示
    • -s: 静默模式 (不回显键入的字符,适用于密码)
  5. 逐行处理:

    • 逐行处理文件: while read line; do echo "$line"; done < file

来源: pages/common/read.md6-36

Shell 历史扩展

Shell 历史扩展允许用户重用和修改之前执行的命令,从而提高命令行下的工作效率。

来源: pages/common/!.md1-37 pages/common/^.md1-22

历史展开运算符

Shell 提供了多种历史展开运算符

  1. 感叹号 (!) 运算符:

    • !!:重复上一条命令
    • !n:重复历史中的第 n 条命令
    • !-n:重复当前位置向前数第 n 条命令
    • !string:重复最近以 string 开头的命令
    • !$:使用上一条命令的最后一个参数
    • !*:使用上一条命令的所有参数
  2. 脱字号 (^) 运算符:

    • ^string1^string2:在上一条命令中将 string1 的第一个匹配项替换为 string2
    • ^string1^:从上一条命令中删除 string1 的第一个匹配项
    • ^string1^string2^string3:将 string1 替换为 string2 并追加 string3

来源: pages/common/!.md6-36 pages/common/^.md7-21

使用 Basenc 进行文本编码

basenc 工具用于使用各种编码方案对数据进行编码和解码。

来源: pages/common/basenc.md1-21

Basenc 功能

basenc 工具支持各种编码方案

  1. 编码格式:

    • --base64:标准 Base64 编码
    • --base32:Base32 编码
    • --base16:Base16(十六进制)编码
  2. 操作模式:

    • 默认:编码
    • -d, --decode:解码
  3. 输入源:

    • 文件:basenc --base64 file
    • 标准输入:command | basenc --base64
  4. 输出格式化:

    • -w, --wrap:指定行包装的列数

来源: pages/common/basenc.md6-20

Shell 工具管道与工作流

Shell 工具常被组合成管道,以创建强大的文本处理工作流。这些管道可以转换、过滤和分析各种格式的数据。

来源: pages/common/grep.md34-36 pages/common/read.md34-36 pages/common/test.md23-25 pages/common/!.md6-8 pages/common/^.md7-9

示例工作流程

以下是一些使用 shell 工具的常见文本处理工作流

  1. 使用 grep 和 read 进行逐行处理:

  2. 条件文件操作:

  3. 使用历史展开进行命令纠错:

  4. 使用历史展开快速 sudo:

来源: pages/common/grep.md34-36 pages/common/read.md34-36 pages/common/test.md23-25 pages/common/!.md6-8 pages/common/^.md7-9

总结

Shell 工具和文本处理工具构成了命令行文本操作的基础。本页涵盖的关键组件包括

  1. 条件测试:使用 [[[test 来评估条件。
    2. 文本搜索:使用 grep 来查找模式。pages/common/[.md pages/common/[[.md pages/common/test.md pages/common/read.md pages/common/!.md pages/common/^.md pages/common/basenc.md