shell常用的几个语句,你get到了吗

shell (计算机壳层)
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

一。shell环境及特性

1.shell定义:在Linux内核与用户之间的解释器程序
通常指/bin/bash
负责向内核翻译及传达用户/程序命令
相当于操作系统的“外壳”

2.shell的使用方式:
交互式------命令行
人工干预,智能化程度高
逐条解释程序,效率低
非交互式------脚本
需要提前设计,智能化难度大
批量设计,效率高
方便在后台静悄悄地运行

3.常见的shell程序种类
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

cat /etc/shells 显示系统所有解释器
切换shell环境
通过usermod,chsh更改登录shell
手动执行目标shell程序
4.bash基本特性
快捷键,TAB补齐
命令历史
命令别名
标准输入输出
重定向
管道操作

二。历史命令

1.存放记录1000条
保存位置:~/.bash_history
控制历史命令的数量:/etc/profile

2.操作历史命令
查看历史命令列表:history
清空历史命令:history-c
执行最近一次以sys开头的历史命令:!sys
执行历史记录中的第78条命令:!78

三。I/O设备与重定向

< 将文本输入来源由键盘改为指定的文件

将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上

与>类似,但操作是追加而不是覆盖
2> 将命令行的执行出错信息保存到文件,而不是直接显示在屏幕上
2>> 与2>类似,但操作是追加而不是覆盖
&> 相当于>和2>,覆盖大到同一个文件

四。变量的设置和取消

1.变量定义:以固定名称存放,可能会变化的值
提高脚本对任务需求,运行环境变化的适应能力
方便在脚本中的重复利用

2.定义/赋值变量
变量名=变量值
注意:
等号两边不要有空格
变量名仅由字母/数字/下划线组成,区分大小写
变量名不能以数字开头,不要使用关键字和特殊字符
若指定的变量名已存在,相当于为此变量重新赋值

3.查看变量:
引用变量值:$变量名
查看变量值:echo $变量名 , echo ${变量名}

4.取消变量:
退出定义变量的shell环境时,变量会自动失效
手动取消:unset 变量名

五。变量的种类

1.shell变量的分类角度
存储类型
整数型,浮点型,双精度型,字符型
shell脚本语言对存储类型要求较松散
使用类型
环境变量 变量名通常大写,由系统维护,同来设置工作环境,只有个别变量用户可以直接修改
位置变量 bash内置,存储执行脚本时提供的参数
预定义变量 bash内置,一类有特殊用途的变量,可直接调用,但不能直接赋值或修改
自定义变量 由用户自主设置,修改及使用

2.环境变量
配置文件
/etc/profile ~/.bash_profile
相关操作
env:列出所有的环境变量
set:列出所有变量
常见的环境变量
PWD当前位置
USER当前用户名
HOSTNAME主机名
SHELL当前用户的解释器
HOME当前用户的家目录
UID当前用户的UID号
PATH系统命令所在地
PS1一级提示符
PS2二级提示符

3.预定义变量
用来保存脚本程序的执行信息
直接使用这些变量,不能直接为这些变量赋值
$0 当前所在的进程或脚本名
$$ 当前运行进程的PID号
$? 命令执行后的返回状态,0表示正常,其他值表示异常
$# 已加载的位置变量的个数
$* 所有位置变量的值

4.位置变量
在执行脚本时提供的命令行参数
表示为$n,n为序列号
$1, 2...... 2...... 2......{10},${11}…

六。变量值及范围控制

1.扩展赋值操作
区分三种定界符
单引号:用来界定范围,可以屏蔽特殊符号的作用
双引号:用来界定范围
反撇号:取命令执行的结果(也可用“$()”)

2.read标准输入取值
read从键盘读入变量值完成赋值
格式: read -p “提示信息” 变量名
-p可选,-t可指定超时妙数

终端显示控制
stty -echo:关闭终端输出(不显示)
stty echo:恢复终端输出(显示)

3.变量的作用范围
局部变量:新定义的变量默认只在当前shell环境有效,无法在子shell环境中使用
全局变量:在当前shell及子shell环境中均有效
为局部变量添加全局属性:export 局部变量[=变量值]
取消指定变量的全局属性:export -n 全局变量

七。简单脚本

1.编写shell规范
声明解释器 #!/bin/bash
脚本功能注释, #此脚本的作用、使用场所、作者等
脚本内容,要执行的指令

2.脚本的执行方式:
添加x权限
使用bash之类的解释器读取脚本文件,比如bash test1 或者sh test1,新开启子进程(解释器)
使用source命令读取脚本文件,比如source test1
source可以省略为 . 不开启子进程(解释器)

八。if选择语句

1.单分支结构
if 条件测试;then
命令序列
fi

2.双分支结构
if 条件测试;then
命令序列
else
命令序列2
fi

3.多分支结构
if 条件测试;then
命令序列
elif 条件测试;then
命令序列2
else
命令序列3
fi

九。for循环

1.for 变量名 in 变量值1 变量值2 …
do
执行命令
done

eg:
#/bin/bash
for i in $(seq 10)
do
echo “nb”
done

2.注意:
循环次数
循环过程中使用的变量
列出顺序数字:seq 数字

十。while循环

1.while 条件测试
do
执行命令
done

2.死循环 一般格式 (需要使用Ctrl+c终止脚本)
while :
do
echo “nb”
done

eg:死循环 (需要使用Ctrl+c终止脚本)
#/bin/bash
while [ 1 -le 5 ]
do
echo “nb”
done

eg:有效脚本
#/bin/bash
q=1
while [ $q -le 5 ]
do
echo “nb”
let q++
done

十一。case分支结构
作用与if类似,相当于if的简化版本

case 变量值 in
模式1)
命令序列1 ;;
模式2)
命令序列2 ;;
… …
*)
默认命令序列
esac

eg:
#!/bin/bash
case $1 in
redhat)
echo “fedora”;;
fedora)
echo “redhat”;;
*)
echo “用法: $0 {redhat|fedora}”
esac

十二。shell函数

1.函数定义:
在shell环境中,将一些需要重复使用的操作,定义为公共的语句块,即可称为函数

2.函数的好处:
是脚本代码更简洁,增强易读性,提高shell脚本的执行效率

3.服务脚本中的函数应用
适用于比较复杂的启动/终止控制操作,方便在需要时多次调用

4.函数的定义与调用
格式1:
function 函数名 {
命令序列
… …
}

格式2:
函数名() {
命令序列
… …
}

5.调用已定义的函数:
格式:函数名
先定义了才能调用,就好比脚本的 “内部命令”
eg:
[root@server0 ~]# a(){

mkdir /test
cd /test
}

6.函数传值:
格式:函数名 值1 值2…
传递值作为函数的 “位置参数”
eg:
[root@server0 ~]# a(){

mkdir $1
cd $1
}

7.Shell版本的fork炸弹
[root@svr5 ~]# vim test.sh
#!/bin/bash
.(){
.|.&
}
.

十三。中断及退出

1.中断,继续,退出指令
continue:跳出当前循环体,继续执行下一个循环
break:退出整个循环体,执行循环体外语句
exit:退出脚本

2.break
eg:
for i in {1…7}
do
[ $i -eq 4 ] && break
echo $i
done
for i in {1…7}
do
[ $i -eq 4 ] && break
echo $i
done

3.continue
eg:
for i in {1…7}
do
[ $i -eq 4 ] && continue
echo $i
done

4.exit
eg:
for i in {1…7}
do
[ $i -eq 4 ] && exit
echo $i
done

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值