扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
直接使用输出重定向到你想要的文件即可,不过将所有的控制到信息输出到一个文本文件,只有两个办法:
创新互联建站主营东平网站建设的网络公司,主营网站建设方案,APP应用开发,东平h5小程序定制开发搭建,东平网站营销推广欢迎东平等地区企业咨询
①:修改所有程序的输出路径:printf函数 echo.....几乎是不可能完成的任务
②:修改linux的标准输出路径:
句柄 句柄的数字代号 描述
STDIN 0 键盘输入
STDOUT 1 输出到命令提示符窗口
STDERR 2 错误输出到命令提示符窗口
将标准输出 标准输出的默认设置更改为你要保存的文件,这样就会控制台的信息就会输出到你指定的文件里面
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 21 | tee output.log 或者直接 bash -x ./filename.sh 21 | tee output.log
今天调试一个bash,要把屏幕的输出结果存到log文件中,开始输入$bash -x ./test.sh log 结果发现log里只存放了程序的执行结果,后来在cu的一篇帖子里?tid=264380highlight=bash得到了启发,bash -x的调试信息是输出到2号流中的,所以解决方案为bash -x ./test.sh 21 | tee log 想起以前要存放执行make的结果时也遇到类似问题,总结如下:
1、管道符的“I”的作用只是把前一个程序的标准输出流(stdout)的数据作为后一个程序的标准输入流stdin的数据,如不进行重定向,则其他输出流的信息是无法传给后面的程序的
2、屏幕得到的信息不一定是从程序的标准输出来的,也包括标准错误输出流stderr中的信息
3、有些程序(特别是象bash、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,造成了用户的误解简单编写了一下脚本,通过ssh登陆在命令行下运行正常,可是将脚本添加到crontab中就不正常。想记录一下输出信息,分析一下错误原因。将脚本通过使用info.log 重定向输出,结果发现一些在命令行下可以看到的文本信息没有记录到info.log文件中,研究了一下,那些输出估计是输出到了标准错误上。
研究了一下通常添加命令后面几个输出含义
■ /dev/null 输出到空设备,表示丢掉输出信息。
■ 21将输出到标准错误的信息输出到标准输出设备(通常是屏幕)有3个默认的i/o,
■ 0是标准输入,一般是键盘
■ 1是标准输出,一般是屏幕
■ 2是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了
我们在上面的例子中可以看到,我们使用输出转向,命令在终端上的输出转向到了文件中,但如果我希望能同时在终端上看到输出信息怎么办?
linux中的、、、、2、2、21、、,总归要面对的
为了更好的理解这个问题,我们需要追本溯源。
执行一个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) 、21
(2) 、
(3) 、
2、 两个特殊文件
(1) 、/dev/nul
过滤标准错误信息
意思就是不想显示结果就输出到这里面。
(2) 、/dev/zero
创建指定长度的文件
案例1:
测试 and
案例2:
测试 and
测试
测试
案例3:
测试2 and 2
案例4:
测试重定向标准输出和重定向标准错误到同一个文件中
(1)、
(2)、
与上面的案例类似,不做解释
(3) 、21
案例5:
使用/dev/nul文件
有时候我们使用命令,不想将输出的信息显示到界面
这时我们可以使用 /dev/nul[常用]
简单测试修改demo 用户密码
user 创建新的用户账户
alias 设置命令的别名
bzips .bz2的文件压缩程序
cal 月历显示
cat 将所有内容输出到标准输出设备
chfn 更改finger命令显示的信息
chgrp 变更文件与目录的所属组
chmod 更换文件或目录的权限
chown 更换文件或目录的拥有者或所在组
clear 清除画面上的信息
col 滤除控制字符
cp 复制文件或目录
crontab 设置定时器
date 设置显示系统时间及日期
dd 由键盘输入文件中的数据,然后依照指定格式来转换数据,再输出至所指定的文件或屏幕上
df 显示磁盘文件系统的使用状况
dmesg 显示开机信息
du 显示目录或文件所占磁盘空间
e2fsck 检查ext2文件系统
echo 文字显示
edquota 编辑quota
egrep 查找文件中符合条件的字符串
exec shell执行命令后即交出控制权
export 设置显示环境变量
fdisk 磁盘分割(分区)
fg 前台执行程序或命令
fgrep 查找文件中符合条件的字符串
file 识别文件类型
find 查找文件或目录
finger 显示用户信息
free 查看内存状态
fsck 检查文件系统并试着修复错误
ftp 传输文件
grep 搜索文件中符合条件的字符串
groupadd 创建组
groupdel 删除组
groupmod 改变组识别码或名称
gunzip 文件解压缩
gzip 文件压缩
halt 关闭系统
help shell创建命令内容
history 列出所有使用过的命令
hostname 查询及设置主机名称
id 显示用户ID及所属的组ID
ifconfig 显示或设置网络上状态
insmod 加载模块
jobs 显示正在后台执行的工作
kill 删除执行中的程序或工作
last 列出目前与过去登录系统的用户相关信息
less 显示文件内容
lilo 安装内核加载、开机管理程序
linuxconf 设置Linux系统
ln 连接文件或目录
locate 寻找文件
login 登录系统
logout 注销系统
ls 列出目录内容
lsmod 显示已加载系统的模块名称
mail E-mail管理程序
make 编译系统核心或模块
man 在线查询命令
mcopy 复制MS-DOS文件
mdel 删除MS-DOS文件
mdeltree 删除MS-DOS文件及包含的子目录文件
mdir 显示MS-DOS目录
mkbootdisk 创建目前系统的引导盘
mkdir 创建目录
mke2fs 创建ext2文件系统
mkfs 创建各种文件系统
more 一页一页地显示文件内容(文本文件)
miunt 挂入文件系统
mouseconfig 设置鼠标相关参数
mv 移动或更名现有的文件或目录
netconfig Red Hat Linux用来设置网络功能的图形接口程序
netstat 显示目前系统的网络状态
nice 变更程序执行时的优先等级
nohup 在用户注销系统后继续以后台的方式执行指定的命令
open 查找第一个可使用的虚拟终端,并执行位于“--”符号后的命令
passwd 提供管理员及用户管理或变更密码
patch 利用修补文件来修改源文件
pine 邮件处理程序,它可收发电子邮件及浏览新闻组
ping 使用ICMP对远程主机发出要求响应的信息,以侦测远程主机的网络功能是否正常
ps 显示程序执行的状况
pwd 显示目前的工作目录
quota 查询磁盘空间限制以及使用情形
quotacheck 检查磁盘使用空间及限制
quotaoff 关闭磁盘使用空间限制
quotaon 开启磁盘使用空间限制
reboot 停止系统运作并重新开机
renice 重新调整程序执行的优先级
repquota 显示磁盘空间限制状况
rm 删除文件或目录
rmdir 删除目录
rpm 管理Red Hat Linux套件
set 设置Shell的执行方式
setup 设置公用程序,可设置的选项包括:登录认证方法、键盘配置、
鼠标配置、开机启动服务、声卡本配置、时区设置和 X Window配置等
shutdown 系统关机
startx 启动 X Window
stat 显示inode内容
su 变更用户身份
sync 将内存缓冲区内的数据写入磁盘
tail 列出文件内容最后部分
talk 和其他用户交谈
tar 文件备份
telnet 登录远程主机
top 显示及管理执行中的程序
traceroute 显示封包到远程主机间的详细路径
umask 在创建文件时预设的权限屏蔽
umount 卸载文件系统
unalias 删除别名
uname 显示系统信息
uncompress 将.Z文件解压缩
unzip 将.Zip文件解压缩
useradd 创建用户账号
userdel 删除用户账户
vi 编辑文本文件
w 显示目前登录系统的用户信息
wall 将信息传送至每位终端用户
whereis 查找文件,预设whereis去查找的文件包括:/bin、/etc、/sbin、
/usr/bin、/usr/etc、/usr/games、/usr/include、/usr/lib、
/usr/local、/usr/man、/usr/sbin、/usr/src、/usr/local/bin、
/usr/local/etc、/usr/local/game、/usr/local/lib 和/usr/local/man
which 在环境变量¥PATH 设置的目录中,搜索符合条件的文件
who 显示目前登录系统的用户信息
whoami 显示用户名称
whois 搜索并显示用户信息
write 可传送信息给另一位登录的用户
Xconfigurator 设置 Xfree86
xf86config 设置XFree86
zip 压缩程序
方法:利用tee命令可将linux终端的打印内容输出到文件
示例:ifconfig | tee ifconfig.log
运行结束后可在ifconfig.log文件中查看打印的内容
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流