shell学习笔记

1.shell学习笔记

如下

2.明日学习计划

        下一步是学习Hadoop,之前看过800分钟的视频,学会了搭建Hadoop,hive,并连接帆软BI进行展示。今天看了另一个系列的视频,有1600多分钟,其中包括了调优,源码和一些参数配置,这是之前没了解到,但是实际工作和面试会问到的,这次看Hadoop主要侧重以上3点的学习。

        明日学习时间控制在4小时以上。早上10点--12点;下午4点--6点,晚上抽空总结学习成果并记录下来!

3.整体进展情况

暂定的学习路线:shell,Hadoop,zookeeper,hive,flume,sqoop,kafka,数仓建设规范,维度建模,实战项目,SQL调优,常用算法

目前shell已学完

shell
20220701
1./bin/sh是指向/bin/bash的软链接,用来解析shell脚本
2.$是变量符号,后跟变量名称
3.export $var 表示将var变量全局化
4.$n $0表示脚本名,$1-9表示第N个变量
5.$# 表示参数个数
6.$* 表示所有输入的参数,作为一个整体
7.$@ 表示所有输入的参数,作为个体
8.$? 测试上一条命令是否成功执行;返回0表示正常,其他表示错误;
9.expr 3 + 2 表示计算3+2;expr用来运算,后边的参数之间必须有空格,expr可以嵌套,但是一般不用;
10.s=$[(2+3)*4] ;var=$[] 这种格式也可以用来初始化变量;
11.[] 条件判断,中间写条件,操作符包含:-ge 大于等于 -gt 大于 -lt 小于 -le 小于等于 -ne 不等于 -f 是否文件 -d 是否目录 -e 是否存在 -r 可读权限 -w -x
    判断大小时,中间参数,必须前后空格    判断文件时,参数需要前后空格
    多条件判断,可以用&&和||表示与和或
补充:
shell是一个命令行解析器,接收应用程序或用户命令,调用系统内核。
Linux架构:由内而外是硬件>Linux内核>shell>应用程序
脚本以  #!/bin/bash  开头是用来指定解析器的
touch 用来修改文件的时间属性,如文件不存在,则新建空文件

-----------------------------------------------------------------------------------------------------------

20220702
1.流程控制
1.1    if判断
        if [ 条件 ];then
            程序
        fi
        或者
        if [ 条件 ]
            then
            程序
        fi
    注意事项:if后要有空格;中括号条件两侧要有空格
1.2    case判断
        case $变量名 in
            "值1")
                程序
            ;;
            "值2")
                程序
            ;;
            *)
                默认程序
            ;;
        esac
1.3    for循环
    1.    for(( 初始值;条件控制;变量变化 ))
            do
                程序
            done        
    2.    for 变量 in 值1 值2
            do
                程序
            done
1.4    while循环    
        while [ 条件 ]
            do
                程序
            done
2.read读取控制台输入 -p后跟提示语 -t后跟时间(秒),表示读取几秒内输入的字符;最后参数表示读取的值赋给的变量名
3.系统函数basename string/pathname [suffix]    截取指定路径的文件名,suffix表示去掉指定后缀,suffix为可选项
4.系统函数dirname 文件绝对路径    截取指定路径的目录名
5.自定义函数
    基本语法
    [ function ] funname[()]
    {
        Action;
        [return int;]--一般用$?判断是否执行成功
    }
    
    注意:必须在调用前声明,shell是逐行执行,不是先编译再执行

6.shell分割工具:cut [选项参数] filename,默认分隔符是制表符;
-f 列号,提取第几列,获取多列可以用逗号,例如1,2(还可以从指定列到末尾,例如‘1-’,表示从第1列到末尾);
-d 指定分隔符
该工具可以使用‘|’切割上一个命令的返回值,此时后边不需要跟filename参数

7.shell流编辑工具:sed [选项参数] 'command' filename
常用选项参数:-e    直接在指令列模式上进行sed的动作编辑
常用命令功能:a     新增,a的后面可以接字串,在下一行出现  --sed "2a dyl" file.txt 表示在第2行下边新增dyl(源文件不改变)
    d    删除    --sed "/wo/d" file.txt 表示删除包含"wo"的所有行
    s    查找并替换    --sed "s/wo/ni/g" file.txt 表示将文件中"wo"替换为"ni","/g"表示全局替换
sed -e "2d" -e "s/wo/ni"    多个命令时要用到-e参数

8.shell文本分析工具:awk [选项参数] '匹配规则1{执行命令1} 匹配规则2{执行命令2}...' filename
常用选项参数:-F    分隔符
           -v    用来定义变量
匹配规则:在第一行加字符可以用'BEGIN{}',在末尾行新增一行可以用'END{}'
内置变量:FILENAME 文件名
    NR已读的记录数
    NF浏览记录的域的个数(相当于切割后,列的个数)
9.shell排序工具:sort(选项)(参数)
常用参数:-n    按照数值大小
    -r    倒叙
    -t    指定分隔符
    -k    指定待排序的列
例:sort -t : -nrk 2 test    表示test文件用':'分割,指定第二列倒叙数值排序

练习
1.体验if语句结构
if [ $1 -eq 1 ];then
    echo '1'
elif [ $1 -eq 2 ];then
    echo '2'
fi
2.---$*与$@一致;"$*"不同,"$*"表示一个整体;
for i in $*
do
    echo $i
done
for i in $@
do
    echo $i
done
3.体验自定义函数结构,并调用
function sum()
{
    s=$[$1 + $2]
    echo $s
}

read -p "input your parameter1:" p1
read -p "input your parameter2:" p2
sum $p1 $p2
4.计算test文件第二列的和并输出(空格分隔)
awk -F ' ' '{sum+=$2} END{print sum}' test


至此完结!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值