重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
您想问的是linux中的shell脚本中输出文本内容到文件的命令是什么吗?shell变量调出命令。
创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设公司、程序开发、网站优化、微网站、小程序制作等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站建设、成都做网站、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
linux中的shell脚本有多种命令格式,其中输出文本内容到文件的命令包括但不限于shell文本命令调出、shell变量取值等。
Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于Linux桌面1991年10月5日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。
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是标准错误,有时候屏幕上可以看到,但是重定向的文件中看不到的就是它了
可以使用echo命令将文本流导向标准输出,然后再使用符号重新定向标准输出到文件。
用法示例:
将字符串"hello world"写入文件file.txt中
$ echo "hello world" file.txt
然后再尝试用cat命令从读取文件并写入到标准输出,可以看到字符串已经成功写入文件。
$ cat file.txt
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 压缩程序
Linux下常用文本处理命令大全
Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。下面就让我们一起看看这些经典的Linux文本处理命令有哪些吧。
一. sort
文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页.
二. tsort
拓扑排序, 读取以空格分隔的有序对, 并且依靠输入模式进行排序.
三. uniq
这个过滤器将会删除一个已排序文件中的重复行. 这个命令经常出现在sort命令的管道后边.
四. expand, unexpand
expand命令将会把每个tab转化为一个空格. 这个命令经常用在管道中.
unexpand命令将会把每个空格转化为一个tab. 效果与expand命令相反.
五. cut
一个从文件中提取特定域的工具. 这个命令与awk中使用的print $N命令很相似, 但是更受限. 在脚本中使用cut命令会比使用awk命令来得容易一些. 最重要的选项就是-d(字段定界符)和-f(域分隔符)选项.
六. paste
将多个文件, 以每个文件一列的形式合并到一个文件中, 合并后文件中的每一列就是原来的一个文件. 与cut结合使用, 经常用于创建系统log文件.
七. join
这个命令与paste命令属于同类命令. 但是它能够完成某些特殊的目地. 这个强力工具能够以一种特殊的形式来合并两个文件, 这种特殊的形式本质上就是一个关联数据库的简单版本.
join命令只能够操作两个文件. 它可以将那些具有特定标记域(通常是一个数字标签)的行合并起来, 并且将结果输出到stdout. 被加入的文件应该事先根据标记域进行排序以便于能够正确的匹配.
八. head
把文件的头部内容打印到stdout上(默认为10行, 可以自己修改). 这个命令有一些比较有趣的选项.
九. tail
将一个文件结尾部分的内容输出到stdout中(默认为10行). 通常用来跟踪一个系统logfile的.修改情况, 如果使用-f选项的话, 这个命令将会继续显示添加到文件中的行.
十. wc
wc可以统计文件或I/O流中的”单词数量”:
十一. fold
将输入按照指定宽度进行折行. 这里有一个非常有用的选项-s, 这个选项可以使用空格进行断行(译者: 事实上只有外文才需要使用空格断行, 中文是不需要的)(请参考例子 12-23和例子 A-1).
十二. fmt
一个简单的文件格式器, 通常用在管道中, 将一个比较长的文本行输出进行”折行”.
十三. col
这个命令用来滤除标准输入的反向换行符号. 这个工具还可以将空白用等价的tab来替换. col工具最主要的应用还是从特定的文本处理工具中过滤输出, 比如groff和tbl. (译者: 主要用来将man页转化为文本.)
十四. column
列格式化工具. 通过在合适的位置插入tab, 这个过滤工具会将列类型的文本转化为”易于打印”的表格式进行输出.
十五. colrm
列删除过滤器. 这个工具将会从文件中删除指定的列(列中的字符串)并且写到文件中, 如果指定的列不存在, 那么就回到stdout. colrm 2 4 filename将会删除filename文件中每行的第2到第4列之间的所有字符. p="" /filename将会删除filename文件中每行的第2到第4列之间的所有字符.
Caution: 如果这个文件包含tab和不可打印字符, 那将会引起不可预期的行为. 在这种情况下, 应该通过管道的手段使用expand和unexpand来预处理colrm.
十六. nl
计算行号过滤器. nl filename将会把filename文件的所有内容都输出到stdout上, 但是会在每个非空行的前面加上连续的行号. 如果没有filename参数, 那么就操作stdin.
nl命令的输出与cat -n非常相似, 然而, 默认情况下nl不会列出空行.
十七. pr
格式化打印过滤器. 这个命令会将文件(或stdout)分页, 将它们分成合适的小块以便于硬拷贝打印或者在屏幕上浏览. 使用这个命令的不同的参数可以完成好多任务, 比如对行和列的操作, 加入行, 设置页边, 计算行号, 添加页眉, 合并文件等等. pr命令集合了许多命令的功能, 比如nl, paste, fold, column, 和expand.
pr -o 5 –width=65 fileZZZ | more 这个命令对fileZZZ进行了比较好的分页, 并且打印到屏幕上. 文件的缩进被设置为5, 总宽度设置为65.
一个非常有用的选项-d, 强制隔行打印(与sed -G效果相同).
十八. gettext
GNU gettext包是专门用来将程序的输出翻译或者本地化为不同国家语言的工具集. 在最开始的时候仅仅支持C语言, 现在已经支持了相当数量的其它程序语言和脚本语言.
想要查看gettext程序如何在shell脚本中使用. 请参考info页.
十九. msgfmt
一个产生二进制消息目录的程序. 这个命令主要用来本地化.
二十. iconv
一个可以将文件转化为不同编码格式(字符集)的工具. 这个命令主要用来本地化.
二十一. recode
可以认为这个命令是上边iconv命令的专业版本. 这个非常灵活的并可以把整个文件都转换为不同编码格式的工具并不是Linux标准安装的一部分.
二十二. TeX, gs
TeX和Postscript都是文本标记语言, 用来对打印和格式化的视频显示进行预拷贝.
TeX是Donald Knuth精心制作的排版系统. 通常情况下, 通过编写脚本的手段来把所有的选项和参数封装起来一起传到标记语言中是一件很方便的事情.