SHELL学习笔录



SHELL学习笔录
 
前段时间学了学shell,做了些笔记,希望对好学者有所帮助,如下:
 
1.echo "hello"    输出hello,自动打印换行符
 
  echo "hello \c" 然echo不打印换行符 
  echo *     显示所有文件,不包括隐藏文件 
  echo .*    显示隐藏文件 
2.printf format-string[arguments] 几乎实现了C中printf的功能,它不像echo自动换行 
3.重定向 
    <  改变标准输入   program < file 将program的标准输入改为file 
      >  改变标准输出   program > file 将program的标准输出改为file 
                目标文件file不存在时,会新建file,若存在则会覆盖 
                program >> file  不覆盖已有file,而是把内容追加在file结尾处 
4.参数使用:  www.2cto.com  
    $n  第n个参数(和C中的宏类似,$n只是简单的替代,  $n$m可组合为一个参数:) 
    变量赋值"="左右不能有空格 
5.通配符: 
    *         匹配多个字符 
    ?        匹配一个字符 
    [charset]    匹配charset中的字符,如[0123456789]匹配一个数字0123456789,还可写成[0-9] 
    [!charset]    取charset的补集作为匹配集合 
6.变量替换: 
        ${parameter:-word}    若parameter为空或未设置,则用word代替parameter进行替换,parameter值不变 
        ${parameter:=word}    若parameter为空或未设置,则parameter设为值word 
        ${parameter:?message}    若parameter为空或未设置,则把message作为标准错误输出 
        ${parameter:+word}    若parameter设置了,则用word代替parameter进行替换,parameter值不变 
7.引用: 
    关闭一个字符的特殊意义 
    \ 
    '' 
    "" 
8.    if list1    ————————————>list1退出代码为0时为真 
        then list2 
    elif list3 
        then list4 
    else 
        then list5 
    fi 
 
test expression = [expression] expression为test可理解的表达式 
test可理解的表达式: 
        -文件测试:检查文件是否满足某种特殊规则 
            test option file     option如下图
 
test-Z喎?http://www.2cto.com/kf/ware/vc/vcHRpb24=" src="/uploads/allimg/190324/143Z22195-0.gif" />
 
        -字符串比较: 
            -z string  长度为0为真 
            -n string  长度不为0为真 
            string1 = string2 
            string1 != sting2 
        -数字比较:整数比较 
            int1 option int2    option————>-eq,  -ne,  -lt,  -le,  -gt,  -ge 
                                =     !=     <     <=    >     >= 
        -复合表达式: 
            ! 非 
            -a  与st  if [ expression1 -a expression2 ] 
            -o  或 
9. 
    case word in 
        pattern1) 
            list1;; 
        pattern2) 
            list2;; 
        ...   www.2cto.com  
    esac 
 
10. 
    while command    ——————> 为0时为真 
    do 
        list 
    done 
11.    
    until command 
    do 
        list 
    done 
12.数组 
    下标使用数字,自增应该如此:index=$(expr $index + 1),expr不可少,“+”两边要空格 
    要应用数组中元素值是,应如此:${array[$index]},花括号不可少 
    列出数组中所有元素:echo ${arrar[*]} 
13.字符处理 
    截取: 
    expr substr “$var” 1 2  从第一个字符开始截取变量var的2个字符 
    var2=·expr substr “$var” 1 2· 把截取的字符赋值给变量 
      www.2cto.com  
======================================AWK==================================================== 
1.awk程序:模式+操作 
    pattern {action} 
    pattern 
        {action} 
    pattern缺省:action应用在每条输入记录 
    action缺省 :打印匹配记录到标准输出 
    
    2中特殊pattern: 
        BEGIN:与之关联的操作只执行一次,执行在任何命令行文件或一般命令行赋值被处理之前,任何开头的-v选项指定完成之后;多用于初始化 
        END  :与之关联的操作只执行一次,执行在所有输入数据处理完之后;多由于产生摘要报告或做清理工作 
2.常用的内建变量: 
    ARGC        参数计数 
    ARGV        参数向量,或参数值 
    FILENAME    当前输入文件的名称 
    FNR        当前输入文件的记录数 
    FS        字段分隔字符(正则表达式,默认为" ") 
    NF        当前记录的字段数 
    NR        在工作(job)中的记录数 
    OFS        输出字段的分隔字符,默认为" " 
    ORS        输出记录的分隔字符,默认为"\n" 
3.数组变量: 
    下标可以是任意数字或字符串表达式,不一定要整数 
4.命令行参数: 
5.记录: 
    空行也可以是一条记录 
    
=====================================SED===================================================== 
1.sed调用 
    sed [option] sed命令 输入文件 
    sed [option] -f sed脚本文件 输入文件 
    sed脚本文件 [option] 输入文件 
        option:   www.2cto.com  
                        -n    不打印编辑行 
                        -p     打印    
                        -c    下一命令是编辑命令    
                        -f    执行sed脚本时使用 
2.定位文本(address) 
    sed浏览输入文件时,默认是从第一行开始,如下可以定位文本: 
    1).使用行号: 
            n            第n行 
            n,m        第n行-第m行(包括行m) 
            n,m!    行号部位n和m的行 
            1,$    第一行-最后一行 
    2).使用正则表达式: 
            /pattern/                包含模式的行 
            /pattern1/pattern2/        包含两个模式的行 
            
            pattern/,n                指定行上包含模式的行 
            n,/pattern/                ?? 
3.sed编辑命令: 
        p        打印匹配行 
        =        显示行号 
        a\        在定位行号后附加信息 
        i\        在定位行号后插入信息 
        d        删除定位行 
        c\        替换 
        s        模式匹配替换 
        r        从另一文件中读取文本 
        w        写文本到文件 
        q        退出 
        l        显示控制字符 
        {} 
        n 
        g        全局 
        y 
        n 
        ^        行首开始 
        
        实例:sed '/sdd/=' test.txt                             打印test.txt的所有内容,并显示匹配'sdd'行的行号 
              sed -n -e '/sdd/p' -e '/sdd/=' test.txt            仅打印匹配模式的行,并显示行号,两个e都不能少 
  www.2cto.com  
4.插入文本 
 
5.修改文本 
        格式:[address[,address]] c\    text            
        功能:将定位行替换为text 
        
        格式:[address[,address]] i\    text            
        功能:在定位行前插入行text 
 
        格式:[address[,address]] a\    text            
        功能:在定位行后追加行text 
        
6.删除文本 
        格式:[address[,address]]d 
        功能:删除定位行 
 
7.替换文本 
        格式:[address[,address]] s/pattern_to_find/replacement_pattern/[g p w n] 
        功能: 
                     g: 缺省下是替换第一次模式匹配的,用g可用于全局的模式匹配 
                     p: 缺省下打印所有替换行,用p可以使-n选项无效 
                     w: 写入指定文件 
                     n: 
                     &: 代表原模式 
        实例: 
                     sed -n 's/aaa/ccc &/p' test.txt                        模式aaa前追加ccc 
                    sed -n 's/aaa/& ccc/p' test.txt                        模式aaa后追加ccc 
8.读写文件   www.2cto.com  
        格式:[address[,address]]w filename 
        功能:将定位行写入文件filename 
        
        格式:address r filename 
        功能:将文件filename的内容追加在定位行后        
        
实例: 
            sed '/^$/d' filename                     删除空行 
            sed 's/^[0-9]//g' filename        去除行首数字 
 
 
作者 Wowo(大我小我)

相关内容

    暂无相关文章