电器网站建设免费咨询,上海网站架设,指定目录调用最新文章wordpress,速推网#xff08;一#xff09;内置命令 Shell 内置命令#xff0c;就是由 Bash Shell 自身提供的命令#xff0c;而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令#xff0c;因为执行外部命令不仅会导致磁盘I/O操作#xff0c;而且还需要为其fork一个…
一内置命令 Shell 内置命令就是由 Bash Shell 自身提供的命令而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令因为执行外部命令不仅会导致磁盘I/O操作而且还需要为其fork一个独立的进程。当该命令执行结束后相关进程也要终止。相对地执行内置命令就像是在当前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 等待指定的进程完成并返回退出状态码 2常见内置命令
type
可使用type来确定一个命令是否是内置命令或可执行文件 参数 说明 无参数 显示出命令名是外部指令还是 bash 内建指令 -t 会将命令名以底下这些字眼显示出他的意义file 表示为外部可执行文件 alias 表示该指令为命令别名所设定的名称 builtin 表示该指令为 bash 内建的指令功能 -p 如果后面接的可执行文件为外部指令时会显示出完整文件名 -a 会由 PATH 变量定义的路径中将所有和命令名相关的指令都列出来包含别名 alias设置别名 alisa用于给命令创建别名。好处就是可以将经常操作比较复杂的命令进行设置别名通过别名的操作提高工作效率。若该命令且不带任何参数则显示当前 Shell 进程中的所有别名列表。 语法 说明 备注 alias 别名”命令” 为命令定义一个别名比如alias llls -l --colorauto 这里使用单引号或双引号都可以 unalias 别名 删除指定的别名 临时删除当前Shell的别名, 如果想永久删除必须去配置文件中手动删除 unalias -a 删除当前Shell环境中所 临时删除当前Shell的别名, 如果想永久删除必须去配置文件中手动删除 echo输出字符串
echo用于在终端输出字符串并在最后默认加上换行符。 语法 说明 echo 字符串 换行输出默认 echo -n 字符串 不换行输出 echo -e 字符串 转义输出会对转义符特殊处理而不是当作一般文字输出
echo支持的转义符-e参数里面会特殊处理的符号 转义符 说明 \a 发出警告声 \b 删除前一个字符 \c 最后不加上换行符号用于强制清除echo的结尾换行输出 \f 换行但光标仍旧停留在原来的位置 \n 换行且光标移至行首 \r 光标移至行首但不换行 \t 插入tab \v 与\f相同 \\ 插入\字符 \nnn 插入nnn八进制所代表的ASCII字符 read读取控制台输入 read用于从标准输入中读取数据并赋值给变量。如果没有进行重定向默认就是从终端控制台读取用户输入的数据如果进行了重定向那么可以从文件中读取数据。 options表示选项var表示用来存储数据的变量可以有一个也可以有多个。options和var都是可选的如果没有提供变量名那么读取的数据将存放到环境变量 REPLY 变量中。$REPLY保存read最后一个读入命令的数据。options支持的参数如下 选项 说明 -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 的退出状态表示读取失败。 -u fd 使用文件描述符 fd 作为输入源而不是标准输入类似于重定向。 exit退出 exit用于退出当前Shell环境进程结束运行并且可以返回一个状态码。一般使用 $? 可以获取退出状态码。 语法 说明 exit 正确退出默认返回状态码0代表命令执行成功 exit 非0数 错误退出数字建议的范围0~255, 一般代表命令执行失败 exit可以结束当前Shell进程当Shell 进程执行出错退出时可以返回不同的状态值代表不同的错误。比如执行一个脚本文件里面操作一个文件时可以返回1 表示文件不存在2 表示文件没有读取权限3 表示文件类型不对。 declare设置变量 declare命令可用来声明变量并设置变量的属性也可用来显示shell函数。若不加上任何参数则会显示全部的shell变量与函数(与执行set指令的效果相同)。
设置变量的属性 选项 说明 /- “-“可用来指定变量的属性””则是取消变量所设的属性。 a array设置为普通索引数组 A Array设置为key-value关联数组 r readonly将变量设置为只读, 也可以使用readonly x exprot设置变量成为全局变量也可以使用export i int设置为整型变量。变量默认为字符串类型可更改为整型declare -i sum10030050 f function设置为一个函数变量 test测试命令
Shell中的 test 命令用于检查某个条件是否成立它可以进行数值、字符和文件三个方面的测试。
整数比较测试
options具体如下 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真
文本 ##!/bin/bash 这一行通常被称为shebang或hash-bang它在Unix-like系统的脚本文件中表示一个特殊的标记用于指定执行该脚本的解释器。 #!/bin/bash num11 num21 num32 echo num1${num1},num2${num2},num3${num3} if test $num1 -eq $num2 then echo num1和num2两个数相等 else echo num1和num2两个数不相等 fi if test $num2 -eq $num3 then echo num2和num3两个数相等 else echo num2和num3两个数不相等 效果 字符串比较测试
options具体如下 参数 说明 或 等于, 等于返回0代表成功,否则返回1代表失败 ! 不等于 \ 小于 \ 大于 -z 字符串 字符串的长度为零则为真 -n 字符串 字符串的长度不为零则为真
文本 #!/bin/bash str1hello str2world str3 echo str1${str1},str2${str2},str3${str3} if test $str1 $str2 then echo str1和str2两个字符串相等 else echo str1和str2两个字符串不相等 fi if test $str1 \ $str2 then echo str1大于str2 else echo str1小于str2 fi if test -z $str2 then echo str2字符串长度为0 else echo str2字符串长度不为0 fi if test -z $str3 then echo str3字符串长度为0 else echo str3字符串长度不为0 fi 效果 文件测试运 options具体如下 参数 说明 -e 文件名 exists, 如果文件存在则为真 -r 文件名 read,如果文件存在且可读则为真 -w 文件名 write,如果文件存在且可写则为真 -x 文件名 execute,如果文件存在且可执行则为真 -s 文件名 string,如果文件存在且至少有一个字符则为真 -d 文件名 directory,如果文件存在且为目录则为真 -f 文件名 file,如果文件存在且为普通文件则为真 -c 文件名 character,如果文件存在且为字符型特殊文件则为真 -b 文件名 如果文件存在且为块特殊文件则为真
文本 #!/bin/bash # 检查文件是否存在且可写 if test -w ./a.sh; then echo 文件已存在并且可写! else echo 文件不存在或不可写! fi # 检查两个文件是否都存在 if test -e ./a.sh -a -e ./v.sh; then echo 两个文件都存在! else echo 可能有一个或两个文件不存在 fi 演示效果