Linux学习笔记10 -----Shell基础

一、Shell概述            计算机只认识01代码,而通常键入的是ASCII字符

        1、Shell 贝克,桥牌

           Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂载、停止甚至编写一些程序。

            Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。

            Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

                                            接受命令,翻译成01代码 Windows的操作界面也可以称做Shell

            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

                现在常用的就是Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。

                调用系统变量名:echo $SHELL         运行结果:/bin/bash    

                查看Linux兼容哪些shell:运行 vi /etc/shells        进入之后按exit退回上级shell

                                                    运行结果:/bin/sh

                                                                 /bin/bash

                                                                 /sbin/nologin

                                                                 /bin/dash

                            这里有父shell和子shell的概念。。。。孙子辈的 曾孙子辈的都可以调用。。。。。。。

二、脚本执行方式

            1、echo 输出命令          输出的内容之间有空格的时候需要加双引号。。。。,但是6.6版本不加双引号也可以输出。

                 echo [选项]    [输出内容]

                  选项:

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

                 转义字符表:

                        

                    eg: echo -e    "h\te\\tl\nl\to\t"            ==  echo -e    "\x68\t\x65\t\x6c\n\x6c\t\x6f\t"            

                    echo -e "\e[1;31m 嫁人就要嫁watt \e[0m"            #开启颜色和终止颜色

                    #输出颜色     30m=黑色    ,31m=红色    , 32m=绿色,33m=黄色

                                           34m= 蓝色    ,35m=洋红,    36m=青色,37m=白色

               2、第一个脚本:

                                            vi hello.sh

                                            #!/bin/bash

                                            #The first program

                                             echo -e "\e[1;34m 天上掉下个超AI \e[0m"

              3、脚本执行

                                            赋予执行权限,直接运行

                                                    chmod 755 hello.sh

                                                    ./hello.sh

                                            通过bash调用执行脚本

                                                     bash    hello.sh

                      

三、Bash的基本功能

            1.命令别名与快捷键

                查看与设定别名

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

                         alias    别名 = '原命令'            #设定命令别名

                别名永久生效与删除别名 vi  ~/.bashrc            #写入环境变量配置文件

                   eg:

                            alias vi  =  ' vim'   用命令是临时生效,  vi  ./bashrc   加入文件内部是永久生效,but 需要restart.    using     source .bashrc 会调用一边文件使其直接生效。   

             unalias 别名            #删除别名

                          命令生效顺序

                                第一位执行用绝对路径或相对路径执行的命令

                                第二位执行别名

                                第三位执行Bash的内部命令

                                第四位执行按照$PATH环境 变量定义的目录查找顺序找到的第一个命令。

                                                        echo $PATH    用:分割的一系列系统命令               

                      clear  清屏命令            

                       常用的快捷键

                        Ctrl+c    强制终止当前命令

                        Ctrl+l    清屏

                        Ctrl+a    光标移动到命令行首

                        Ctrl+e    光标移动到命令行尾

                        Ctrl+u    从光标所在位置删除到行首

                        Ctrl+z    把命令放入后台

                        Ctrl+r    在历史命令中搜索

 

            2.历史命令

                    histroy    [选项]    [历史命令保存文件]

                        选项:    -c:清空历史命令                                    重要的帮助功能

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

                       vi    /etc/profile        一个重要的环境配置文件,常见的环境变量配置文件有4个

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

                       历史命令的调用

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

                              使用“!n”重复执行第n条历史命令

                               使用“!!”重复执行上一条命令    

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

                               service network    restart    重启网络服务          eg: !ser

                        tab键            命令补全/文件和文件名自动补全    按一下补全,按两下展开所有相关

                                可以快速加快我们的输入速度

                                帮助你排错         

            3.输出重定向

                   

                    输入重定向

                           标准的输入输出

                                设备                设备文件名                文件描述符            类型

                            键盘                    /dev/stdin                        0                        标准输入

                           显示器                /dev/stdout                        1                        标准输出

                           显示器                /dev/stderr                        2                        标准错误输出

                    输出重定向    

                       类型                    符号                    作用

       标准输出重定向        命令>文件             以覆盖的方式,把命令的正确输出输出到指定的文件或者设备中

                                            命令>>文件           以追击的方式,吧命令的正确输出输出到指定的文件或者设备中                        eg:    ifconfig    >  test.log        cat test.log     将ip信息重定向到测试文本 并显示文件        

    标准错误输出重定向        

                                         错误命令 2>文件   中间没有空格   以覆盖的方式,把错误的命令输出输出到指定的文件或者设备中

                                       错误命令 2>>文件   中间没有空格  以追加的方式,把命令的错误输出输出到指定的文件或者设备中 

    正确输出和错误输出同时保存

                                         命令 >  文件 2>&1                以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。

                                         命令 >> 文件 2>&1               以追加的方式,把正确输出和错误输出都保存到同一个文件当中。

                                         命令 &>文件                         以覆盖的方式,把正确输出和错误输出都保存同一个文件当中

                                        命令 &>>文件                        以追加的方式,把正确输出和错误输出都保存到同一个文件当中

                                        命令>>文件1 2>>文件2        把正确的输出追加到文件1中,把错误的输出追加到文件2中。

                ls  &>/dev/null        相当于linux程序中的黑洞,将过程扔进黑洞。。。。。

        输入重定向

                [root@locahost ~]# wc [选项][文件名]     只有中间有空格 就当作单独的单词来处理

                    选项:                                    需要用Ctrl+d 来结束 进行统计

                            -c        统计字节数

                            -w        统计单词数

                            -l          统计行数

                命令<文件    把文件作为命令的输入

                命令<标识符            标识符把标识符之间的内容作为命令的输入  

         4.多命令顺序执行

                管道符

                多命令顺序执行符            格式                               作用

                ;                             命令1;命令2                多个命令顺序执行,命令之间没有任何逻辑关系

                    date ; tar    -zcvf    etc.tar.qz    /etc    ;    date            但是不管中间命令是否报错。。。

                 &&                         命令1&&命令2              逻辑与                      

                                                                                     当命令1正确执行,命令3才会执行

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

                   ||                           命令1||命令2                  逻辑或

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

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

                    检查命令是否能够正确执行       例如: ls && echo yes || echo no

                more 用来查看文件的内容,分屏显示

            管道符:        |                                                             有数据传递,命令2一定要能操作命令1的输出

            [root@localhost ~]# 命令1 | 命令2        #把命令1的正确输出作为命令2的操作对象

                ls -l /etc | more 用more来产看ls的结果

                netstat    -an   查看系统中的所有网络连接。。。。网络端口和网络程序。。。

                netstat    -an |    grep    ESTABLISHED    在这个命令后查询包含该字符串的命令

               netstat    -an  |    grep   ESTABlLISHED    |  wc -l   可以查看几个人远程登录  

            5 通配符

                通配符            作用

                ?                    匹配一個字符

                *                    匹配0個或者任意多個字符,也就是可以匹配任何內容

               []                      匹配中括號中的任意一個字符。例如[abc]代表一定匹配一個字符,或者是a,或者是b,或者是c。

              [-]                匹配中括號中任意一個字符,-代表一個範圍,例如[a-z]代表匹配一个小写字母。

              [^]                逻辑非,表示匹配不是中括号内的一个字符。例如[^0-9]代表匹配一个不是数字的字符。                        

        通配符一般用来匹配文件或者目录。    

       正则表达式 用来匹配文件中的数据

 

       5.Bash中特殊符号

            ' '        单引号 。在单引号中所有的特殊符号,如'$'      ' ' ' (反双引号)都没有特殊含义

         “”      双引号 。在双引号中特殊符号都没有特殊含义,但是“$”、“'” "\"是例外,拥有“调用变量的值”、“引用命令”“转义符”的特殊含义。

           ``       反双引号。反双引号括起来的是系统命令,在Bash中会率先执行他,和$()作用一样,不过推荐使用$(),因为反括号非常容易看错

        $()         和反括号一样,用来引用系统命令

       #            在Shell脚本中,#开头的行代表注释

        $            用于调用变量的值,如需要调用变量name时,需要用$name的方式得到变量的值

      \              转义符,跟在\之后的特殊符号将失去特殊含义,变成普通符。如\$将输出“$”符号,而不是当作变量引用。

 

转载于:https://my.oschina.net/Watto/blog/820702

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值