【 编程语言 】Shell学习记录

基础编程
    1. 创建
        在文件的第一行指定要使用的运行方式      #!/bin/bash
        系统会按照第一行!后指定的运行方式运行整个文件内容。
        如果不写的话,系统可能会按照当前登录的shell执行,但只是可能,Ubuntu系统很可能出问题。
        所以第一行指定运行方式是一种良好的习惯。
    2. 显示与输入
        输入
            read命令     等待用户的输入,并将获取的数据存到一个变量中
                read -p “Enter your name: ”name
                其他参数:
                    -t     指定超时时间
                    -s     隐藏方式读取
        显示
            echo “hello world”            自动动添加换行符
                控制输出不换行:        -n 参数
                让特殊转义符起作用        -e 参数
                    转义符一览
                         其后有字符时,作为退格键
                        c 取消输出行末的换行符
                        e ESCAPE 键
                        f 换行后连接上一行的结尾
                        v 垂直制表符
                         换行符
                         光标移至行首
                         制表符,也就是 Tab 键
            printf “hello %s %f ” world 11.11        不自动换行,需要手动加 ,使用类似C语言printf
                printf  可以使用%对输出间距进行控制 使用间距控制,我们不用再担心显示输出时因变量长度的不确定性导致的混乱问题
                    %-10s        左对齐,显示宽度为10个字符的字符串,不足使用空格补齐
                    %10s        右对齐,显示宽度为10个字符的字符串,不足使用空格补齐
                    %10.2f        右对齐,显示宽度为10个字符的浮点数,小数点后面保留两位
        
        重定向
            输入和输出进程在Linux也是以文件的概念存在
            Linux用文件描述符来标识每个文件对象,它是一个非负整数
            每个进程一次最多可以有九个文件描述符(可以理解为指针变量),而bash shell保留了前3个。
                文件描述符        缩写            描述
                    0            STDIN            标准输入
                    1            SIDOUT            标准输出
                    2            SIDERR            错误输出
            符号(可以理解为把符号左边的内容传送到右边)
                覆盖    >
                追加    >>
            临时重定向与永久重定向
                临时
                    将标准输出重定向到文件    Command    >    file
                    将错误输出重定向到文件    Command    2>    file
                    将所有输出重定向到文件    Command >file 2>file    或者    Command &>file
                永久
                    exec命令:        exec 1>file
                    exec命令会在脚本执行期间保持设定的重定向策略
                    永久重定向之后想再改回来怎么办?可以使用后6个自定义文件描述符
                        exec 3>&1
                        exec 1>file
                        exec 1>&3
            既要显示又要存到文件
                tee filename        覆盖
                tee –a filename     追加    
        高级显示控制    使用SGR转义码
            格式为                 CSI[nm
            CSI 代表转义标志字符
                实际上就是ESC的ASCII值
                产生方法:
                    Linux下编辑时的产生方法
                        Ctrl+v 后按 ESC            Linux系统显示为 ^[
                    非Linux下编辑时的产生方法