如何识别shell内建命令,别名和可执行文件在Linux系统

到底什么是Linux系统上的“内置”?让我们看看一些命令,使您能够识别内建并了解他们到底是什么 - 与其他的命令类型一起。

shell内建是被加载到存储器的壳时的命令 - 如bash,SH或zsh的 - 被调用。这样做的原因是,在内存中保存这些命令有助于确保这些命令不会非常有效,只要有人使用它们运行。他们跑得更快,因为他们没有首先被加载到内存中。他们“建”。

确定是否您使用的命令是按需要加载需要使用几个有趣的命令内建命令,别名或您的系统上的可执行文件。这些包括类型哪一个,compgen。那么,让我们来看看这些命令是如何工作的,以及他们可以告诉我们。

type命令

以确定是否命令是一个内置的一种方法是使用类型命令。如果你使用了这个命令-t选项,键入会告诉你的命令是否是一个别名,关键字,功能,内置或文件。这里有些例子:

$型-t号文件$类型-t类型内置$类型-t LL别名$键入-t内置杀

在上面的输出,我们看到date命令的形式存在于系统上的常规文件。它加载到内存中,当有人使用命令。的类型和kill命令,在另一方面,是内建。他们已经加载到内存中 - 这是kill命令。ll命令是一个别名,很可能在用户的.bashrc文件或其他一些启动文件中定义。

随着type命令的-一种选项,你会得到多一点信息 - 包括日期命令和LL的定义相关的文件的位置。

$类型-a日期日期/斌/日$型-a型类型为内置的$ type -a LL LL的别名是一个shell来`LS -alF” $键入-a杀特杀是一个shell内建杀是/斌/杀

作为一个内置的并不一定意味着命令不存在作为文件系统中的可执行文件。有些内建只建宏。他们是外壳的一部分。其他人也文件。注意,在输出命令上述被识别既作为内置和作为可执行文件。

类型命令有其它选项也可以阐明了命令。

  • -一种显示了包含可执行文件和识别内建文件的位置
  • -F抑制外壳功能查找
  • -t识别的命令为别名,关键字,功能,内置,或文件
  • -p显示器的磁盘文件名非内建
  • -P显示文件的位置

which命令

请注意,哪一个命令只会告诉你存在为系统上的可执行文件的命令。该命令没有洞察到报价上除了那些也可执行文件,然后它只是告诉你的文件建宏。它有没有告诉你内建的:

$该日期/斌/日期$哪一类$其别名$从而杀灭/斌/杀

该compgen命令

compgen命令是在内置命令提供的信息最有用的。如果您想了解该命令的,你使用的是内置命令,尝试compgen -b命令。它将提供内建的完整列表。并注意compgen本身就是一个内置。它不存在由于系统上的文件。

名字compgen是为了把那句“完成比赛”在脑海中,因为它试图提供一系列不同的请求的信息。该-b其中上内建的报告选项只是其中之一。

这里的compgen上市建宏的例子。请注意,我用了命令使显示器多了几分吸引力。

$ compgen -b |列。迪尔斯杀来源:断绝关系,让暂停[回声本地测试别名启用注销倍BG EVAL映射文件陷阱绑定高管POPD真正的突破退出的printf类型内置出口PUSHD排版呼叫者假PWD的ulimit CD FC读umask命令FG readarray unalias compgen getopts的只读未设置完整的散列返回等待compopt帮助集继续历史移位申报工作禁用了javascript

随着不同的选择,compgen命令显示许多不同类型的信息。

-一种,compgen列出您的别名:

$ compgen -a |柱
Çfgrep一样湖LS其中xzfgrep zegrep zgrep
egrep的grep的LL六xzegrep xzgrep zfgrep

别号命令也将列出你的别名,但与别名的定义以及他们的名字。

$别名的别名警报= '通知-SEND --urgency =低-i “$([$ = 0?] &&回波终端||回波错误)”,“$(历史| -n1尾| SED -e '\''S / ^ \ S * [0-9] \ + \ S * //; S / [;&|] \ S *警报$ // '\' ')“' 别名BUSY1 ='是>的/ dev / null的&”别名busy2 = 'DD如果=的/ dev / =的/ dev / null的' 别名C = '清除' 的别名的egrep = '的egrep --color =汽车的零' 别名fgrep一样= 'fgrep一样--color =自动' 别名的grep= '的grep --color =自动' 别名升= 'LS -CF' 别名LA = 'LS -A' 别名list_repos ='的grep ^ [^#]的/etc/apt/sources.list的/ etc /易/来源。list.d / * '的别名LL = 'LS -alF' 的别名LS = 'LS --color =自动' 的别名相对= 'lsb_release -a' 的别名show_dimensions =' xdpyinfo |grep的 '\' '尺寸:' \ '' '别名showmem =' 须藤的dmidecode -t 17 |。grep的 '\' '大小* MB' \ '' |AWK '\' '{S + =}' \ '' END {打印S / 1024}”别名sstats = 'SS -s'

需要注意的是一些别名可能会在您的帐户的启动文件(例如,.bashrc)中定义,而其他人可能在系统文件中定义,并适用于所有的用户帐户。

的只有一个compgen选项上内建的报告。其他人提供其他有用的,但无关的信息。下面是的compgen命令的选项列表:

  • -一种名单别名
  • -b名单shell内建
  • -C名单的命令和别名
  • -d列出目录
  • -e列表导出shell变量
  • -F清单文件和功能
  • -G列表组
  • -j列出工作
  • -k名单壳保留字
  • -s列表服务
  • -u列出用户别名
  • -v名单shell变量

以下是其他compgen命令的一些例子:

$ compgen -c |头-11 <==别名警报Ç的egrep fgrep一样的grep图11a list_repos LL LS相对$ compgen -j <==工作$〜斌/ myloop&$ compgen -g |头-11 <==组的根守护斌SYS ADM TTY盘LP邮件消息UUCP $ compgen -v |头-6 <==壳变量(太多列表)BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV

包起来

有相当标识建宏,并允许您检索阐明了在Linux上你的工作环境的有用信息的几个命令。该类型哪一个,compgen命令可能是最有用的,虽然compgen命令选项把你远远超出探索内建和可执行命令文件的任务。

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。
有关:

版权所有©2019Raybet2

IT薪资调查:结果是