Shell编程基础教程3--Shell输入与输出
3.Shell输入与输出
3.1.echo
echo命令可以显示文本行或变量,或者把字符串输出到文件
echo [option] string
-e:解析转义字符
-n:回车不换行,linux系统默认回车换行
转义字符:\c,\f,\t,\n……
例子程序
#!/bin/bash
#echo
echo -e "This echo's 3 new lines\n\n\n"
echo "OK"
echo
echo "This echo's 3 new lines \n\n\n"
echo "This log files have all been done">mylogfile.txt
3.2.read
read语句可以从键盘或文件的某一行文本中读入信息,并将其赋值给一个变量
read varible1 varible2...
如果只指定了一个变量,那么read将会把所有的输入赋值给该变量,直至遇到第一个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符
例子程序
#!/bin/bash
#read
echo -n "First Name:"
read firstname
echo -n "Sub Name and Last Name:"
read subname lastname
echo -e "Your First Name is: ${firstname}\n"
echo -e "Your Sub Name is: ${subname}\n"
echo -e "Your Last Name is: ${lastname}\n"
3.3.cat
cat是一个简单而通用的命令,可以用它来显示文件内容、创建文件,还可以用它来显示控制字符
cat [options] filename1 ... filename2 ...
-v:显示控制字符
使用cat命令式要注意,它不会在文件分页符处2停下来;它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或者把cat命令的输出通过管道传递到另外一个具有分页功能的命令(more、less)中
3.4.管道 |
可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示
格式:命令1 | 命令2
例子: ls -l | grep "myfile"
3.5.tee
tee命令把输出的一个副本送到标准输出,另一个副本拷贝到相应的文件中
tee -a files
如果希望在看到这个输出的同时,也将其存入一个文件,那么这个命令再适合不过了
一般用于管道之后。例子:ls | tee -a ls.txt 既将ls的命令结果输出到标准输出,又输出到ls.txt文件中
3.6.标准输入、输出和错误
在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时给出了相应的文件名
输入文件--标准输入:0(缺省是键盘,也可以是文件或其他命令的输出)
输出文件--标准输出:1(缺省是屏幕,也可以是文件)
错误输出文件--标准错误:2(缺省是屏幕,也可以是文件)
系统中实际上有12个文件描述符,可以任意使用文件描述符3~9
3.7.文件重定向
改变程序运行的输入来源和输出地点
command > filename:把标准输出重定向到一个新文件中
command >> filename:把标准输出重定向到一个文件中(追加)
command 1> filename:把标准输出重定向到一个文件中
command > filename 2>&1:把标准输出和标准错误一起重定向到一个文件中
command 2> filename:把标准错误重定向到一个文件中
command 2>> filename:把标准错误重定向到一个文件中(追加)
command >> filename 2>&1:把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename1 > filename2:command命令以filename1文件作为标准输入,以filename2作为标准输出
command < filename:command命令以filename文件作为标准输入
command << delimiter:从标准输入中读入,直至遇到delimiter分解符
command <&m:把文件描述符m作为标准输入
command >&m:把标准输出重定向到文件描述符m中
command <&-:关闭标准输入
例子:
cat file } sort > sort.out 将file的字符串(按每行)排序,并将排序结果输出到sort.out文件中
>nullfile 创建一个空文件nullfile
sort < name.txt > name.out 将name.txt的内容作为输入,排好序后,将结果输出到name.out
cat file1 file2 1> file.txt 2> file.err 将cat file1 file2命令的标准输出结果输出到file.txt,将该命令的标准错误的输出结果输出到file.err,分开输出(测试时,file1存在,file2不存在)
3.8.合并标准输出和标准错误
合并标准输出和标准错误的时候,切记shel是从左至右分析相应的命令的
例子:grep "example" example.txt > grep.out 2>&1 在example.txt里面查找"example"字符串的内容,标准输出输出到grep.out文件,并将标准错误也输出到grep.out文件
3.9.exec
exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一命令时任何现有环境都将被清除,并重启一个shell
exec command:其中的command通常是一个shell脚本
对文件描述符进行操作的时候(也只有在这个时候),它不会覆盖你当前的shell
Shell编程基础教程3--Shell输入与输出的更多相关文章
- Shell编程基础教程2--变量和运算符
2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...
- 【shell编程基础1】shell变量篇
Bash shell bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell. 预备知识 1. "#!" ...
- Shell编程基础教程5--文本过滤、正则表达式、相关命令
5.文本过滤.正则表达式.相关命令 5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令) 简介: 一种用来描述文本模式的特殊语法 ...
- Shell编程基础教程4--控制流结构
4.控制流结构 4.1.控制结构 4.2.if then else语句 格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...
- Shell编程基础教程1--Shell简介
1.Shell简介 1.1.查看你系统shell信息 cat /etc/shell 命令可以获取Linux系统里面有多少种shell程序 echo $SHELL 命令可以查看当前你所使用的shell是 ...
- Shell编程基础教程6--shell函数
6.shell函数 6.1.定义函数 简介: shell允许将一组命令集或语句形成一个可用块,这些块成为shell函数 定义函数的格式 ...
- Shell编程基础教程7--脚本参数的传递
7.脚本参数的传递 7.1.shift命令 简介: shift n 每次将参数位置向左偏移n位 例子 #!/bin/bash us ...
- 【shell编程基础2】shell组合应用之一:重定向和逻辑
这篇主要讲下 数据的重定向,在shell脚本中有些重要的输出重定向为文件的形式输出来 逻辑方式的多个命令组合,可以很方便的进行一些判断 数据流重定向 数据流重定向:大致上的意思就是本该输出到屏幕上的数 ...
- 【shell编程基础3】shell编程的组合应用之二:管道及其命令
预备知识: 管道:它是一个单向的,可以把前一个的数据输出导向到下一个命令的工具,这样可以实现多个命令组合处理一套数据. 它的符号是 "|" 管道只能处理经过前面一个命令传过 ...
随机推荐
- Internet与www的关系
Internet是把分布于世界各地不同结构的计算机网络用各种传输介质相互连接起来的网络. 因此,被称为网络的网络.Internet提供的主要服务有万维网(WWW.)文件传输(FTP.)电子邮件(E-m ...
- linux下的/dev/shm目录
linux下的/dev/shm目录 linux中/dev目录下一般都是一些设备文件,例如磁盘.内存.摄像头等. /dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都 ...
- 获取shell脚本自身所在目录的Shell脚本分享
前几天写的七牛的参赛demo,用bash写了一个便捷安装的脚本,涉及到了路径相关的判断,从stackoverflow,加上自己的实践整理一下. 简单版 下面是一个最简单的实现,可以解决大多数问题,缺陷 ...
- git rebase简介(基本篇)
原文: http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin& ...
- linux上进程状态查询
linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有 ...
- Myeclipse8.5 反编译插件 jad 安装
准备工作 下载jad.exe文件和下载jadeclipse插件:http://pan.baidu.com/s/1pJKjVwn JadClipse 官网:http://jadclipse.source ...
- 如何使用参数 appActivity+appPackage 和 app
本文针对RobotFrameWork中AppiumLibrary测试库. 首先,Open Application 这个方法不能向手机中安装应用,需要提前在手机中安装好,如使用 adb install ...
- Javascript 面向对象
面向对象语言的标识:类的概念. ECMAScript中没有类的概念,因此他的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象.函数.我们可 ...
- Qt 程序运行图标
Qt5 添加程序图标在pro直接添加一句: RC_ICONS+=resource\appicons\app.ico resource程序代码目录下文件夹. Qt4方式 1.在工程文件夹新建一个res目 ...
- pt-query-digest使用介绍【转】
本文来自:http://isadba.com/?p=651 一.pt-query-digest参数介绍. pt-query-digest --user=anemometer --password=an ...