当前位置: 首页 > news >正文

关于shell命令的扩展

目录

一、逻辑运算符

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 && BA 成功才执行 B
A || BA 失败才执行 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

http://www.dtcms.com/a/357773.html

相关文章:

  • log4jshell CVE-2021-44228 复现
  • R1 快开门式压力容器操作证考试大纲解读:重点模块与考核标准
  • Linux Shell 编程
  • 淘宝商品评论接口技术实现:从评论获取到情感分析全流程方案
  • SQL知识
  • 序列容器(vector,deque,list)
  • 4x12G-SDI(四链接12G-SDI)
  • PCIe 6.0 TLP结构解析:深入理解事务层数据包的设计与实现
  • Windows Command Line Windows 命令行
  • 【RAG Agent实战】告别“单线程”RAG:用查询理解与LangGraph构建能处理复杂意图的高级代理
  • ros2--action/动作--接口
  • 2024年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 中科米堆CASAIM五金配件三维扫描测量尺寸形位公差
  • MySQL 中如果发生死锁应该如何解决?
  • OpenAI宣布正式推出Realtime API
  • ADC模数转换
  • Set和Map
  • AI的“科学革命”:Karpathy吹响号角,从“经院哲学”走向“实验科学”
  • 【.net core】【NPOI】读取表格信息(处理合并行表格数据)
  • vscode里面可以批量放弃更改
  • Linux驱动异步通知机制详解
  • Labview邪修01:贪吃蛇
  • 【完整源码+数据集+部署教程】控制台缺陷检测系统源码和数据集:改进yolo11-repvit
  • IDEA编译报错:Error:(3, 28) java: 程序包com.alibaba.fastjson不存在
  • GPFS性能优化
  • zyplayer-doc:AI 驱动的智能知识库
  • LeetCode力扣-hot100系列(2)
  • MQTT高延迟通信优化指南
  • 解密企业数据安全:服务业加密软件的核心价值
  • POE供电是什么?