一、内置命令

所谓 Shell 内置命令,就是由 Bash 自身提供的命令,而不是文件系统中的某个可执行文件。

例如,用于进入或者切换目录的 cd 命令,虽然我们一直在使用它,但如果不加以注意很难意识到它与普通命令的性质是不一样的:该命令并不是某个外部文件,只要在 Shell 中你就一定可以运行这个命令。

可以使用 type 来确定一个命令是否是内建命令:

[root@localhost ~]# type cd
cd is a Shell builtin
[root@localhost ~]# type ifconfig
ifconfig is /sbin/ifconfig

由此可见,cd 是一个 Shell 内建命令,而 ifconfig 是一个外部文件,它的位置是/sbin/ifconfig

还记得系统变量 PATH吗?PATH吗?PATH吗?PATH 变量包含的目录中几乎聚集了系统中绝大多数的可执行命令,它们都是外部命令。

通常来说,内建命令会比外部命令执行得更快,执行外部命令时不但会触发磁盘 I/O,还需要 fork 出一个单独的进程来执行,执行完成后再退出。而执行内建命令相当于调用当前 Shell 进程的一个函数。

二、alisa命令

alisa 用来给命令创建一个别名。若直接输入该命令且不带任何参数,则列出当前 Shell 进程中使用了哪些别名。现在你应该能理解类似ll这样的命令为什么与ls -l的效果是一样的吧。

三、echo命令

echo 是一个 Shell 内建命令,用来在终端输出字符串,并在最后默认加上换行符。

echo 命令输出结束后默认会换行,如果不希望换行,可以加上-n参数

默认情况下,echo 不会解析以反斜杠\开头的转义字符。比如,\n表示换行,echo 默认会将它作为普通字符对待,我们可以添加-e参数来让 echo 命令解析转义字符

有了-e参数,我们也可以使用转义字符\c来强制 echo 命令不换行了

四、read命令

read 是 Shell 内置命令,用来从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从键盘读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。

read 命令的用法为:

read [-options] [variables]

options表示选项,如下表所示;variables表示用来存储数据的变量,可以有一个,也可以有多个。

optionsvariables都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量 REPLY 中。

选项 说明
-a array 把读取的数据赋值给数组 array,从下标 0 开始。
-d delimiter 用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)。
-e 在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。
-n num 读取 num 个字符,而不是整行字符。
-p prompt 显示提示信息,提示内容为 prompt。
-r 原样读取(Raw mode),不把反斜杠字符解释为转义字符。
-s 静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。
-t seconds 设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出

五、exit命令

exit 是一个 Shell 内置命令,用来退出当前 Shell 进程,并返回一个退出状态;使用$?可以接收这个退出状态;

exit 命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值是 0。

一般情况下,退出状态为 0 表示成功,退出状态为非 0 表示执行失败(出错)了。

exit 退出状态只能是一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。

Shell 进程执行出错时,可以根据退出状态来判断具体出现了什么错误,比如打开一个文件时,我们可以指定 1 表示文件不存在,2 表示文件没有读取权限,3 表示文件类型不对。

六、下表列出了 Bash Shell 中直接可用的内建命令

命令 说明
: 扩展参数列表,执行重定向操作
. 读取并执行指定文件中的命令(在当前 shell 环境中)
alias 为指定命令定义一个别名
bg 将作业以后台模式运行
bind 将键盘序列绑定到一个 readline 函数或宏
break 退出 for、while、select 或 until 循环
builtin 执行指定的 shell 内建命令
caller 返回活动子函数调用的上下文
cd 将当前目录切换为指定的目录
command 执行指定的命令,无需进行通常的 shell 查找
compgen 为指定单词生成可能的补全匹配
complete 显示指定的单词是如何补全的
compopt 修改指定单词的补全选项
continue 继续执行 for、while、select 或 until 循环的下一次迭代
declare 声明一个变量或变量类型。
dirs 显示当前存储目录的列表
disown 从进程作业表中刪除指定的作业
echo 将指定字符串输出到 STDOUT
enable 启用或禁用指定的内建shell命令
eval 将指定的参数拼接成一个命令,然后执行该命令
exec 用指定命令替换 shell 进程
exit 强制 shell 以指定的退出状态码退出
export 设置子 shell 进程可用的变量
fc 从历史记录中选择命令列表
fg 将作业以前台模式运行
getopts 分析指定的位置参数
hash 查找并记住指定命令的全路径名
help 显示帮助文件
history 显示命令历史记录
jobs 列出活动作业
kill 向指定的进程 ID(PID) 发送一个系统信号
let 计算一个数学表达式中的每个参数
local 在函数中创建一个作用域受限的变量
logout 退出登录 shell
mapfile 从 STDIN 读取数据行,并将其加入索引数组
popd 从目录栈中删除记录
printf 使用格式化字符串显示文本
pushd 向目录栈添加一个目录
pwd 显示当前工作目录的路径名
read 从 STDIN 读取一行数据并将其赋给一个变量
readarray 从 STDIN 读取数据行并将其放入索引数组
readonly 从 STDIN 读取一行数据并将其赋给一个不可修改的变量
return 强制函数以某个值退出,这个值可以被调用脚本提取
set 设置并显示环境变量的值和 shell 属性
shift 将位置参数依次向下降一个位置
shopt 打开/关闭控制 shell 可选行为的变量值
source 读取并执行指定文件中的命令(在当前 shell 环境中)
suspend 暂停 Shell 的执行,直到收到一个 SIGCONT 信号
test 基于指定条件返回退出状态码 0 或 1
times 显示累计的用户和系统时间
trap 如果收到了指定的系统信号,执行指定的命令
type 显示指定的单词如果作为命令将会如何被解释
typeset 声明一个变量或变量类型。
ulimit 为系统用户设置指定的资源的上限
umask 为新建的文件和目录设置默认权限
unalias 刪除指定的别名
unset 刪除指定的环境变量或 shell 属性
wait 等待指定的进程完成,并返回退出状态码

Shell脚本——内置命令相关推荐

  1. fooview辅助功能 shell_列出所有Bash Shell内置命令的方法示例

    前言 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. 内置命令包含在 bash shell 本身里面 ...

  2. Shell 的内置(builtin)命令

    最近在总结 Shell 编程的相关概念时碰到一个以前没有很重视的概念,就是 Shell 的 "内置(builtin)" 命令的概念,概念上总有点模模糊糊的,上网搜了搜,搞得差不多清 ...

  3. linux sh 帮助,技术|获取有关 Linux shell 内置命令的帮助

    Linux 内置命令属于用户 shell 的一部分,本文将告诉你如何识别它们并获取使用它们的帮助. Linux 内置命令是内置于 shell 中的命令,很像内置于墙中的书架.与标准 Linux 命令存 ...

  4. linux-help命令,查询shell内置命令帮助文档

    命令:help 描述:help + 命令(shell内置命令).可以查看shell内置命令的帮助文档. 范例:help if

  5. shell脚本和常用命令

    什么是脚本? 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看.编辑). 常见的脚本: JavaScript(JS,前端),VBScript, AS ...

  6. 14.Linux rpm,brew软件安装包命令,zsh和bash,内置命令和外部命令,ps命令,top命令解析,swp,为什么cpu利用率很低,负载却很高?

    解释一下rpm, opt,opt-get, brew,brewhome rpm,apt,apt-get,brew,和homebrew都是与软件包管理有关的术语.它们分别用于不同的操作系统. rpm是一 ...

  7. 使用Bash编写Linux Shell脚本-7.复合命令

    转载自:http://blog.csdn.net/fox_lht/archive/2010/09/20/5897336.aspx 7.   复合命令 除了最简单的脚本,你很少想要执行每一个命令.执行一 ...

  8. 查看命令为内置命令还是外部命令

    查看命令为内置命令还是外部命令---type        有木有 ? 有的用户在用一般用户身份执行ifconfig eth0  会出现"-bash: ifconfig :command n ...

  9. Linux查看内置命令和非内置命令帮助的几种方法(man、help、info)

    内置命令就是shell内核自带的,因为shell当中自己要进行管理,那么就需要一些命令进行管理,不同的shell肯定有不同的shell命令,我们用type命令就可以看到其的类型,内置shell命令其实 ...

最新文章

  1. [转]PHP用mysql数据库存储session
  2. Ubuntu18.04安装VMware WorkStation
  3. 如何测试OData的filter功能
  4. SAPSQL_IN_ITAB_ILLEGAL_OPTION dump
  5. NVM:切换node版本后无法使用npm全局包
  6. jsp % % ! 区别
  7. Java反编译工具-luyten
  8. 3.4 智能手表整体结构设计总结
  9. 刘潇翔:基于OpenHarmony的仿生四足狗开发分享
  10. 打jar包和使用jar包
  11. android用bmob实现评论,Bmob在Android上的应用
  12. HTTP引流工具Gor快速入门
  13. matlab memory 代数环,代数环概念 - MATLAB Simulink - MathWorks 中国
  14. 2190 悼念512汶川大地震遇难同胞——重建希望小学
  15. Mockito单元测试-answer
  16. [Shader] Shader Cookbook 理解光照模型[3]
  17. 加费/除外/延期承保是什么意思?有什么区别?被拒保该怎么办?
  18. onLoad与onShow的区别
  19. 常用的计算机杀毒软件图标,杀毒软件都有哪些,它们的图标是什么样子的?
  20. 等保测评结论分为几个级别?多少分为合格?

热门文章

  1. qt下实现文件的拖拽打开
  2. C语言 fclose 函数 - C语言零基础入门教程
  3. 手把手教你用java完成文件、图片下载
  4. continue详细讲解
  5. BugkuCTF-PWN题canary超详细讲解
  6. .rdlc 文件设置方向_在Word里面怎么设置把字竖着打出来?
  7. linux不显示无线网卡驱动安装失败,Linux_Ubuntu无线网卡驱动安装方法,安装了Ubuntu后发现没有无线网 - phpStudy...
  8. cstring移除指定字符串_从String中移除空白字符的多种方式!?差别竟然这么大!...
  9. 大专计算机应用技术答辩,计算机应用技术专业硕士答辩.ppt
  10. mysql修改客户端编码命令_mysql命令行修改字符编码