作者:手机用户2602889575 | 来源:互联网 | 2023-08-24 18:49
linux命令输出到屏幕的同时保存到文件tee用于把命令结果打印在屏幕上并同时保存到文件。tee用法描述:从标准输入中读取并同时写入到标准输出和指定的文件上选项:-a,--a
linux命令输出到屏幕的同时保存到文件
tee用于把命令结果打印在屏幕上并同时保存到文件。 tee用法 描述:从标准输入中读取并同时写入到标准输出和指定的文件上 选项: -a,--append:不覆盖,而是追加输出到指定的文件中 -i,--ignore-interrupts:忽略中断信息 若指定的输出文件为'-',则再次输出到标准输出上 实例: tee Example.txt #将标准输入中输入的内容同时输出到Example.txt和标准输出上 实践: 例如 ifconfig | tee ifconfig.log 查看iconfig.log 注: 标准输入一般有键盘和其它文件,标准输出有屏幕等。
tee只能进行标准输入的输出,对于错误输入是不能输出的。
在调试脚本时,想要每个命令的执行过程都输出到屏幕或者文件中,以便后续查看,如何操作呢?首先脚本第一行要写为“#!/bin/bash -x”,这样会把每个命令的执行记录都输出到屏幕,若还要输出到指定文件,要用到tee,但tee只能进行标准输入,对于标准输入和错误输入要用到下式: ./filename.sh 2>&1 | tee output.log 或者直接 bash -x ./filename.sh 2>&1 | tee output.log 今天调试一个bash,要把屏幕的输出结果存到log文件中,开始输入$bash -x ./test.sh > log 结果发现log里只存放了程序的执行结果,后来在cu的一篇帖子里http://bbs.chinaunix.net/viewthread.php?tid=264380&highlight=bash得到了启发,bash -x的调试信息是输出到2号流中的,所以解决方案为bash -x ./test.sh 2>&1 | tee log 想起以前要存放执行make的结果时也遇到类似问题,总结如下: 1、管道符的“I”的作用只是把前一个程序的标准输出流(stdout)的数据作为后一个程序的标准输入流stdin的数据,如不进行重定向,则其他输出流的信息是无法传给后面的程序的 2、屏幕得到的信息不一定是从程序的标准输出来的,也包括标准错误输出流stderr中的信息 3、有些程序(特别是象bash、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,造成了用户的误解简单编写了一下脚本,通过ssh登陆在命令行下运行正常,可是将脚本添加到crontab中就不正常。想记录一下输出信息,分析一下错误原因。将脚本通过使用>info.log 重定向输出,结果发现一些在命令行下可以看到的文本信息没有记录到info.log文件中,研究了一下,那些输出估计是输出到了标准错误上。 研究了一下通常添加命令后面几个输出含义 ■ >/dev/null 输出到空设备,表示丢掉输出信息。
linux下,如何将控制台输出的所有内容全部输出到一个文本文件?
直接使用输出重定向到你想要的文件即可,不过将所有的控制到信息输出到一个文本文件,只有两个办法:①:修改所有程序的输出路径:printf函数 echo.....几乎是不可能完成的任务②:修改linux的标准输出路径:句柄 句柄的数字代号 描述STDIN 0 键盘输入STDOUT 1 输出到命令提示符窗口STDERR 2 错误输出到命令提示符窗口将标准输出 标准输出的默认设置更改为你要保存的文件,这样就会控制台的信息就会输出到你指定的文件里面
Linux标准输入输出与重定向详解|果断收藏
linux中的>、>>、<、<<、2>、2>>、2>&1、&>、&<,总归要面对的 为了更好的理解这个问题,我们需要追本溯源。 执行一个shell命令行时通常会自动打开三个标准文件 (1) 、标准输入文件(stdin) 通常对应终端的键盘。
(2)、标准输出文件(stdout)。
(3)、标准错误输出文件(stderr)。 (2)和(3)这两个文件都对应终端的屏幕。 进程将从标准输入文件中得到输入数据。 将正常输出数据输出到标准输出文件[显示器]。
将错误信息送到标准错误文件中[显示器]。 下图所示: 0、1、2表示一个文件描述符 但是,有时候我们不想把一些进程处理后信息输出到显示器。 这时我们就引出了重定向。
改变标准输入/输出的方向 三种重定向: 1、重定向标准输出,包括两种。 (1)、>(覆盖),等价1> 将命令执行的结果输出到指定文件,非显示器。 (2) 、>>(追加),等价1>> 将命令执行的结果追加到指定文件,非显示器。
2、 重定向标准输入,包括两种。 (1) 、<将命令中接收的输入途径,由键盘改为指定文件。 (2) 、<<[Here Document] 命令序列传递到一个交互程序或者命令中。
3、 重定向标准错误,包括两种。 (1) 、2>(覆盖) 将命令执行的结果输出到指定文件。 (2) 、2>>(追加) 将命令执行的结果追加到指定文件。 1、重定向标准输出和重定向标准错误到同一个文件中 有以下的几种方式 (1) 、2>&1 (2) 、>& (3) 、&> 2、 两个特殊文件 (1) 、/dev/nul 过滤标准错误信息 意思就是不想显示结果就输出到这里面。
linux输出重定向到文件命令
输出即把相关对象通过输出设备(显示器等)显示出来,输出又分正确输出和错误输出一般情况下标准输出设备为显示器,标准输入设备为键盘。linux中用0代表标准输入,1代表标准正确输出,2代表标准错误输出。
输出重定向:正常输出是把内容输出到显示器上,而输出重定向是把内容输出到文件中例如:ifconfig > test.log 即把ifconfig执行显示的内容写入test.log.当前页面不再显示执行结果。
注意:错误输出重定向>/>>后边没有空格命令 >> 文件 2>&1 和 命令 &>>文件 两个命令作用相同系统有个常见用法 ls &>/dev/null 正确输出或错误输出结果都不要。(null可以理解为黑洞或垃圾站)命令>>文件1 2>>文件2 正确日志和错误日志分开保存
例:nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &将jar执行的结果写入到lb-agent.log中在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。如:command &。这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。
所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 & 《Linux就该这么学》学习更多linux知识。
linux怎么在代码里将每次的操作结果写入到文件中?
用 > 把输出转向就可以了例子:[lhd@hongdi ~]$ ls > ls.txt[lhd@hongdi ~]$ cat ls.txt1.gtkrc-2.02009aamsn_receiveda.tar.gz说明: > 是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留>> 是把输出附向到文件的后面,文件原内容会保留下来。更多更详细的Linux知识可参考《Linux就该这么学》。
linux中printf后的内容怎么保存到文件中
可以运用Linux输出重定向>和>>来将输出的数据保存到文件,直接在命令后加>xxx。输出重定向的用法:标准输出的控制语法:命令>文件将命令的执行结果送至指定的文件中。
例如:ls-l>list将执行“ls-l”命令的结果写入文件list中。
语法:命令>!文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。例如:ls-lg>!list将执行“ls-lg”命令的结果覆盖写入文件list中。语法:命令>&文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。例如:ccfile1.c>&error将编译file1.c文件时所产生的任何信息写入文件error中。
语法:命令》文件将命令执行的结果附加到指定的文件中。例如:ls-lag>>list将执行“ls-lag”命令的结果附加到文件list中。语法:命令》&文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
例如:ccfile2.c>>&error将编译file2.c文件时屏幕所产生的任何信息附加到文件error中。