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

时间: 2024-08-07 08:18:54

Shell编程基础教程3--Shell输入与输出的相关文章

Shell编程基础教程5--文本过滤、正则表达式、相关命令

5.文本过滤.正则表达式.相关命令    5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令)        简介:            一种用来描述文本模式的特殊语法            由普通字符(例如字符a到z)以及特殊字符(成为元字符,如/.*.?等)组成            匹配的字符串            文本过滤工具在某种情况下都支持正则表达式        基本元字符集及其含义            ^    只匹配行首,例子 ^a 表示匹配以a开头的

Shell编程基础教程4--控制流结构

4.控制流结构    4.1.控制结构            4.2.if then else语句        格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 elif 条件2 //如果条件1不成立,而条件成立 then 命令2 //那么,执行命令2 ……更多的elif then组合…… else 命令2 //如果条件1.2……都不成立,那么执行命令3 fi //完成,if语句必须以单词fi终止 最简可以是形式: if 条件 then 命令 fi 等价于 if

Shell编程基础教程6--shell函数

6.shell函数    6.1.定义函数        简介:            shell允许将一组命令集或语句形成一个可用块,这些块成为shell函数        定义函数的格式            方法一                函数名()                {                    命令1                    ......                }            方法二                funct

Shell编程基础教程7--脚本参数的传递

7.脚本参数的传递    7.1.shift命令        简介:            shift n        每次将参数位置向左偏移n位        例子 #!/bin/bash usage() { echo "usage:`basename $0` filenames" } totalline=0 #下面的语句中 $# 表示参数的个数 if [ $# -lt 2 ] then usage fi while [ $# -ne 0 ] do line=`cat $1 |

第十天:shell编程基础与编写Makefile

一:shell编程基础 shell定义:shell是一个作为用户与linux系统间接口的程序.它允许用户向操作系统输入需要执行的命令.shell有很多中,linux系统中shell为bash. shell编程可以看作是一堆命令的集合.和windows中的bat程序类似的脚本程序.为解释性语言. 第一个shell程序是判断两个数字的大小. 1 #!/bin/bash 2 3 num1=10 4 num2=9 5 6 if test $num1 -gt $num2 7 then 8 echo $nu

Linux学习之二十一-shell编程基础

Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务.Shell 脚本(shell script),是一种为 shell 编写的脚本程序 Shell 编程跟 java.php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了 Linux中的shell种类(shell解释器的种类

shell编程基础一(多种方法求值1+2+..+100)

#SHELL编程基础一(多种方法求值1+2+..+100)##为什么要学好shell shell脚本语言是实现linux系统管理及自动化运维所必备的重要工具,linux系统的底层及基础应用软件的核心大都涉及shell脚本的内容. 每一个合格的linux系统管理员或运维工程师,都需要能够熟练地编写shell脚本语言,并能够阅读系统及各类软件附带的shell脚本内容. 只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的工作,从而为个人的职场发展奠定较好的基础.# 本文的宗旨是熟

周期性任务计划,包管理,sed以及shell编程基础

周期性任务计划,包管理,sed以及shell编程基础 1.每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"[[email protected] /]# crontab -e0 /12 /usr/bin/tar -zcf /data/backup/etc-$(date '+%Y-%m-%d--%H-%M').tar.gz /ect/*2.rpm包管理功能总结以及实例应用演示rpm是一个功能十分强大的软件包管理系统,

(转)Windows驱动编程基础教程

版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括各种格式的文档)复制和转载本书.同时不限制利用此书赢利的行为(如收费注册下载,或者出售光盘或打印版本).不满足此前提的任何转载. 复制.赢利行为则是侵犯版权的行为. 发现本书的错漏之处,请联系作者.请不要修改本文中任何内容,不经过作者的同意发布修改后的版本. 作者信息 作者网名楚狂人.真名谭文.在上海从事W