shell 06(shell内置命令)

一、内置命令介绍

shell 内置命令,就是由 Bash shell 自身提供的命令,而不是文件系统中的可执行文件

使用type 来确定一个命令是否是内置命令:

type 命令

shell 06(shell内置命令)_第1张图片

 通常来说,内置命令会比外部命令执行得更快:

  • 执行外部命令时不但会触发磁盘 I/0,还需要 fork 出一个单独的进程来执行,执行完成后再退出。
  • 执行内置命令 相当于调用当前 Shell 进程的一个函数
  • 执行内置命令 是在当前Shell环境进程内,减少了上下文切换。

shell 06(shell内置命令)_第2张图片

shell 06(shell内置命令)_第3张图片

1.1 alias设置命令别名

  • alisa 用于给命令创建别名 
  • 若该命令且不带任何参数,则显示当前 Shell 进程中的所有别名列表

shell 06(shell内置命令)_第4张图片

 好处: 可以将经常操作比较复杂的命令进行设置别名,通过别名的操作提高工作效率

alias 别名="命令"

这里使用单引号或双引号都可以

删除指定的别名

unalias 别名


删除当前Shell环境中所有的别名

unalias -a

注意: 以上2种方式删除都是临时删除当前Shell的别名,如果想永久删除必须去配置文件中手动删除

举例:

alias pslist="ps -aux"  查看所有进程 

alias wn1="watch -n 1 nvidia-smi"   1s刷新一次nvidia-smi界面

1.2 echo输出字符串

  • echo 是一个 shell 内置命令,用于在终端输出字符串,并在最后默认加上换行符

默认输出换行语法

echo 字符串

输出不换行语法

echo -n  字符串

  • 用于echo输出字符串非结尾处的换行,但是默认echo无法解析/n 转义字符

echo -e "hello \nworld"  # -e 可解析转义字符

\c清除echo结尾换行 

1.3 read读取控制台输入

read 是 Shell 内置命令,用于从标准输入中读取数据并赋值给变量。

  • 如果没有进行重定向,默认就是从终端控制台读取用户输入的数据;
  • 如果进行了重定向,那么可以从文件中读取数据。

read [-options] [varl var2 ..]
  • options 表示选项,如下表所示;
  • var 表示用来存储数据的变量,可以有一个,也可以有多个
  • options 和var 都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量 REPLY 变量中
  • $REPLY保存read最后一个读入命令的数据options支持的参数

shell 06(shell内置命令)_第5张图片

shell 06(shell内置命令)_第6张图片

shell 06(shell内置命令)_第7张图片

案例:读取多个字符

#!/bin/bash 
#打印每一个变量的值
#使用read命令读取数据,要有提示信息"请输入姓名,年龄,爱好:”将数据赋值给多个变量

read -p “请输入姓名,年龄,爱好:” name age hobby

echo "姓名:${name}"
echo "年龄:${age}"
echo "爱好:${hobby}"

案例:读取一个字符

#!/bin/bash
# 使用read命令读取数据,要有提示信息 "您确定要删除数据吗?(请输入y/n):" 并且设置读取一个字符
read -n 1 -p "您确定要删除数据吗?(请输入y/n):" char

# 打印这个字符输出
printf "\n"
echo "您输入的字符: ${char}"

案例:限制时间输入

#!/bin/bash

# 使用read命令读取数据,要有提示信息"请输入密码(20秒内):" 并且设置限制时间20秒

read -t 20 -sp  "请输入密码(20秒内 ):" pwd1
echo
read -t 20 -sp "请再次输入密码(20秒内):" pwd2
echo 

# 校验密码与再次输入的密码是否一致

if [ $pwd1 == $pwd2 ]
then
         echo"密码与确认密码一致,验证通过"
else
         echo  "密码与确认密码不一致,验证失败"
 fi

s 静默模式 

1.4 exit退出

exit 用于退出当前Shell环境进程结束运行,并且可以返回一个状态码.一般使用 $? 可以获取退出状态码

正确退出

exit 

错误退出

exit 非0数字  #配合$?用于业务处理

1.5 declare设置变量

  • declare命令用于声明 shell 变量。
  • 可用来声明变量并设置变量的属性,也可用来显示shell函数。
  • 若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。

1.declare设置变量的属性[重要]

shell 06(shell内置命令)_第8张图片

declare -i age=20  #设置整形变量

declare +i age #取消限制

declare -r age #只读变量

2.查看全部Shell变量与函数

declare  查看全部Shell变量与函数

declare -f 查询所有函数的定义
declcare -F 查询所有函数的名称列表


3.实现关联数组变量

 关联数组也称为“键值对 (key-value)”数组,键(key) 也即字符形式的数组下标,值(value) 也即元素值

declare -A 关联数组变量名=([字符串key1]=值1 [字符串key2]=值2 ...)
  • declare也可以用于定义普通索引数组,-a 参数创建普通或索引数组 -A 创建关联数组
  • declare -a 关联数组变量名=(值1 值2 ...)
  • declare -a 关联数组变量名=([0]=值1 [1]=值2 ...)

获取key值:

${关联数组变量名[key]}

${关联数组变量名[*]}

${关联数组变量名[@]}

1.6 test

shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试功能与[]一样

1.6.1 整数比较

if test 数字1 options 数字2
then
...
fi

shell 06(shell内置命令)_第9张图片

 

1.6.2 字符串比较

shell 06(shell内置命令)_第10张图片

 

test "a" == "b"; echo $?
test "a" \> "b"; echo $?

1.6.3 文件比较

shell 06(shell内置命令)_第11张图片

 

test -e /home/w/pty.txt; echo $?
test -r /home/w/pty.txt; echo $?

你可能感兴趣的:(linux,运维,服务器)