关于shell命令的扩展

发布于:2025-08-30 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一、逻辑运算符

1. &&(AND)

2. ||(OR)

3. 组合使用:A && B || C

二、输出与重定向

1. echo 输出

2. 标准文件描述符(FD)

3. 重定向操作符

4. 同时重定向 stdout 和 stderr

5. 丢弃输出

三、管道 |

四、自定义文件描述符(进阶)

五、小结速查


一、逻辑运算符

1. &&(AND)
  • 含义:只有左侧命令成功(退出码为 0)时才执行右侧命令。

  • 示例

    true && echo "成功"   # 输出“成功”
    false && echo "失败"  # 无输出
2. ||(OR)
  • 含义:只有左侧命令失败(退出码非 0)时才执行右侧命令。

  • 示例

    false || echo "失败"  # 输出“失败”
    true || echo "成功"   # 无输出
3. 组合使用:A && B || C
  • 等价于(A && B) || C

  • 示例

    false && echo yes || echo fallback  # 输出 fallback

二、输出与重定向

1. echo 输出
  • 默认输出到 stdout(标准输出)

  • 输出到 stderr(标准错误):

    echo "错误信息" >&2
2. 标准文件描述符(FD)
  • 0:stdin(标准输入)

  • 1:stdout(标准输出)

  • 2:stderr(标准错误)

3. 重定向操作符
  • >:覆盖写入文件

  • >>:追加写入文件

  • 2>:重定向 stderr(覆盖)

  • 2>>:重定向 stderr(追加)

4. 同时重定向 stdout 和 stderr
  • POSIX 写法

    command >out.txt 2>&1
    
    
  • Bash 简写

    command &>out.txt
5. 丢弃输出
  • 丢弃 stdout:

    command > /dev/null
  • 丢弃 stderr:

    command 2> /dev/null
  • 同时丢弃:

    command > /dev/null 2>&1
    # 或
    command &> /dev/null

三、管道 |

  • 默认:只传递 stdout,不传递 stderr

  • 传递两者

    command 2>&1 | grep something
    # 或(Bash)
    command |& grep something

四、自定义文件描述符(进阶)

  • 打开 FD 3 并写入:

    exec 3>mylog.txt
    echo "hello" >&3
    exec 3>&-  # 关闭

五、小结速查

操作 说明
A && B A 成功才执行 B
A || B A 失败才执行 B
> file 覆盖写入 stdout
>> file 追加写入 stdout
2> file 覆盖写入 stderr
2>> file 追加写入 stderr
2>&1 将 stderr 重定向到 stdout
&> file 同时重定向 stdout 和 stderr(Bash)
> /dev/null 丢弃 stdout
2> /dev/null 丢弃 stderr
| 管道,只传递 stdout
2>&1 | 或|& (bash) 管道传递 stdout 和 stderr


网站公告

今日签到

点亮在社区的每一天
去签到