Linux的Shell脚本——day1

什么是Shell
  在Linux内核和用户间担任解释器,通常之/bin/bash。
  shell和bash的关系就算,bash是一个具体的shell;shell有很多种,其中一个三bash。

shell的使用方式:
  1.交互执行指令:人工干预,执行效率底。
  2.非交互执行指令:安静地在后台执行,执行效率高,方便写脚本。


常见的shell环境

  /bin/sh unix默认shell
  /bin/bash  大多是Linux默认shell
  /sbin/nologin 非登陆shell
  /bin/tcsh  
  /bin/csh  
  /bin/ksh   
  /bin/source 不产生子进程

  一般的shell解释器在运行某个进程的时候,会在当前bash下再创建一个子进程,而所有命令循环等都是在这个子进程下面做,创建的变量也不会影响用户登录的bash进程,只影响这个子进程。

  但是!source不一样,他不生成子进程,他直接在用户登录的bash下进行操作,所有命令都直接是这个bash的子进程,声明的变量对用户登录的终端有效,所以一般不用。


历史命令
  history    查看历史命令
  history  -c   清空历史命令
   > ~/.bash_history      清空记录文件
  ![序号]    执行第[序号]的命令
  ![字符]    执行以某字符开头的最近执行的命令

   配置文件/etc/profile (打开终端会读取运行的脚本)
     其中HISTSIZE代表最大历史命令数


重定向
  >  覆盖目标文件(先清空、再写入)
  >> 可实现追加重定向输出 (直接写入)
  1 为标准输出,不写默认为1
  2 为错误输出,2>就是把错误信息输出
  & 为全部输出 等价于 >[目标]  2>&1   和&> [目标]  一个意思

管道 , 用符号 |  ,可以将一条命令的标准输出交给另一条命令处理,在一条命令行内可依次使用多个管道


变量

环境变量 由系统定义完成,并且赋值完成,用户直接使用即可

$USER    永远储存当前登陆的用户名

$PATH    提供命令的检索目录

$SHELL    当前解释器

$PWD    当前所在的位置(执行这个脚本终端所在位置,不是脚本的位置)

$PS1      当前命令行行首如何显示

位置变量 在执行脚本时提供的命令行参数 $1、$2、.. .. ${10}、${11}、.. ..用户输入的第n个参数
预定义变量 由系统定义完成,并且赋值完成,用户直接使用即可 $#  已加载的位置变量的个数,求和
$*  所有位置变量的值
$?  程序退出后的状态值,0表示正常,其他值异常

  定义变量或者赋值:变量名=变量值  ( 两边不能有空格)
  使用变量中的值:$变量名 
  取消变量 unset [变量名]

  局部变量只能对当前Shell有效,其他进程中都不能用,包括子进程
  全局进程在当前Shell和该Shell的子环境都有效,注意分别shell是用bash还是source做解释器的

   全局变量 :  
     export  变量名[=[变量值]] 把某个变量变成全局变量
     export -n 变量名  取消变量全局属性


控制用户属于的信息是否在屏幕中显示

  将回显功能关闭
     stty -echo

  将回显功能恢复
    stty echo

  可以在输入密码前关闭回显,等输完密码再打开回显


read:产生交互,捕捉用户在键盘上的输入,并且赋值给一个变量
    -p:'屏幕提示信息'
    -s:不显示用户输入的数据

   循环的列表值,可以不参与,循环执行的重复操作
   造数工具: {起始值..结束值}      {1..50}:产生1到50之间的数字


注意点:
   1.if判断中每次用到判断都要在后面加上;then 在判断结束后加上fi
   2.if的开始标志是then 结束标志三fi    循环的开始标志三do  结束标志三done

猜你喜欢

转载自blog.csdn.net/Yu1543376365/article/details/82597689
今日推荐