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

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
  • 过度使用管道可能导致性能问题,应考虑使用临时文件或优化命令
http://www.xdnf.cn/news/10149.html

相关文章:

  • Oralce RAC DRM详解
  • 【征求意见】四川省大数据发展研究会关于对《数据资源建设费用测算标准》团体标准征求意见的通知
  • Python_day40
  • Python常见的面试题
  • vueflow
  • 【仿生机器人】需求案例
  • EWM108-GN06B系列BDS单北斗卫星定位模块产品简介
  • [IMX] 10.串行外围设备接口 - SPI
  • win32相关(创建线程)
  • 多线程(3)
  • MySQL中怎么看是否走了索引
  • 数据库中求最小函数依赖集-最后附解题过程
  • EMQX服务
  • DALI DT6与DALI DT8介绍
  • PlankAssembly 笔记 DeepWiki 正交视图三维重建
  • redis缓存与数据库协调读写机制设计
  • JAVA 集合进阶 泛型类、泛型方法、泛型接口
  • 【算法训练营Day03】链表part1
  • 随笔笔记记录5.28
  • 说一说SAP系统从Non-Unicode到Unicode的演化
  • 674SJBH校园外卖订餐系统V3
  • OpenLayers 图形绘制
  • 卫星地图 App 的实测体验深度解析
  • DeepSeek 赋能工业互联网:设备预测性维护的智能革新之路
  • 突破铁芯CT局限:罗氏线圈的“无磁饱和”技术深度解读
  • 身份证信息OCR识别提取
  • NIO知识点
  • ORM 框架的优缺点分析
  • QSS 的选择器
  • 端午时节,粽香四溢