Linux shell脚本IO重定向

简介: Linux shell脚本IO重定向

shell IO


shell脚本或者Linux终端上,常用的IO文件描述符有三个:


  • 0 标准输入(stdin


  • 1 标准输出 (stdout


  • 2 标准错误 (stderr)


标准输入一般为键盘,标准输出和标准错误一般都是显示器。可以在shell脚本的后面添加 >filename,将标准输出重定向到文件中。


重定向


一般情况下,shell脚本的标准输出和标准错误都是输出到显示器上的,我们可以通过IO重定向,将标准输出和标准错误重定向其他文件或设备。


IO重定向的一般形式如下:


$ echo "hello,world" > filename
  $ echo "hello,world`  1>filename
  $ echo "some errors" 2>error


  • & 是一个描述符,如果1或2前不加&,会被当成一个普通文件。


  • 1>&2 意思是把标准输出重定向到标准错误.


  • 2>&1 意思是把标准错误输出重定向到标准输出。


  • &>filename 意思是把标准输出和标准错误输出都重定向到文件filename中


示例


#!/usr/bin/env bash
    set -uxe
    echo "error" >&2 #将error输出到标准出错
    echo "succ"  >&1 #将succ输出到标准输出
    注意:2和1之前需要&,否则,其会被当作文件名,并且>前后不能有空格。


$ ./io.sh 2>stderr 1>stdin #将标准输出重定向到stdin文件,标准错误输出到stderr文件,注意,2与>,1与>之间没有空格。


$ ./io.sh 1>stdin 2>&1 #将标准错误和标准输出都重定向到stdin文件中。
$ cat stdin
error
stdin


$ ./io.sh 2>stderr 1>&2 #将标准错误和标准输出重定向到stderr文件。
$ ./io.sh &>stderr #将标准错误和标准输出重定向到stderr文件,与第一个运行方式效果相同。
注意:>前后不要有空格。
$ cat stderr
error
stdin


$ ./io.sh &>/dev/null #标准输出和标准错误重定向到/dev/null设备


相关文章
|
5月前
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
138 0
|
3天前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
5月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
204 1
Linux C/C++之IO多路复用(aio)
|
1月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
77 34
|
1月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
96 32
|
3月前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
903 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
13天前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
88 1
|
5月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
160 1
|
3月前
|
Linux API C语言
Linux基础IO
Linux基础IO操作是系统管理和开发的基本技能。通过掌握文件描述符、重定向与管道、性能分析工具、文件系统操作以及网络IO命令等内容,可以更高效地进行系统操作和脚本编写。希望本文提供的知识和示例能帮助读者更深入地理解和运用Linux IO操作。
85 14
|
4月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
121 2
6种方法打造出色的Shell脚本