Linux 命令中常见的符号及含义

5 阅读2分钟

Linux 命令中的符号大多是 “元字符”,用于控制命令的行为、输入输出或匹配规则,以下是最常用的符号分类:

1. 重定向符号(控制输入 / 输出流向)

  • >:覆盖式输出重定向。将命令的输出写入文件,若文件存在则覆盖,不存在则创建。示例:echo "hello" > test.txt(将 "hello" 写入 test.txt,覆盖原有内容)。
  • >>:追加式输出重定向。将命令的输出追加到文件末尾,不覆盖原有内容。示例:echo "world" >> test.txt(在 test.txt 末尾添加 "world")。
  • <:输入重定向。将文件内容作为命令的输入。示例:cat < test.txt(等价于 cat test.txt,用 test.txt 作为 cat 的输入)。
  • <<:Here Document 语法(如前面的 <<EOF),用于直接输入多行内容作为命令输入。

2. 管道符号(连接多个命令)

  • |:管道符,将前一个命令的输出作为后一个命令的输入。

    示例:

    ls -l | grep ".txt"  # 列出所有文件,再筛选出包含 .txt 的行
    

3. 通配符(文件 / 路径匹配)

  • \*:匹配任意数量的任意字符(包括 0 个)。示例:rm *.log(删除所有以 .log 结尾的文件)。
  • ?:匹配单个任意字符。示例:ls file?.txt(匹配 file1.txtfileA.txt 等,不匹配 file12.txt)。
  • []:匹配括号内的任意单个字符(支持范围)。示例:ls file[0-9].txt(匹配 file0.txtfile9.txt);ls [a-zA-Z].sh(匹配以单个字母开头的 .sh 文件)。
  • [^]:匹配不在括号内的任意单个字符(取反)。示例:ls file[^0-9].txt(匹配不以数字结尾的 fileX.txt)。

4. 后台运行与作业控制

  • &:将命令放到后台运行,不阻塞当前终端。示例:python app.py &(后台启动 Python 程序,终端可继续输入其他命令)。
  • &&:逻辑与,前一个命令执行成功(返回码 0)后,才执行后一个命令。示例:cd ~/docker-env && mkdir kafka(先进入目录,成功后再创建文件夹)。
  • ||:逻辑或,前一个命令执行失败(返回码非 0)后,才执行后一个命令。示例:cd /invalid/path || echo "目录不存在"(如果进入目录失败,输出提示)。

5. 命令替换与变量

  • $()```(反引号):命令替换,将括号 / 反引号内的命令执行结果作为字符串返回。示例:echo "当前目录: $(pwd)"echo "当前目录: pwd"(输出当前路径)。
  • $变量名:引用变量的值。示例:NAME="test" && echo $NAME(输出 test)。
  • $?:获取上一个命令的返回码(0 表示成功,非 0 表示失败)。示例:ls test.txt; echo $?(如果 test.txt 存在,输出 0;否则输出非 0)。

6. 其他常用符号

  • #:注释符号,# 后的内容会被 Shell 忽略(除了脚本第一行的 #!/bin/bash,用于指定解释器)。示例:echo "hello" # 这是一个注释
  • ~:代表当前用户的家目录(等价于 $HOME)。示例:cd ~(进入家目录);ls ~/docs(查看家目录下的 docs 文件夹)。
  • ..:表示上一级目录;.:表示当前目录。示例:cd ..(进入上一级目录);cp ./a.txt ../b.txt(复制当前目录的 a.txt 到上一级目录,命名为 b.txt)。
  • ''(单引号):强引用,其中的变量、命令、特殊符号都不会被解析,原样输出。示例:echo '当前用户: $USER'(输出 当前用户: $USER,不会替换 $USER)。
  • ""(双引号):弱引用,其中的变量和命令会被解析($() 等会生效)。示例:echo "当前用户: $USER"(输出 当前用户: root,会替换 $USER 为实际用户名)。

这些符号是 Linux 命令行的基础,熟练掌握后能大幅提高操作效率