shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

shell脚本编程学习笔记1——shell基础与Bash基本功能

1,简介:

1,Shell就是一个命令行解释器,用以连接输入设别和内核。
2,Shell是解 释执行的脚本语言,在Shell中可以直接调 用Linux系统命令。 
3,shell种类比较多,总分为bshell和cshell。比较常用的是bshell中的Bash,本博客学习的也是linux中的Bash
4,查看linux支持那种shell,可查阅文件/etc/shells

2,执行方式

echo [options] [contents]
    -e: 支持反斜线控制的字符转换
        实例:
        [root@localhost ~]# echo -e "ab\bc" 
        [root@localhost ~]# echo -e "a\tb\tc\nd\te\tf" 
    注:常见反斜线控制的字符串:
            \\ 输出\本身 
            \a 输出警告音 
            \b 退格键,也就是向左删除键 
            \c 取消输出行末的换行符。和“-n”选项一致 
            \e ESCAPE键 
            \f 换页符 
            \n 换行符 
            \r 回车键 
            \t 制表符,也就是Tab键 
            \v 垂直制表符 
            \0nnn 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进 制数 
            \xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 

hello word 脚本
    写脚本 
        [root@localhost sh]# vi hello.sh 
        #!/bin/Bash 
        echo 'hello word';
    脚本执行
        1,赋予执行权限,然后绝对或者相对路径
            chmod 755 hello.sh
            ./hello.sh 
        2,Bash调用执行脚本
            bash 
注意:windows回车符和linux不一致,编辑的shell需要转换
        使用:dos2unix即可
        win:  ^M$   
        linux: $

3,Bash基本功能

1,历史命令
    [root@localhost ~]# history [选项] [历史命令保存文件] 
    选项:  -c:  清空历史命令  
    -w: 把缓存中的历史命令写入历史命令保存文件    ~/.bash_history 
        注意:.bash_history默认保存1000条,可在/etc/profile修改

    使用上、下箭头调用以前的历史命令 
    使用“!n”重复执行第n条历史命令 
    使用“!!”重复执行上一条命令 
    使用“!字串”重复执行最后一条以该字 串开头的命令 
2,tab键补全
3,别名
    [root@localhost ~]# alias 别名='原命令' 
     设定命令别名
    [root@localhost ~]# alias 
     查询命令别名
        注意:别名优先级
                1 第一顺位执行用绝对路径或相对路径执行 的命令。 
                2 第二顺位执行别名。 
                3 第三顺位执行Bash的内部命令。 
                4 第四顺位执行按照$PATH环境变量定义的 目录查找顺序找到的第一个命令。
    别名永久生效需要修改配置文件: /root/.bashrc 
    删除别名:unalias 别名 
4快捷键
    ctrl+A 把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移 动到命令行开头时使用。
    ctrl+E 把光标移动到命令行结尾。 
    ctrl+C 强制终止当前的命令。 
    ctrl+L 清屏,相当于clear命令。 
    ctrl+U 删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退 格键一个一个字符的删除,使用这个快捷键会更加方便 
    ctrl+K 删除或剪切光标之后的内容。 
    ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容。 
    ctrl+R 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入 搜索内容,就会从历史命令中搜索。 
    ctrl+D 退出当前终端。 
    ctrl+Z 暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管 理章节详细介绍。 
    ctrl+S 暂停屏幕输出。 
    ctrl+Q 恢复屏幕输出。
5,输出重定向(主要用于日志系统)
    键盘      /dev/stdin      0 标准输入 
    显示器         /dev/sdtout     1 标准输出 
    显示器         /dev/sdterr     2 标准错误输 

    输出重定向:
            标准输出重定向 
                命令 > 文件                 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。 
                命令 >> 文件            以追加的方式,把命令的正确输出输出到指定的文件或设备当中。 
            标准错误输出重定 向 
                错误命令 2>文件           以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。 
                错误命令 2>>文件          以追加的方式,把命令的错误输出输出到指定的文件或设备当中
    正确输出错误输出同时保存
                命令 &>文件             以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。 
                命令 &>>文件            以追加的方式,把正确输出和错误输出都保存到同一个文件当中。 
                命令>>文件1  2>>文件2     把正确的输出追加到文件1中,把错误的输出追加到文件2中。 

6,输入重定向
    [root@localhost ~]# wc [选项] [文件名] 
        选项:   -c  统计字节数  
                -w  统计单词数  
                -l  统计行数 

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

    命令<< 标识符      
        …     
    标识符         把标识符之间内容作为    命令的输入
7,多命令顺序执行
    ; 命令1 ;命令2      多个命令顺序执行,命令之间没有任何逻辑联 系 
    && 命令1 && 命令2   逻辑与 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行 
    || 命令1 || 命令2   逻辑或 当命令1 执行不正确,则命令2才会执行 当命令1正确执行,则命令2不会执行

        实例:[root@localhost ~]# ls ; date ; cd /user ; pwd

    dd命令(复制磁盘或者源)
        [root@localhost ~]# dd if=输入文件 of=输出文件 bs=字节数 count=个数 
            选项:   if=输入文件  指定源文件或源设备  
                    of=输出文件  指定目标文件或目标设备  
                    bs=字节数  指定一次输入/输出多少字节,即把这些字节看做    一个数据块  
                    count=个数  指定输入/输出多少个数据块
            实例: [root@localhost ~]# date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ; date
                  [root@localhost ~]# 命令 && echo yes || echo no
8,管道符
    [root@localhost ~]# 命令1  |  命令2 
        令 1 的正确输出作为命令 2 的操作对象

        实例:
            [root@localhost ~]# ll -a /etc/  | more
            [root@localhost ~]# netstat -an | grep "ESTABLISHED"
        复习:grep
             [root@localhost ~]# grep [选项] "搜索内容" 文件名 
                                    选项:         -i:  忽略大小写      
                                                -n:  输出行号   
                                                -v:  反向查找  
                                                --color=auto 搜索出的关键字用颜色显
9,通配符
    ?       匹配一个任意字符 * 匹配0个或任意多个任意字符,也就是可以匹配任何内容 
    []      匹配中括号中任意一个字符。例如:[abc]代表一定匹配 一个字符,或者是a,或者是b,或者是c。 
    [-]     匹配中括号中任意一个字符,-代表一个范围。例如:[a-z] 代表匹配一个小写字母。 
    [^]     逻辑非,表示匹配不是中括号内的一个字符。例如:[^09]代表匹配一个不是数字的字符。 

    实例:
            [root@localhost ~]# cd /tmp/ 
            [root@localhost tmp]# rm -rf * 
            [root@localhost tmp]# touch abc 
            [root@localhost tmp]# touch abcd 
            [root@localhost tmp]# touch 012 
            [root@localhost tmp]# touch 0abc 
            [root@localhost tmp]# ls ?abc 
            [root@localhost tmp]# ls [0-9]* 
            [root@localhost tmp]# ls [^0-9]*    
10,Bash中其他特殊符号:
    '' 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都 没有特殊含义。 
    "" 双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`” 和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义 符”的特殊含义。 
    `` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。 和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。 
    $() 和反引号作用一样,用来引用系统命令。 
    # 在Shell脚本中,#开头的行代表注释。 
    $ 用于调用变量的值,如需要调用变量name的值时,需要用$name 的方式得到变量的值。 
    \ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。 如\$将输出“$”符号,而不当做是变量引用。 

    实例:
        [root@localhost ~]# echo `ls` 
        [root@localhost ~]# echo $(date)
        [root@localhost ~]# name=sc 
        [root@localhost ~]# echo '$name' 
        [root@localhost ~]# echo "$name" 
        [root@localhost ~]# echo ‘$(date)' 
        [root@localhost ~]# echo “$(date)"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值