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.txt、fileA.txt等,不匹配file12.txt)。[]:匹配括号内的任意单个字符(支持范围)。示例:ls file[0-9].txt(匹配file0.txt到file9.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 命令行的基础,熟练掌握后能大幅提高操作效率