Linux命令read(文件管理)想玩转linux就请一直看
我是IT悟道,点击右上方关注,每天分享IT、科技、数码方面的干货。
Linuxread命令
Linuxread命令用于从标准输入读取数值。
read内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。语法read〔ers〕〔aaname〕〔ddelim〕〔itext〕〔nnchars〕〔Nnchars〕〔pprompt〕〔ttimeout〕〔ufd〕〔name。。。〕
参数说明:a后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。d后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。p后面跟提示信息,即在输入前打印提示信息。e在输入的时候可以使用命令补全功能。n后跟一个数字,定义输入文本的长度,很实用。r屏蔽,如果没有该选项,则作为一个转义字符,有的话就是个正常的字符了。s安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。t后面跟秒数,定义输入字符的等待时间。u后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。实例
1、简单读取!binbash这里默认会换行echo输入网站名:读取从键盘的输入readwebsiteecho你输入的网站名是websiteexit0退出
测试结果为:输入网站名:www。runoob。com你输入的网站名是www。runoob。com
2、p参数,允许在read命令行中直接指定一个提示。!binbashreadp输入网站名:websiteecho你输入的网站名是websiteexit0
测试结果为:输入网站名:www。runoob。com你输入的网站名是www。runoob。com
3、t参数指定read命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。!binbashifreadt5p输入网站名:websitethenecho你输入的网站名是websiteelseecho抱歉,你输入超时了。fiexit0
执行程序不输入,等待5秒后:输入网站名:抱歉,你输入超时了
4、除了输入时间计时,还可以使用n参数设置read命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。!binbashreadn1pDoyouwanttocontinue〔YN〕?answercaseanswerinYy)echofine,continue;;Nn)echook,goodbye;;)echoerrorchoice;;esacexit0
该例子使用了n选项,后接数值1,指示read命令只要接受到一个字符就退出。只要按下一个字符进行回答,read命令立即接受输入并将其传给变量,无需按回车键。
只接收2个输入就退出:!binbashreadn2p请随便输入两个字符:anyecho您输入的两个字符是:anyexit0
执行程序输入两个字符:请随便输入两个字符:12您输入的两个字符是:12
5、s选项能够使read命令中输入的数据不显示在命令终端上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。!binbashreadsp请输入您的密码:passecho您输入的密码是passexit0
执行程序输入密码后是不显示的:请输入您的密码:您输入的密码是runoob
6。读取文件
每次调用read命令都会读取文件中的一行文本。当文件没有可读的行时,read命令将以非零状态退出。
通过什么样的方法将文件中的数据传给read呢?使用cat命令并通过管道将结果直接传送给包含read命令的while命令。
测试文件test。txt内容如下:123456runoob
测试代码:!binbashcount1赋值语句,不加空格cattest。txtwhilereadlinecat命令的输出作为read命令的输入,read读到的值放在line中doechoLinecount:linecount〔count1〕注意中括号中的空格。doneechofinishexit0
执行结果为:Line1:123Line2:456Line3:runoobfinish
使用e参数,以下实例输入字符a后按下Tab键就会输出相关的文件名(该目录存在的):readep输入文件名:str输入文件名:aa。outa。pya。pycabc。txt输入文件名:a