shell入门总结

Shell-->命令行解释器,接收用户程序命令,调用系统内核执行
脚本以#!/bin/bash开头(指定解析器)
脚本的常用执行方式:bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
                    输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
    变量:常用系统变量-->$HOME、$PWD、$SHELL、$USER、$PATH等
        自定义变量:定义变量:变量=值    撤销变量:unset 变量    声明静态变量:readonly变量,注意:不能unset
        变量定义规则:变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
                    等号两侧不能有空格
                    在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
                    变量的值如果有空格,需要使用双引号或单引号括起来
        特殊变量:$n-->n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
                $#-->获取所有输入参数个数,常用于循环
                $*-->这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
                $@-->这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
                $?-->最后一次执行的命令的返回状态,值为0,证明上一个命令正确执行;值为非0证明上一个命令执行不正确
            注:$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数;
                被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;
                “$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数
    运算符: $((运算式)) 或 $[运算式] 
    条件判断:  test condition   [ condition ](注意condition前后要有空格)
        判断条件:  = 字符串比较   -lt 小于   -le 小于等于   -eq 等于   -gt 大于   -ge 大于等于   -ne 不等于
                    -r 有读的权限   -w 有写的权限   -x 有执行的权限
                    -f 文件存在并且是一个常规的文件file   -e 文件存在   -d 文件存在并是一个目录
流程控制:
1、if 
if [ 条件判断式 ];then 
  程序 
fi
2、if
if [ 条件判断式 ] 
  then 
    程序 
elif [ 条件判断式 ]
    then
        程序
else
    程序
fi
注:[ 条件判断式 ],中括号和条件判断式之间必须有空格    if后要有空格

3、case
case $变量名 in 
  "值1") 
    如果变量的值等于值1,则执行程序1 
    ;; 
  "值2") 
    如果变量的值等于值2,则执行程序2 
    ;; 
  …省略其他分支… 
  *) 
    如果变量的值都不是以上的值,则执行此程序 
    ;; 
esac
注:(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
    (2)双分号“;;”表示命令序列结束,相当于java中的break。
    (3)最后的“*)”表示默认模式,相当于java中的default。
4、for
for (( 初始值;循环控制条件;变量变化 )) 
  do 
    程序 
  done
5、for
for 变量 in 值1 值2 值3… 
  do 
    程序 
  done
6、while
while [ 条件判断式 ] 
  do 
    程序
  done
read读取控制台输入:read(选项)(参数)  -p-->指定读取值时的提示符  -t-->指定读取值时等待的时间(秒)

函数:
    系统函数:basename  
        basename [string / pathname] [suffix]-->basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来
        suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉
        例:basename /home/atguigu/banzhang.txt .txt-->banzhang
    系统函数:dirname
        dirname 文件绝对路径-->从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径
    自定义函数
[ function ] funname[()]
{
    Action;
    [return int;]
}
funname
注:必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译
    函数返回值,只能通过$?系统变量获得,可以显示加:return返回,
    如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)
    
Shell工具
    cut-->cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出,默认分隔符是制表符
        cut [选项参数]  filename   -f-->列号,提取第几列  -d-->分隔符,按照指定分隔符分割列  -c-->指定具体的字符
    sed:流编辑器,一次处理一行内容,处理完成后文件内容并没有改变
        sed [选项参数]  ‘command’  filename   -e-->直接在指令列模式上进行sed的动作编辑  -i-->直接编辑文件
        命令:  a-->新增,a的后面可以接字串,在下一行出现  d删除  s-->查找并替换  g-->全部替换
    awk:强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理
        awk [选项参数] ‘pattern1{action1}  pattern2{action2}...’ filename    只有匹配了pattern的行才会执行action
        pattern:表示AWK在数据中查找的内容,就是匹配模式
        action:在找到匹配内容时所执行的一系列命令         -F-->指定输入文件折分隔符  -v-->赋值一个用户定义变量
        BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。
        awk的内置变量:FILENAME-->文件名   NR-->已读的记录数   NF-->浏览记录的域的个数(切割后,列的个数)
    sort:将文件进行排序,并将排序结果标准输出
        sort(选项)(参数)   -n-->依照数值的大小排序  -r-->以相反的顺序来排序  -t-->设置排序时所用的分隔字符  
                            -k-->指定需要排序的列
    正则表达式入门:
        ^ 匹配一行的开头,^a-->匹配出所有以a开头的行
        $ 匹配一行的结束,t$-->匹配出所有以t结尾的行
        . 匹配一个任意的字符,一个.匹配一个字
        * 不单独使用,他和上一个字符连用,表示匹配上一个字符0次或多次
        [ ] 表示匹配某个范围内的一个字符
        [6,8]------匹配6或者8
        [a-z]------匹配一个a-z之间的字符
        [a-z]*-----匹配任意字母字符串
        [a-c, e-f]-匹配a-c或者e-f之间的任意字符
        \ 表示转义,并不会单独使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值