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

shell管道笔记

Shell 管道与输入输出重定向

Shell 中的管道和重定向是强大的工具,用于控制命令的输入和输出流。

管道(|)

管道将一个命令的输出作为另一个命令的输入。例如,将 ls 的输出传递给 grep 进行过滤:

ls -l | grep ".txt"

管道可以串联多个命令:

cat file.txt | grep "error" | sort | uniq
输出重定向

输出重定向分为标准输出(stdout)和标准错误(stderr)。

将标准输出重定向到文件(覆盖):

ls > output.txt

将标准输出重定向到文件(追加):

ls >> output.txt

将标准错误重定向到文件:

command 2> error.log

同时将 stdout 和 stderr 重定向到文件:

command &> output.log
输入重定向

输入重定向将文件内容作为命令的输入:

grep "pattern" < input.txt
重定向与管道结合

可以将重定向与管道结合使用:

grep "error" < input.txt | sort > output.txt
特殊文件描述符

Shell 使用文件描述符管理输入输出:

  • 0:标准输入(stdin)
  • 1:标准输出(stdout)
  • 2:标准错误(stderr)

将 stderr 合并到 stdout:

command 2>&1
Here Document

Here Document 用于向命令提供多行输入:

cat <<EOF
This is line 1
This is line 2
EOF
Here String

Here String 用于向命令提供字符串作为输入:

grep "foo" <<< "foo bar baz"
管道与重定向的优先级

重定向的优先级高于管道,因此需要注意顺序:

command1 | command2 > output.txt  # 正确
command1 > output.txt | command2  # 错误
实用示例

查找特定进程并杀死:

ps aux | grep "nginx" | awk '{print $2}' | xargs kill

统计文件行数并排序:

wc -l *.txt | sort -n

将命令输出保存到变量:

files=$(ls)
注意事项
  • 管道会创建子shell,因此变量赋值可能不会影响父shell
  • 某些命令(如 cd)在子shell中执行不会影响当前shell
  • 过度使用管道可能导致性能问题,应考虑使用临时文件或优化命令

相关文章:

  • 统计C盘各种扩展名文件大小总和及数量的PowerShell脚本
  • 集成测试 maestro-我的第一个flow以及第一次云端测试
  • 【递归、搜索与回溯算法】综合练习(二)
  • 免费高清多功能录屏软件推荐
  • Bootstrap:精通级教程(VIP10万字版)
  • (24)多租户 SaaS 平台设计
  • Microsoft.Extensions.AI 技术深度解析与实践指南
  • 特伦斯 S75:重塑钢琴体验的数码钢琴之选
  • 如何选择合适的培养基过滤器
  • Java大师成长计划之第35天:未来展望与个人总结
  • EDW2025|数据治理的神话破除——从误区到现实
  • 页面表格、模型、脚本这三者之间的数据是如何传输的?尤其是模型(Model)到底是怎样的运作原理与数据流转?
  • 2505软考高项第一、二批真题终极汇总
  • 彻底解决Win11文件资源管理器预览窗格无法预览问题
  • UHF RFID无源标签的芯片供电原理
  • File—IO流
  • mysql-mysql源码本地调试
  • 基于element-UI 实现下拉框滚动翻页查询通用组件
  • 查看·电脑安装·的 .NET 版本
  • Numpy 数组操作:高效的数据处理利器
  • 十大品牌营销策划公司/福州seo技巧培训
  • 龙武工会网站怎么做/十大软件培训机构
  • 校园网站首页模板/爱站网是什么
  • 网线制作视频/seo点击工具帮你火21星热情
  • 农村小伙创业做网站/互联网推广招聘
  • 模板网站可以做推广吗/百度手机极速版