广告
返回顶部
首页 > 资讯 > 操作系统 >linux输入输出重定向使用的方法
  • 508
分享到

linux输入输出重定向使用的方法

2024-04-02 19:04:59 508人浏览 安东尼
摘要

这篇文章主要介绍“linux输入输出重定向使用的方法”,在日常操作中,相信很多人在linux输入输出重定向使用的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux输

这篇文章主要介绍“linux输入输出重定向使用的方法”,在日常操作中,相信很多人在linux输入输出重定向使用的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux输入输出重定向使用的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 输出重定向:

默认条件下,标准输出和错误输出都是终端,可以把标准输出和错误内容进行重定向:

复制代码 代码如下:

[~]# echo "hello\!"
hello\!
[~]# echo "hello!"
-bash: !": event not found "

把标准输出重定向到文件

复制代码 代码如下:

[~]# echo "hello" > test.sh
[~]# cat test.sh
hello
'>'输出方式默认等价'1>'
[~]#  echo "hello" 1> test.sh
[~]# cat test.sh
hello

但是错误内容还是会显示在屏幕上:

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh > temp.sh
cat: /root/test.sh: permission denied

可以把错误内容也输出到文件中(利用文件描述符):

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh 1> temp.sh 2> error.sh
[~]$cat temp.sh
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/
[~]$cat error.sh
cat: /root/test.sh: permission denied

把标准输出和错误信息写入同一个文件:

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh > temp.sh 2>&1
[~]$cat temp.sh
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/
cat: /root/test.sh: permission denied

这个看起来比较麻烦,实际应用中可能用的最多的是:

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh &>temp.sh
[~]$cat temp.sh
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/
cat: /root/test.sh: permission denied
&>把所有输出都写入同一个文件

如果不想输出到文件,也不想在屏幕上显示,可以利用/dev/null这一特殊设备文件(bit bucket)
[~]$cat edit.sql /root/test.sh &>/dev/null
如果把标准输出写入到文件,就没法利用管道符号'|'把内容传给接下来的命令,可以利用tee命令解决这个问题:

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh | tee temp.sh | cat -n
cat: /root/test.sh: permission denied
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
             dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
             dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
               dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/


tee命令相当于把stdout副本写入文件,再把stdout传给下一个命令,但是错误内容是无法用tee传递的,如同使用>>追加内容,tee可以使用-a选项追加:

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh | tee -a temp.sh | cat -n
cat: /root/test.sh: permission denied
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
             dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
            dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
               dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/
[~]$cat temp.sh
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/

2.输入重定向

输入重定向,在一些场合,例如数据库监控中用的比较多,常见的是使用内联重定向

复制代码 代码如下:

[~]$cat < edit.sql
select           dbms_rowid.rowid_object('aaazdqaagaaatxjaak') data_object_id#,
dbms_rowid.rowid_relative_fno('aaazdqaagaaatxjaak') rfile#,
dbms_rowid.rowid_block_number('aaazdqaagaaatxjaak') block#,
dbms_rowid.rowid_row_number('aaazdqaagaaatxjaak') row# from dual
/

例如,如下操作,把 <<eof > temp.sh到最后eof之间的内容当作stdin,然后把stdout写入文件temp.sh

复制代码 代码如下:

[~]$cat <<eof > temp.s
this is my log
eof
[~]$cat temp.sh
this is my log

3.自定义文件描述符:

自定义文件描述符的原理是使用基本的三种文件打开模式
只读(<)
截断(>)
追加(>>)
创建一个文件描述符3,用于打开文件
[~]# exec 3< test.sh
下面就可以直接使用文件描述符打开文件了,但是只能使用一次:

复制代码 代码如下:

[~]# cat <&3
hello
hello

创建文件描述符4,用于写入文件(可以复用):

复制代码 代码如下:

[~]# exec 4>test.sh
[~]# echo okok >&4
[~]# cat test.sh
okok

这个实际类似前面的:

复制代码 代码如下:

[~]$cat edit.sql /root/test.sh > temp.sh 2>&1

创建文件描述符5,用于向文件追加内容(也可以复用,不像输入文件描述符那样只能使用1次):

复制代码 代码如下:

[~]# exec 5>>test.sh
[~]# echo okokok >&5
[~]# cat test.sh    
okokok
[~]# echo okokok >&5
[~]# cat test.sh   
okokok
okokok

到此,关于“linux输入输出重定向使用的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: linux输入输出重定向使用的方法

本文链接: https://www.lsjlt.com/news/95767.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux输入输出重定向使用的方法
    这篇文章主要介绍“linux输入输出重定向使用的方法”,在日常操作中,相信很多人在linux输入输出重定向使用的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux输...
    99+
    2022-10-19
  • Linux中如何输入输出重定向
    这期内容当中小编将会给大家带来有关Linux中如何输入输出重定向,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;输出重定向:指的是重新指定设备来代替...
    99+
    2023-06-28
  • Linux输入输出重定向详细使用说明
    1、linux标准输入输出 Linux标准输入、输出设备主要是键盘和显示器,详细介绍如下表所示。 Linux标准输入输出 设备 设备文件名 ...
    99+
    2022-06-04
    Linux输入输出重定向 Linux输入重定向 Linux输出重定向
  • linux shell数据重定向(输入重定向与输出重定向)详细分析
    在了解重定向之前,我们先来看看linux 的文件描述符。 linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作...
    99+
    2022-06-04
    重定向 数据 详细
  • linux输出重定向的方法是什么
    Linux中的输出重定向有以下几种方式:1. 使用符号">"将命令的标准输出重定向到文件中,如果文件不存在...
    99+
    2023-08-19
    linux
  • Shell如何输入或输出重定向
    这篇文章主要为大家分析了Shell如何输入或输出重定向的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Shell如何输入或输出重定向”的知识吧。大多数UNIX...
    99+
    2023-06-28
  • linux重定向输出日志的方法是什么
    在Linux中,重定向输出日志有以下几种方法:1. 使用">"符号将命令的输出重定向到文件中,例如:`command > file....
    99+
    2023-08-18
    linux
  • linux怎么输入重定向符
    在Linux中,输入重定向符用 ""。 例如,如果想要将命令的输出写入到output.txt文件中,可以使用以下命令: comman...
    99+
    2023-10-24
    linux
  • python重定向输出的方法是什么
    在Python中,可以使用重定向符号 ">" 将输出重定向到文件或其他输出流。具体来说,可以通过以下两种方...
    99+
    2023-05-13
    python重定向 python
  • linux输出重定向的作用有哪些
    Linux中的输出重定向(Output Redirection)是一种将程序的输出重定向到文件或其他设备的方式。它的作用包括: ...
    99+
    2023-10-24
    linux
  • Python重定向标准输入、标准输出和标
    UNIX用户已经对标准输入、标准输出和标准错误的概念熟悉了。这一节是为其它不熟悉的人准备的。 标准输出和标准错误(通常缩写为 stdout 和 stderr)是建立在每个UNIX系统内的管道(pipe)。当你 print 某东西时,结果...
    99+
    2023-01-31
    标准 重定向 Python
  • Linux重定向技巧:PHP如何实现LeetCode编程中的输入输出?
    在LeetCode编程中,输入输出是非常重要的一部分。在很多题目中,需要从标准输入中读取数据,然后进行计算并输出结果。在本篇文章中,我们将会介绍如何使用Linux重定向技巧,在PHP中实现LeetCode编程中的输入输出。 什么是Linu...
    99+
    2023-09-02
    linux leetcode 重定向
  • linux console输出重定向到串口ttyS0
    在linux系统中使用virsh创建和管理虚拟机时,除了使用ssh 连接虚拟机,还可以使用 virsh console 虚机名 的方式连接虚拟机,不过需要在虚机镜像中开启将console重定向到串口的设置。 修改 /etc/default/...
    99+
    2023-09-13
    linux 运维 服务器
  • Linux中crontab输出重定向不生效问题的解决方法
    问题 在linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。 cron的配置文件称为“cronta...
    99+
    2022-06-04
    crontab怎么重定向 linux crontab用法 crontab重定向
  • shell输出重定向的实现
    1.输入输出重定向介绍 重定向简单来说就是把本来已经默认的、确定的输入输出给重新定位到你想要的地方。 重定向这个概念在C语言中就有,在C语言编程中,标准输出是屏幕,使用printf()函数默认是输出到屏幕显示。但是有时候...
    99+
    2023-01-12
    shell输出重定向 shell重定向
  • linux错误输出重定向指的是什么
    这篇文章主要介绍“linux错误输出重定向指的是什么”,在日常操作中,相信很多人在linux错误输出重定向指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux错误输出重定向指的是什么”的疑惑有所...
    99+
    2023-06-30
  • linux串口输出重定向ssh怎么配置
    要将Linux串口输出重定向到SSH会话,需要进行以下配置: 连接到Linux设备的SSH会话中。 执行以下命令,将串口输出重定向...
    99+
    2023-10-24
    linux ssh
  • C语言进阶输入输出重定向与fopen函数使用示例详解
    目录正片开始输入输出重定向fopen函数正片开始 大多数情况下,我们所熟知的输入输出都是标准I/O(标准输入输出),也就是我们在写代码时会直接从键盘读取,从屏幕输出。但是当我们涉及到...
    99+
    2022-11-13
  • Python的print输出重定向举例分析
    本篇内容介绍了“Python的print输出重定向举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python中调试程序使用最多的是p...
    99+
    2023-06-02
  • 详解python的几种标准输出重定向方式
    一. 背景 在Python中,文件对象sys.stdin、sys.stdout和sys.stderr分别对应解释器的标准输入、标准输出和标准出错流。在程序启动时,这些对象的初值由sys.__stdin__...
    99+
    2022-06-04
    几种 详解 重定向
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作