From 3d5f7de56fbe33fbd9ed555143f5476a40a3e505 Mon Sep 17 00:00:00 2001 From: ZhuangZhu-74 <49544524+ZhuangZhu-74@users.noreply.github.com> Date: Thu, 22 Aug 2019 16:16:08 +0800 Subject: [PATCH] Update builtin.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充注意事项,修正格式。 可能随着enable的格式调整继续调整内容。 之前更新的文档有不符合当前格式的会逐步修改。 --- command/builtin.md | 64 ++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/command/builtin.md b/command/builtin.md index 0c3e648c6dd..2162aaf3c15 100644 --- a/command/builtin.md +++ b/command/builtin.md @@ -3,62 +3,54 @@ builtin 执行bash内建命令。 -## 补充说明 - -**builtin命令** 用于执行指定的bash内建命令,并返回内部命令的返回值。builtin命令在使用时,Linux中同名的外部命令及同名的shell函数失效。 - -### 语法 +## 概要 ```shell -builtin(bash内建命令)(参数) +builtin [shell-builtin [arg ...]] ``` -### 参数 +## 主要用途 + +- 用于执行指定的bash内建命令。 +- `builtin`命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 + +## 参数 -bash内建命令:指定需要执行的bash内建命令。 +shell-builtin(可选):要调用的bash内建命令。 -(可选)参数:传递给bash内建命令的参数。 +arg(可选):传递给bash内建命令的一到多个参数。 -### 提示 +## 返回值 -**同名情况下的优先级顺序** +返回该内建命令执行的返回值,除非传递的不是bash内建命令或该内建命令被禁用。 + +## 例子 + +同名情况下的优先级顺序: builtin 内建命令 > 函数 > 内建命令 > 外部命令 ```shell -#!/bin/bash -#此时内建命令优先使用 +# 关于外部命令优先级最高的情况请参考enable命令。 +# 此时内建命令优先使用 echo "the Great Wall" -#调用内建命令type,显示命令的类型 +# 调用内建命令type,返回命令的类型(builtin) type -t echo -#定义 echo 函数 +# 定义 echo 函数 echo(){ printf "123\n" } -#此时同名函数优先使用 +# 此时同名函数优先使用,显示(123) echo +# 调用内建命令type,返回命令的类型(function) type -t echo -#此时内建命令优先使用 +# 此时内建命令优先使用 builtin echo -e "backslash \\" ``` ```shell -#输出结果 -the Great Wall -builtin -123 -function -backslash \ -``` - -内建命令的帮助信息请参考 'help' 命令 - -### 实例 - -使用builtin命令执行bash内建命令alias: - -```shell -builtin alias # 执行shell内部指令 +# 执行shell内部指令,输出当前系统下的命令别名 +builtin alias alias cp='cp -i' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' @@ -68,7 +60,11 @@ alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' ``` -上面的命令执行后,将输出当前系统下的命令别名。 +### 注意 + +1. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。 + +2. 如果要调用的内建命令被禁用了(包括`builtin`),那么执行会报错;关于禁用和启用内建命令请参考`enable`命令。