你的位置:首页 > 操作系统

[操作系统]shell笔记one

目录

1.shell讲解

2.变量

3.read,histroy命令

4.运算,字符比较,循环,判断,函数,中断

 

 

 

one.1 什么是shell?

shell是linux内核和用户之间的解释器,通常是/bin/bash

cat /etc/shells可以看到当前系统支持的shell解释器

 

one.2 交互式硬件设备

标准输入:从设备接收用户输入的数据

标准输出:通过设备向用户输出数据

标准错误:通过设备向用户报告执行中的错误

 

one.3 重定向

改变标准输入/输出/错误输出的方向

 

one.4 脚本构成

#!/bin/bash    脚本声明,使用哪种解释器

#    做注释,写注释有助于整理思路和阅读脚本

 

one.5 脚本执行方式

bash one.sh    执行脚本,不需要开头写解释器

source one.sh    加载脚本,会将脚本中变量加载到当前

./one.sh    需要开头写解释器

/root/one.sh    需要开头写解释器

 

one.6 调试脚本

sh -x one.sh    查看脚本详细执行过程

 

 

tow.1 变量类型

 

tow.2 环境变量

$HOSTNAME    主机名

$SHELL    当前默认解释器

$PATH    环境变量

  在linux中使用命令时,系统会查看环境变量,从环境变量显示的那些文件夹中寻找是否有这个命令

$USER    当前用户

$PWD    当前目录

$HOME    家目录的路径

$LOGNAME    目前用户

$RANDOM    生成随机数

 

tow.3 位置变量

$0    脚本名

$1-9    附加参数1-9

  例如bash one.sh xixi haha 那么 xixi haha 就是$1与$2

$*    显示所有位置变量

$#    显示位置值得总数量

$$    d当前进程的PID

$?    上一个进程执行后的返回值,成功为0,失败为非0

$!    shell最后运行的后台进程的PID

 

tow.4 特殊符号

"$abc"    双引,引用整体

'$abc'    单引,引用整体,特殊字符不起作用

`ls -l`    返回反引号中执行的结果

${abc}de    变量用花括号防止混淆

 

two.5 相关命令

/etc/profile或~/.bash_profile    环境变量配置文件

env    列出环境变量

set     列出所有变量

 

 

three.1 read命令

read -p "请输入:" name    -p后面加上提示符,name为变量名,存储输入的字符

  -s 输入的数值不可见

  -t 3 设置时间为3秒,超时值为空

  -n 3 设置字符输入字符数量,达到3立刻执行

stty -echo    关闭显示,之后的输入将不可见,通常用户输入密码前设置

stty echo    开启显示

 

three.2 历史命令

history    查看历史命令,默认存储1000条,在/etc/profile中HISTORY变量修改

!cat    执行以cat开头最近的那条历史命令

!100    执行第100条历史命令

 

three.3 小命令

export abc    将局部变量变成全局变量

export -n abc    取消变量的全局属性

unset abc    取消这个变量的值

a;b    分隔符,每个单独执行

a&&b    a执行成功才执行b

a||b    a执行失败才执行b

  例子,[ a == a ] && echo "yes" || echo "no"

  test abc == abc相当于[ abc == abc ] 

seq 1 2 10    从1到10打印一遍,只打印1,3,5,7,9其中2为步长,前一个数+2

 

 

four.1 运算

%    取余数,余数小于被除数字,例如echo $[26%4],余2

expr 1 + 3    做运算,+-*/,*需要用\*来表示,不然表示为所有

echo $[1*5]    其中数值不用加$,例如echo $[x*y],**代表指数

let i++    不显示结果,制作运算

  i++相当于 i=i+1

  i+=1相当于i=i+1

  表达不同会有先后顺序,计算结果也不同
  x=43 ; y=21 ;echo $[++x],$[--y]
  44 20
  x=43 ; y=21 ;echo $[x++],$[y--]
  43 21
bc    计算器,也可以用管道来非交互式计算
  echo "scale=2;10/3" |bc scale为保留小数点3位

  echo "3>2"|bc 会返回0和1,正确为0

 

four.2 比较

[ -s /etc/passwd ]    判断是否存在

 

[ 1 -le 6 ]    整数比较

 

[ "abc" == "def" ]    字符串比较,通常用户密码的核对

 

four.3 循环

for i in {1..10}    i是变量名,{1..10}是列表,for循环根据列表循环10次

do

  echo "1"    命令

done    结尾格式

for ((i=1;i<5;i+=2))    c语言风格for循环,步长为2

 

while [ 1 -eq 1 ]    条件为真则一直执行到条件为假

do

  echo "1"

done

 

four.4 判断

if [ 1 -eq 10 ];then    符合条件执行语句

  echo "1"

elif [ 1 -eq 2 ];then    符合才执行

  echo "2"

else    都不符合则执行

  echo "3"

fi    结尾


case i in    i为变量,当符合下面其中一个选项时则执行

stop)

  echo "1" ;;

start)

  echo "2" ;;

restart)

  echo "3" ;;

esac

 

four.5 函数

function abc{    function为格式,abc则是变量名,当一些命令重复出现时可以写入函数,下次直接调用,简洁。

echo "$1"

}


abc()  {    另一种简便写法
echo "$1"
}

abc xixi   输入函数名即可执行,也可定义位置变量并调用

.(){.|.&};.    shell版本fork炸弹,迅速耗尽系统资源

 

four.6 中断

 

 

five.5 生命

以上内容大部分来自达内PPT的资源,这里为收集整理!