linux常用符号

发布于:2025-03-23 ⋅ 阅读:(31) ⋅ 点赞:(0)

一、管道与重定向

  1. |(管道)

    • 将前一个命令的输出作为后一个命令的输入

    • 例:ls | grep a.txt(查找 a.txt)。

  2. > 与 >>(输出重定向)

    • >:覆盖写入文件;>>:追加到文件末尾。

    • 例:echo "Hello" > file.txt(覆盖),echo "World" >> file.txt(追加)。

  3. <(输入重定向)

    • 从文件读取输入。

    • 例:wc -l < log.txt(统计文件行数)。

  4. 2> 和 &>(错误重定向)

    • 2>:重定向标准错误;&>:重定向标准输出和错误。

    • 例:grep foo * 2> errors.log(将错误写入文件)。

 

二、通配符与扩展

  1. *

    • 匹配任意多个字符。

    • 例:ls *.txt(列出所有 .txt 文件)。

  2. ?

    • 匹配单个字符。

    • 例:ls file?.txt(匹配 file1.txtfileA.txt 等)。

  3. []

    • 匹配括号内任意一个字符。

    • 例:ls [abc].txt(匹配 a.txtb.txtc.txt)。

  4. {}(花括号扩展)

    • 生成组合内容。

    • 例:mkdir {dir1,dir2}(同时创建两个目录)。

三、逻辑操作符

  1. &&

    • 前一个命令成功(退出码为 0)时执行后续命令。

  2. ||

    • 前一个命令失败时执行后续命令。

    • 例:ping host || echo "Host down"(主机不可用时提示)。

 

 

四、引号与转义

  1. ' '(单引号)

    • 保留所有字符的字面值,不展开变量。

    • 例:echo '$USER'(输出 $USER,而非用户名)。

  2. " "(双引号)

    • 允许变量和命令替换。

    • 例:echo "User: $USER"(输出 User: root)。

  3.  $()(命令替换)

    • 执行命令并将结果替换到当前位置。

    • 例:echo "Time: $(date)"(输出当前时间)。

  4. \(转义符)

    • 转义特殊字符(如空格、$)。

    • 例:echo "Price: \$100"(输出 Price: $100)。


五、变量与参数

  1. $

    • 引用变量或参数。

    • 例:echo $PATH(输出环境变量)。

  2. ${}

    • 明确变量边界,避免歧义。

    • 例:echo "${var}_log"(输出变量 var 后跟 _log)。

  3. $0, $1, $2...

    • 脚本参数:$0 为脚本名,$1 为第一个参数。

    • 例:./script.sh arg1 → $1 为 arg1

  4. $?

    • 上一个命令的退出状态码(0 表示成功)。


六、后台与进程控制

  1. &

    • 在后台运行命令。

    • 例:python script.py &(后台执行脚本)。

  2. ;(命令分隔符)

    • 按顺序执行命令,无论前一个是否成功。

    • 例:cd /tmp; ls(进入目录后列出内容)。


七、其他常用符号

  1. #

    • 注释符,其后内容被忽略。

    • 例:# This is a comment

  2. ~

    • 表示当前用户的主目录。

    • 例:cd ~/Documents(进入用户的文档目录)。

  3. -

    • 代表上一个工作目录。

    • 例:cd -(返回上次所在的目录)。

  4. <<(Here Document)

    • 输入多行文本直到结束标记。

    • cat << EOF
      Line 1
      Line 2
      EOF

 

 八 、 与$ 组合使用的符号

1. $#(参数个数)

  • 作用:表示传递给脚本或函数的参数个数(不包括脚本名本身)。


2. $* 与 $@(所有参数)

  • $*

    • 将所有参数视为单个字符串(用空格分隔)。

    • 示例:echo "$*" → 输出 a b c(作为一个整体)。

  • $@

    • 将所有参数视为独立的字符串(保留每个参数的原始边界)。


3. $?(退出状态码)

  • 作用:表示上一个命令或脚本的退出状态码(0 表示成功,非 0 表示失败)。


4. $$(当前进程 PID)

  • 作用:表示当前 Shell 或脚本的进程 ID(PID)

  • echo "当前进程 PID: $$"

5. $!(后台进程 PID)

  • 作用:表示最后一个在后台运行的进程的 PID

  • sleep 10 &
    echo "后台进程 PID: $!"

6. $0(脚本名称)

  • 作用:表示当前运行的脚本或命令的名称


7. $1, $2, $3...(位置参数)

  • 作用:表示传递给脚本或函数的第 1、2、3... 个参数


8. $-(当前 Shell 选项)

  • 作用:表示当前 Shell 的选项设置(如 himBH)。

  • echo "当前 Shell 选项: $-"

9. $_(上一个命令的最后一个参数)

  • 作用:表示上一个命令的最后一个参数

  • ls /usr/local
    echo $_    # 输出:/usr/local

 vim test.sh

echo  "参数个数: $#"
echo  "第一个数: $1"
echo  "第二个数: $2"
echo  "第三个数: $3"
echo  "当前进程 PID: $$"
echo  "所有参数: $*"
echo  "脚本名称: $0"

 sh test.sh "a" "b" "c"

 总结表格

符号 用途 示例
$# 参数个数 echo $# → 输出参数数量
$* 所有参数(合并为一个字符串) echo "$*" → a b c
$@ 所有参数(保持独立) for arg in "$@"; do ...
$? 上一个命令的退出状态码 echo $? → 0(成功)
$$ 当前进程的 PID echo $$ → 1234
$! 最后一个后台进程的 PID echo $! → 5678
$0 脚本名称 echo $0 → ./test.sh
$1, $2... 第 1、2... 个参数 echo $1 → hello
$- 当前 Shell 的选项设置 echo $- → himBH
$_ 上一个命令的最后一个参数 echo $_ → /usr/local

注意事项

  • $* vs $@

    • 不加引号时,两者行为相同。

    • 加双引号时,"$*" 将所有参数合并为一个字符串,"$@" 保留参数独立性(常用于循环遍历)。

  • 参数边界
    使用 ${1}_log 替代 $1_log,避免 Shell 将 $1_log 误认为变量 1_log