您的位置:首页 > 运维架构 > Shell

shell基础及变量2018.03.20

2018-03-20 20:52 295 查看
一、Shell概述
   Shell的作用——命令解释器,shell作为一个人机接口用于解释用户输入的命令,将命令解释为Linux内核可执行的二进制代码,并将执行的结果返回在标准终端上。
二、查看支持的shell种类
       cat  /etc/shells
         /bin/sh
         /bin/bash
        /sbin/nologin
        /bin/tcsh
        /bin/csh
三、shell的分类
     BourneShell:从1979起Unix就开始使用,BourneShell的主文件名为sh。
    CShell:C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。
     shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容
四、shell基础
      1.history:查看最近的命令行
           n:数字,意思是要列出最近的n笔命令行
           -c:将目前的shell中所有的history内容全部消除
           -a:将目前新增的history命令新增入histfiles中,若没有加histfikes,则默认写入~/.bash_history、           -r :将histfiles的内容读到目前这个shell 的history 记忆中;
           -w :将目前的history 记忆内容写入histfiles中
           注:历史命令会默认1000条,可以在环境变量配置文件/etc/profile中进行修改
              历史命令的调用:
         使用上下箭头调用以前的历史命令
         使用“!n”重复执行第n条历史命令
          使用“!!”重复执行上一条命令
          使用“!字串”重复执行最后一条一该字串开头的命令
2.alias:命令别名
        alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效。如果重新开启一个Shell,或者重新登录,则这些alias将无法使用。好在linux中提供alias永久化的方法:       <1>.若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc
       <2>.若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后# source /etc/bashrc
 
               删除别名:unalias 别名
   
3.多名令顺序执行
      ;:多名令顺序执行,无逻辑关系
       &&:逻辑与,命令1正确才执行命令2,命令1不正确则不执行命令2
       ||:逻辑或,命令1正确则不执行命令2,命令1不正确才执行命令2
 
4.管道符 |
   命令1 | 命令2
   命令1的正确输出作为命令2的操作对象
 
5.cut:信息剪切
       -d :后面接分隔字符。与-f 一起使用;       -f :依据-d 的分隔字符将一段信息分割成为数段,用-f 取出第几段的意思;
      -c :以字符(characters) 的单位取出固定字符区间;
6.tee:用于将数据流处理过程中某段信息存下来
7.echo:输出命令
       \a 发出警告声;      \b 删除前一个字符;      \c 最后不加上换行符号;     \f 换行但光标仍旧停留在原来的位置;     \n 换行且光标移至行首;     \r 光标移至行首,但不换行;    \t 插入tab;    \v 与\f相同;    \\插入\字符;
     \nnn插入nnn(八进制)所代表的ASCII字符;
 
五、为什么要使用shell脚本         使用脚本编程语言的好处是,它们多半运行在比编译型语言还高    的层级,能够轻易处理文件与目录之类的对象。缺点是:它们的    效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还    是值得的:花一个小时写成的简单脚本,同样的功能用c或C++来    编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够
    快了,快到足以让人忽略它性能上的问题。
 
六、shell脚本的基本元素
    1)#! /bin/bash    这个是必须的,指出shell的类型
    2)#  注释
 
七、常用的运行脚本的方法
    1. sh ./文件名.sh
    2. chmod+x 文件名.sh
       ./文件名.sh
 
八、shell中的变量和符号     shell 变量可以保存如路径名、文件名或者一个数字     变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。     在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
1.变量分类
      本地变量(用户变量)局部变量只在创建它们的Shell中使用,可以在shell程序内 任意使用和修改它们。
     环境变量可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们。还能在shell中加以修改。
     内部变量由系统提供的。与环境变量不同,但用户不能修改它们。
 
2.本地变量
    用户现在的shell生命期的脚本中使用
     变量名=值
     注意:
  (1)      等号两边不可以有空格
  (2)      取值包含空格,必须用双引号括起来
  (3)      Shell变量可以用大小写字母,区分大小写
 
3.变量的声明和使用
   (1)变量是弱类
4000
型的(不用声明类型)
   (2)变量声明及赋值格式:变量=值
   (3)变量的引用:$变量名  或者   ${变量名}
     当变量名为1个字符时建议使用方式一,多于1个时,建议使用方式二。
 
4.echo:显示输出    -n不要在最后自动换行    -e打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\t 插入tab;\\插入\字符;
 
5.清除变量名
   unset name(注意,name前没有$)
 
6.内部变量
      部分内部变量是:        $# ——传送给shell程序的位置参数的数量        $?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。0表示没有错误,其他任何值表明有错误。        $0——shell程序的名称        $*——调用shell程序时所传送的全部参数的单字符串,“参数1”“参数2”…形式保存的参数          $@“参数1参数2”…形式保存的参数        $n第n个参数        $$本程序的PID    7.shell中的特殊符号      (1)注释符#      (2)美元符 $:变量符使其后的普通字符作为变量名      (3)单引号:被引起来的字符全部做普通字符,即全部原样      (4)双引号:引号内的内容,除$、转义字符\、倒引号`这三个保留特殊功能,其他字符均做普通字符
     (5)倒引号:引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
     (6)反斜线:转义字符,他能把特殊字符变成普通字符,注意:在单引号括起来的字符串中,反斜线也成为普通字符,而失去转义字符功能
     (7)获取字符串长度:string=”abcd”
                          echo ${#string}
     ()提取子字符串:string="runoobis a greatsite"
                                 echo${string:1:4} # 输出unoo
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: