Shell:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)介绍

UNIX系统shell使用

1.文件描述符0与进程的标准输入(一般是键盘)相关联;

2.文件描述符1与标准输出(一般是显示器)相关联;

3.文件描述符2与标准出错输出(一般是显示器)相关联

1、输出

输出到 标准错误 stderr

echo "errormsg" > &2

输出到 标准输出 stdout

echo "infomsg" > &1

2、/dev/null

可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到

1>/dev/null 2>&1

> 代表重定向到哪里,例如:echo "123" > /home/123.txt 
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 
2 表示stderr标准错误 
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1 

命令标准输出标准错误
>/dev/null    2>&1丢弃丢弃
2>&1   >/dev/null丢弃屏幕
1>/dev/null丢弃屏幕
2>/dev/null屏幕丢弃


 

参考文档

shell中标准输出,标准输入,标准错误输出详解 - 逐风浪子 - 博客园

shell 中 标准输出和错误输出 - 三木燕 - 博客园

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Python中,你可以使用内置的`subprocess`模块来运行shell命令,并处理命令的输入输出。`subprocess`提供了一种强大且灵活的方式来执行系统命令,包括获取命令的输出stdout)和错误输出stderr)。 以下是一个简单的例子,展示了如何执行shell命令并接收其输入输出: ```python import subprocess # 命令及其输入(可选) command = 'echo "Hello from shell!"' input_data = 'Your input here' # 只适用于支持输入的命令,如bash的read -p # 创建子进程 process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) # 如果有输入数据,写入子进程 if input_data: process.stdin.write(input_data.encode()) # 对字符串进行编码,因为子进程需要字节流 process.stdin.flush() # 确保数据被立即发送 # 获取输出错误信息 stdout, stderr = process.communicate() # 输出是bytes类型,可能需要解码为str output_str = stdout.decode('utf-8') error_str = stderr.decode('utf-8') if stderr else '' print(f"Output: {output_str}") print(f"Error: {error_str}") ``` 在这个例子中,`communicate()`方法会阻塞直到命令完成,返回的是一个包含命令标准输出标准错误的元组。如果需要交互式地获取命令的输入,可以使用`stdin.write()`方法。 相关问题: 1. `subprocess.Popen`创建了一个什么对象? 2. `stdout=PIPE`和`stdin=PIPE`参数的作用是什么? 3. 如何处理`communicate()`方法返回的输出错误

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值