基本概念

  1. 管道符 |

将前一个命令的标准输出连接到后一个命令的标准输入,适合数据流式处理。

ls -l | grep "txt"
  1. 命令替换 $()

将括号中的命令结果作为字符串返回,用于动态参数、变量赋值等。

echo "当前用户是:$(whoami)"

实际案例

案例1: 获取用户名

# 命令替换
echo "你好, $(whoami)!"

# 错误示例:管道无法传给 echo
whoami | echo "Hello"

案例2: 统计.log 文件个数

# 管道方式
ls *.log | wc -l

# 命令替换方式(文件名含空格可能出错)
wc -l $(ls *.log)

对比总结表

特性

管道

命令替换 $()

数据传递

标准输出 → 输入

字符串展开

用途

多步数据处理

嵌入字符串、变量赋值

支持嵌套

支持

支持

注意事项

后续命令需读 stdin

空格换行需加引号避免错误

结语

  • ✅ 管道适合连续处理数据;

  • ✅ 命令替换适合提取结果嵌入语句;

  • 🧠 搭配使用更能发挥 Shell 的强大威力!

生来即轻,还时亦净。