shell基础

1、Shell是什么

  • shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
  • shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shelll是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

  

2、Shell的分类

  • Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh
  • C Shell:C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名
  • Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、bash、psh、zsh;C家族主要包括:csh、tcsh

  查看shell版本:

   

  查看兼容的shell版本

   

3、Shell脚本执行

  • echo输出命令

    -> echo [选项] [输出内容]

      选项:-e: 支持反斜线控制的字符转换

      

      

      

  • 第一个脚本

    

    

  • 脚本执行

    -> 赋予执行权限,直接运行

      - chmod 755 hello.sh

      - ./hello.sh

    -> 通过Bash调用执行脚本

      - bash hello.sh

4、Bash的基本功能

  • 命令别名与快捷键

    -> 查看与设定别名

      - alias

        #查看系统中所有的命令别名

        

      - alias 别名='原命令'

        #设定命令别名

       

   -> 别名永久生效与删除别名

      - vi  ~/,bashrc

        #写入环境变量配置文件

        source .bashrc可以让环境变量直接生效,否则需要重启

      - unalias 别名

        #删除别名

   

    

  • 历史命令

    -> history [选项] [历史命令保存文件]

      选项:-c:清空历史命令

         -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

      注:历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

    -> 历史命令的调用

      - 使用上、下箭头调用以前的历史命令

      - 使用 "!n" 重复执行第n条历史命令

      - 使用 "!!" 重复执行上一条历史命令

      - 使用 "!字串" 重复执行最后一条以该字串开头的命令

  • 输出重定向

    1、标准输入输出

      

设备 设备文件名  文件描述符  类型
键盘 /de/stdin 0  标准输入
显示器 /dev/sdtout 1  标准输出
显示器 /dev/sdterr 2  标准错误输出

    2、输出重定向

      

类型  符号  作用
标准输出重定向  命令 > 文件

以覆盖的方式,把命令的正确输出

输出到指定的文件或设备当中

 命令 >> 文件 以追加的方式,把命令的正确输出

输出到指定的文件或设备当中

标准错误输出重定向  错误命令 2> 文件  

以覆盖的方式,把命令的错误输出

输出到指定的文件或设备当中

错误命令 2>> 文件  以追加的方式,把命令的错误输出

输出到指定的文件或设备当中

正确输出和错误输出同时保存  命令 > 文件 2>&1

以覆盖的方式,把正确输出和错误输出

都保存到同一个文件当中

命令 >> 文件 2>&1

以追加的方式,把正确输出和错误输出

都保存到同一个文件当中

命令 &> 文件

以覆盖的方式,把正确输出和错误输出

都保存到同一个文件当中

命令 &>> 文件

以追加的方式,把正确输出和错误输出

都保存到同一个文件当中

命令>>文件1 2>> 文件2

 把正确的输出追加到文件1中,

把错误的输出追加到文件2中。

     3、输入重定向

       - [root@localhost ~ ]# wc [选项] [文件名]

            选项: -c 统计字节数

           -w 统计单词数

           -l  统计行数

     

     

     

     

     (丢到黑洞垃圾站,不显示,也不输出)

     

      

  • 管道符

    1、多命令顺序执行

      

多命令执行符  格式  作用
;  命令1 ; 命令2  多个命令顺序执行,命令之间没有任何逻辑联系
&&  命令1 && 命令2

 逻辑与

当命令1正确执行,则命令2才会执行

当命令1执行不正确,则命令2不会执行

||  命令1 || 命令2

 逻辑或

当命令1执行不正确,则命令2才会执行

当命令1正确执行,则命令2不会执行


       如图:

                   

             

       

       

    2、管道符

      - 命令格式

      - [root@localhost ~ ]#命令1 | 命令2

        #命令1的正确输出作为命令2的操作对象

      

      

  • 通配符
通配符  作用
 匹配一个任意字符
*  匹配0个或任意多个任意字符,也就是可以匹配任意内容
[]  匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c
[-]  匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母
[^]  逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符。

       

  • Bash中其他特殊符号
符号  作用
' '  单引号。在单引号中所有的特殊符号,如"$"和“‘’”反引号都没有特殊含义。
" "  双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`"和"\"是例外,拥有"调用变量的值"、"引用命令"和"转义符"的特殊含义
``  反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$()  和反引号作用一样,用来引用系统命令。
#  在Shell脚本中,#开头的行代表注释
$  用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的
\  转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出"$"符号,而不当做是变量引用。

      

      

      

      

      

猜你喜欢

转载自www.cnblogs.com/daishengda/p/9078248.html