bash参考手册之四(shell内建命令)续四

来源:互联网 发布:80端口为什么要备案 编辑:程序博客网 时间:2024/05/16 07:55

4.2 Bash的内建命令 续

printf

printf [-v var] format [arguments]

按照format的控制,把格式化的arguments输出到标准输出。 -v选项使输出内容赋值给变量var,而不是打印到标准输出。
format是一个字符串,其中包含三种类型的对象:普通字符,它们被简单地复制到标准输出;字符转义序列,它们被转换并复制到标准输出;格式规范,每一个格式规范控制打印后续的argument。除了标准的printf(1)格式,printf解释下列扩展:

%b

使printf扩展对应argument中的反斜杠转义序列,(除了‘\c’终止输出,在'\'','\"'和‘\;’中的反斜杠不会被删除,以'\0'开头的8进制序列可包含4位数字。)

%q

使printf输出对应argument的格式,能够作为shell的输入。

%(datefmt)T

使printf输出的日期时间字符串,是使用strftime(3)命令和参数datefmt的结果。对应的argument是一个整数,代表从公元纪元以来的秒数。有两个特殊的参数值:-1表示当前时间,-2代表shell被调用的时间。

没有对应格式说明符的argument被视为C语言常量,除非允许开头有加号或减号,如果开头字符是一个单引号或双引号,该argument的值是后续字符的ASCII值。
必要时,重复使用format以处理所有的argument。如果该format需要的argument数量多于给定的argument时,额外的格式规范的行为是如同处理一个零值或空字符串(如适用)。
成功返回0,非零表示失败。

 

read

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]

从标准输入中读取一行,或从-u选项的参数文件描述符fd读入一行,第一个单词被赋值到第一个name,第二个单词被赋值到第二个name,以此类推。多余的单词和中间的分隔符都赋值给最后一个name。如果从输入流读取的单词比name的数量少,则其余的name是空值。IFS变量值中的字符用于分割单词。反斜杠字符“\”可用于去除下一个字符的特殊含义和续行。如果没有提供name,读入的行被赋值到变量REPLY。返回码是零,除非遇到文件结束EOF,read超时(在这种情况下,返回的代码大于128),或参数-u后面的文件描述符无效。
选项的含义如下:

-a aname

把单词赋值给数组变量aname,索引从0开始。aname中的所有元素在赋值之前被删除。其他name参数被忽略。

-d delim

delim的第一个字符,取代换行符,被用来终止输入行。

-e

使用Readline(见命令行编辑)获取行。Readline使用当前(或者默认情况下,如果行编辑没有提前激活)编辑设置。

-i text

如果使用Readline读入行,在编辑开始前,先把text放到编辑缓冲区。

-n nchars

read在读取nchars个字符后返回,而不用等到一整行完全输入。但是如果遇到分隔符时字符数小于nchars,则优先处理分隔符。

-N nchars

read在读取恰巧nchars个字符后返回,而不用等到一整行完全输入,除非遇到EOF或者read超时。遇到分隔符,也不做特殊处理,直到字符数达到nchars,才返回。

-p prompt

在读取输入前,显示prompt,且不带后续换行符。仅当输入来自终端时,才显示prompt。

-r

如果给定这个选项,反斜杠不作为转义符处理。反斜杠被当做行的内容。特别是,反斜杠-换行符组合不再当做续行。

-s

安静模式。如果输入来自于终端,字符不回显。

-t timeout

如果一行的输入没有在timeout秒内读入,则read超时或者返回失败。timeout可以是一个带小数的十进制数字。仅在read从终端、管道、或者其他特殊文件读取输入时,这个选项才有效。从普通文件读入时,该选项无效。如果timeout是0,则如果特殊文件描述符的输入可用时,read返回成功,其他情况则失败。如果发生超时,则退出状态大于128。

-u fd

从文件描述符fd读取输入。

 

readarray

readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [

-C callback] [-c quantum] [array]

从标准输入读取行到索引变量array,或者,如果有-u选项则从文件描述符fd读取。


source

source filename

和.同义。(见Bourne Shell内建命令)

 

type

type [-afptP] [name …]

对于每一个name,指出如果该name当做命令名使用时,如何被系统解释。
如果使用-t选项,当name是别名、shell函数、shell内建命令、磁盘文件、或者shell保留字时,type打印这些单词中的一个——‘alias’, ‘function’, ‘builtin’, ‘file’ ‘keyword’。如果找不到name,则不打印,且type返回一个失败状态。
如果使用-p选项,type或者返回被执行的磁盘文件名,或者,当-t不能返回‘file’时,返回结果为空。
-P选项,则强制在路径中搜索name,即使-t不能返回‘file’。
如果一个命令被哈希了,-p和-P打印哈希值,该文件不一定首次出现在$PATH中。
如果使用-a选项,type返回所有包含名为file的可执行文件的位置。当且仅当不同时使用-p选项时,结果中包括别名和函数。
如果使用-f选项,type不会试图查找shell函数,就像command内建命令。
如果所有的name都被找到,则返回状态是0,任何一个找不到都返回非零值。

  

typeset

typeset [-afFrxi] [-p] [name[=value] …]

typeset命令是为了兼容Korn shell而提供的,然而,因为declare内建命令的出现,它已经被废弃了。

 

ulimit

ulimit [-abcdefilmnpqrstuvxHST] [limit]

ulimit用于对于由shell启动的线程的可用资源的控制,仅在允许这种控制的系统上可用。命令选项含义如下:

-S

修改和报告某个资源的软限制。

-H

修改和报告某个资源的硬限制。

-a

报告所有当前的限制。

-b

socket的最大缓冲尺寸。

-c

可以创建的核心文件的最大尺寸。

-d

一个线程的数据段的最大尺寸。

-e

最大规划优先级(“nice”)。

-f

shell和其子shell写文件的最大尺寸。

-i

待处理信号的最大数目。

-l

可以被锁定的内存的最大尺寸。

-m

最大驻留集合的尺寸(很多系统不遵循此限制)。

-n

打开文件描述符的最大数目(很多系统不允许设置这个值)。

-p

管道缓冲区大小。

-q

POSIX消息队列的最大字节数。

-r

最大实时规划优先级。

-s

最大堆栈尺寸。

-t

最大cpu时间,单位是秒。

-u

单一用户可用的最大进程数目。

-v

shell可用的最大虚拟内存,在某些系统上,也包括该shell的子shell。

-x

文件锁的最大个数。

-T

线程的最大个数。

如果给定limit,则它是指定资源的新值;特殊limit值hard,soft和unlimited表示当前的硬限制,当前软限制,和无限制。硬限制的值一旦被设置,就不能被非root用户增加;软限制可以增加到硬限制的值。否则,指定资源的软限制的当前值被打印出来,除非提供-H选项。当设置新的限制时,如果既没有-H,也没有-S选项,则同时设置硬限制和软限制。如果没有给出选项,那么-f是缺省选项。值是以1024字节为单位增加,除了-t选项,该选项的单位是秒,而-p是以512字节块为单位,还有-n和-u,是不能改变的。

返回状态是0,除非有无效选项或者参数,或者设定限制时发生错误。

  

unalias

unalias [-a] [name … ]

从别名列表中删除每一个name。如果有-a选项,所有别名被删除。别名请参看别名中的描述。




原创粉丝点击