shell 命令之bind,enable,ulimit

1、bind

在shell中,内建(builtin)命令bind,格式如下:

    bind [-m keymap] [-lpsvPSVX]
    bind [-m keymap] [-q function] [-u function] [-r keyseq]
    bind [-m keymap] -f filename
    bind [-m keymap] -x keyseq:shell-command
    bind [-m keymap] keyseq:function-name
    bind readline-command


bind命令用于显示当前“readline”中键和function的绑定,绑定键序列与function或宏,设置“readline”变量。每个非选项参数都是一个命令,好像来自特殊文件“.inputrc”一样。所有的绑定和命令都必须作为一个单独的参数,例如’”\C-x\C-r”: re-read-init-file’。

bind命令中各选项的作用:

“-m keymap”:用参数keymap作为后续绑定的键映射,参数可以是emacs、emacs-standard、emacs-meta、emacs-ctlx、vi、vi-move、vi-command、vi-insert,其中vi和vi-command相同,emacs和emacs-standard相同。
“-l”:列出所有的“readline”的function名称。
“-p”:以可以作为重新输入的格式显示“readline”的function名称和绑定。
“-P”:列出当前“readline”的function名称和绑定。
“-s”:以可以作为重新输入的格式显示“readline”绑定到宏的键序列和输出的字符串。
“-S”:显示“readline”绑定到宏的键序列和输出的字符串。
“-v”:以可以作为重新输入的格式显示“readline”变量名和值。
“-V”:显示当前“readline”变量名和值。
“-f filename”:从文件filename中读取键绑定。
“-q function”:查询与function绑定的键。
“-u function”:解除所有与function绑定的键。
“-r keyseq”:删除当前所有的与键序列keyseq的绑定。
“-x keyseq:shell-command”:每次获取键序列keyseq时都执行shell命令shell-command。执行shell命令时,变量READLINE_LINE保存“readline”缓冲的内容,变量READLINE_POINT保存当前插入点的位置,如果这两个变量被修改,新的变量值会在编辑状态中出现。
“-X”:以可以作为重新输入的格式显示所有的绑定到shell命令的键序列。
例如,对于shell命令uname,把它绑定到按键“u”上。

$ bind -x '"u": uname'

 

当在shell终端按下“u”键时就会直接执行uname命令。

 

 

2、enable

在shell中,内建(builtin)命令enable,格式如下:

    enable [-a] [-dnps] [-f filename] [name ...]

enable命令用于启用或禁用shell内建命令。在执行shell命令时,先查找是否属于内建命令,然后才在环境变量PATH中查找,如果使用enable禁用了这个命令,那么PATH中的同名命令就会执行。选项“-n”用于禁用命令,不使用时则启用命令。在支持动态加载的系统上,选项“-f”设置从动态库filename中加载新的内建命令,“-d”则用来删除加载的这些命令。如果不指定命令name或者只是使用了选项“-p”时,则输出当前启用的内建命令。选项“-a”显示所有的内建命令,包括启用的和禁止的命令。选项“-s”仅输出POSIX内建命令。

先来看一下特殊的POSIX内建命令:
      

提示:POSIX特殊命令是什么?由于历史原因,POSIX标准把几个内建命令归类为特殊命令。当Bash在POSIX模式下运行时,这些特殊的内建命令与普通的内建命令有几点不同:特殊命令先于shell函数被搜索,特殊命令返回false时如果是非交互运行的shell就会退出,命令前面的赋值语句在命令结束后仍对shell环境有效。

禁用内建命令exit:

 



3、ulimit

在shell中,内建(builtin)命令ulimit,格式如下:

    ulimit [-HSTabcdefilmnpqrstuvx [limit]]


如果系统支持,ulimit命令能够控制shell中的有效资源。选项“-H”、“-S”分别指硬限制、软限制,硬限制设置好之后不能由非root用户来增加其值,软限制则可能增加到硬限制的值,这两个选项都不指定时会同时设置它们的值。参数limit可以为数字,也可以是三个特殊的字符串,hard、soft和unlimited,不设置limit时显示当前软限制值,此时除非设置了“-H”才显示硬限制值。

下面是ulimit命令其它选项的含义。

  “-a”:显示当前所有的限制。
  “-b”:套接字socket缓冲的最大长度。
  “-c”:可创建的core文件的最大个数。
  “-d”:一个进程的数据段的最大长度。
  “-e”:调度优先级即nice的最大值。
  “-f”:shell及其子进程写文件时的最大长度。
  “-i”:等待的信号的最大个数。
  “-l”:锁在内存中最大长度。
  “-m”:常驻内存的最大值(许多系统不支持这个限制)。
  “-n”:打开的文件描述符的最大个数(许多系统禁止设置这个限制)。
  “-p”:块block大小为512字节的管道长度。
  “-q”:POSIX消息队列的最大字节数。
  “-r”:实时调度的最大优先级。
  “-s”:堆栈stack的最大长度。
  “-t”:累计CPU时间(秒)的最大值。
  “-u”:单个用户可以拥有的进程的最大个数。
  “-v”:shell可用的虚拟内存的最大值。
  “-x”:文件锁的最大个数。
  “-T”:最大线程数。

ulimit命令中,如果设置了参数limit,且没有使用选项“-a”,指定的资源便会设置为这个新的limit值。如果不使用任何选项的话,默认使用“-f”。选项“-t”增值的单位为秒,“-p”增值的单位为块block即512字节,“-T”、“-b”、“-N”、“-u”则没有这种特殊的增长幅度,剩余其它选项的增值单位为1024各字节。

系统默认的ulimit值:
    

原文参考来自: https://blog.csdn.net/iEearth/article/details/52641058

posted on 2018-10-29 17:31  kingle-l  阅读(1068)  评论(0编辑  收藏  举报

levels of contents