大数据技术学习笔记之linux基础3-软件管理与shell脚本开发


一、Linux软件管理
    -》压缩文件管理
        -》常见压缩格式
            -》zip/rar
            -》zip/.tar.gz/.tar.bz2
                -》unzip
        -》tar:打包或者解包的命令
        -》gzip
            -》后缀:.gz
            -》压缩:gzip filename
                压缩以后不保留源文件
            -》解压:gunzip filename.gz
        -》bzip2
            -》后缀:.bz2
        -》不支持压缩文件夹
    -》gzip打包并且压缩:tar -zcvf target.tar.gz  /directory
        -》解压:tar -zxvf source.tar.gz -C /target_dir
        .tar.gz  /  .tgz
        
        
        
    -》bzip打包并且压缩:tar -jcvf target.tar.bz2 /directory
        -》解压:tar -jxvf source.tar.bz2 -C /target_dir
    -》常用参数
        z:压缩为gzip格式
        j:压缩为bzip2格式
        c:打包
        x:解包
        v:显示
        f:档名 ,如果使用该参数,该参数必须是最后一个参数,该参数后面一定要跟文件名
        t:text用于查看压缩文件中的内容
            
    -》软件安装
        -》windows上的软件类型:exe、msi、文件夹、bat(脚本)
        -》Linux的软件类型:rpm、dpkg、文件夹、源码
        -》rpm:Redhat系列最常见的一种软件格式
            -》名称
                软件名称-版本.操作系统.操作系统版本.格式
                zlib-1.2.3-29.el6.i686.rpm
                zlib-1.2.3-29.el6.x86_64.rpm
                zlib-devel-1.2.3-29.el6.i686.rpm
                zlib-devel-1.2.3-29.el6.x86_64.rpm
                devel、lib、util
            -》查看:qa
                rpm -qa | grep java
            -》安装:ivh
                rpm -ivh ****.rpm
                rpm -ivh Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
            -》卸载:e
                rpm -e zlib-devel-1.2.3-29.el6.x86_64
                rpm -e  --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
                --nodeps:表示不考虑依赖
                
            -》查看某个文件的安装包:qf
                rpm -qf command
                rpm -qf /bin/ls
            -》查看某个软件的安装文件
                rpm -ql
            -》rpm无法解决软件安装依赖的问题
        -》yum:通过安装源进行安装,自动解决依赖的问题
            -》安装源=软件库(本地的、联网)
            -》查看:
                yum list : 查看当前yum源可安装的所有软件
                -》国内的:网易163、搜狐、阿里
                    Centos-6-Default.repo
                    /etc/yum.repo.d
            -》查看已安装的软件
                yum list installed
            -》卸载:
                yum remove [-y] soft_name
            -》安装:
                yum  install [-y] soft_name
        -》文件夹
            -》解压=安装
            -》配置=修改文件
            -》启动
        -》源码
            -》c/c++
                -》预编译:configure
                    ./configure --prefix=/usr
                -》编译:make
                -》安装:make install
            -》java    
                -》Maven
                    mvn complie
                    
                    
二、运算符与表达式
    -》环境变量
        -》全局环境变量:对所有用户都生效
            /etc/profile
        -》用户环境变量:只对该用户生效
            ~/.bash_profile
    -》Linux脚本中的变量
        -》定义变量的格式
            var=value
        -》打印变量
            echo ${var}
            $var
        -》变量类型:没有类型
            a=1
            a=aaaa
            a="hello world"
        -》预定义的变量
            -》$1-$9:表示脚本的第一个到第九个参数
            -》$0:表示当前脚本的名称
            -》$!:表示当前进程的pid
            -》$?:表示上一条命令执行的结果
                0:执行成功
                非0:不成功
            -》$#:参数总个数
            -》$@:所有参数,分割
            -》$*:所有参数,整体
        -》编写脚本:
            -》头部:#!/bin/bash
            -》内容
        -》定义变量:
            -》变量名称可读
            -》系统变量大写
    -》通配符与正则
        -》通配符
            *:匹配多个字符
            ?: 匹配单个字符
            ls  find cp
        -》正则表达式
            ^:表示以什么开头
            $:表示以什么结尾
            .:匹配单个字符
            *:匹配多个字符
                .*
            []:范围
                [0-9]:表示0-9之间的任意一个数字
                [a-z]
                [A-Z]
            \:转义
            
            -》支持的命令
                grep:过滤数据行
                    grep  'r..t' /etc/passwd
                    grep '[0-9]:[0-9]'  /etc/passwd
                sed:用于数据行的处理
                    sed 's/root/roooot/g' /etc/passwd
                    ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bc.*//g' | sed 's/ //g'
                awk:用于数据列的处理
                    awk -F ':' '{print $1}' passwd
                    awk '/^root/{print $3}' passwd
        -》逻辑连接符
            -》并列:&&,A执行成功的情况下,B才会执行
                ls /etc/passwdd && cat /etc/passwd
            -》或者:||,A执行失败的情况下,B才会执行
                ls /etc/passwd || cat /etc/passwd
            -》没有关系:;  A的结果不影响B
        -》数值运算
            -》中括号
                $[ a+b ] $[ $a+$b]
            -》圆括号
                $((a+b)) $(($a+$b))
        -》内置判断测试
            -》字符串
                 = 、 != 、 \>、 \< 、 -z、 -n
                [ $a = $b ]
                -z : 判断是否为空,如果为空返回true,如果不为空返回false
                -n:判断是否不为空,不为空返回true,如果为空返回false
                
                -z $a
            -》数值
                中括号:eq nq gt lt ge le
                [ $a -eq $b]
                圆括号:==,!= ,>,<
            -》文件判断:
                -e : 判断某个文件是否存在
                -f :判断是否为一个文件
                -d : 判断是否为一个目录
                -r :判断是否可读
                -w :判断是否可写
                -x : 判断是否可执行
            -》表达式逻辑连接符
                -a :与
                -o :或
                
                [] -a []
        -》时间日期命令
            -》查看时间:
                date yyyy-MM-dd HH:mm:ss
                date +"%Y-%M-%d"
                获取昨天的日期:date -d '1 days ago' +"%Y-%m-%d"
                                date -d '-1 day' +"%Y-%m-%d"
            -》设置时间
                date -s "YYYY-MM-dd HH:mm:ss"
                
    
三、shell脚本的开发
    -》批处理
    -》自动化执行
    -》开发:
        -》头部
            #!/bin/bash
        -》内容
            -》变量
            -》循环
                for
                while
            -》判断
                if
                case
            -》函数
            -》退出
                exit
        -》执行:
            -》执行文件:./filename.sh
                -》文件必须有可执行权限
                -》必须写头部
            -》通过命令执行文件
                sh
                bash
                
    -》for循环
    for  条件
    do
        exec command
    done
    
    for((i=1;i    do
        exec command
    done
    
    -》判断
        if []
        then
            exec
        elif []
        elif []
        else
        fi
        
        case 变量 in
        value1)
            exec command1;;
        value2)
            exec command;;
        *)
            exec command;;
        esac
        
        
四、Linux定时任务
    —》方便定时去执行Linux任务
    -》安装crontab
    -》编辑定时任务:crontab -e
        -》格式
            *        *        *        *        *    command/shell
            分        时        日        月        周
            00-59    00-23    1-31    1-12    0-7
            
        -》特殊情况
            每2小时:*        */2        *        *        *
            每天3,4,5点执行:00        3,4,5        *        *        *
            每天3到5点执行:*        3-5        *        *    *
        -》删除定时任务
            crontab -e 删除对应的任务即可
            crontab -r :删除所有定时任务
            
            
            















你可能感兴趣的:(大数据技术学习笔记之linux基础3-软件管理与shell脚本开发)