美文网首页
Shell知识以及常用的脚本

Shell知识以及常用的脚本

作者: 放羊娃华振 | 来源:发表于2019-12-04 13:08 被阅读0次
    1. 获取某个文件夹下的所有文件名(含文件夹),并显示
    
    #!/bin/sh  
    #============ get the file name ===========  
    Folder_A="/Users/tal/Desktop/测试升级-1204/低版本/"  
    for file_a in ${Folder_A}/*
    do  
        temp_file=`basename $file_a`  
        echo $temp_file  
    done
    

    2、若要去掉文件名的后缀(假如该文件夹下的所有文件为.txt格式),则代码为

    
    #!/bin/sh  
    #============ get the file name ===========  
    Folder_A="/Users/tal/Desktop/测试升级-1204/低版本/"  
    for file_a in ${Folder_A}/*
    do  
        temp_file=`basename $file_a  .txt`  
        echo $temp_file  
    done
    

    3、如果要输出到一个文件的话也可以重定向到一个文件中去

    #!/bin/sh  
    #============ get the file name ===========  
    Folder_A="/Users/tal/Desktop/测试升级-1204/低版本/"  
    Output_file="output.txt"  
    #这里用于清空原本的输出文件,感觉 : 这个符号用处挺大,shell的学习还是要多用才是  
    : > $Output_file                                                                                                                                            
    for file_a in ${Folder_A}/*
    do  
        temp_file=`basename $file_a`  
        echo $temp_file >> $Output_file  
    done
    

    4、增加了传入文件路径

    #!/bin/sh  
    #============ get the file name ===========  
    echo -e "请输入你要读取的文件夹路径\n当前路径为${PWD}"  
    read InputDir  
    echo "你输入的文件夹路径为${InputDir}"  
    echo -e "请输入你要将数据输出保存的文件路径n当前路径为${PWD}"  
    read OutputFile    
    echo "输出保存的文件路径为${OutputFile}"  
    : > $OutputFile   #清空OutputFile  
    #循环读取文件夹名  
    for file_a in ${InputDir}/*
     do  
        temp_file=`basename $file_a`  
        echo $temp_file >> $OutputFile  
    done
    

    5、脚本安装Folder_APK目录的apk文件到手机

    #============ get the file name ===========  
    Folder_APK="/Users/tal/Desktop/测试升级-1204/低版本/" 
    # basepath=$(cd `dirname $0`; pwd)
    # echo 当前路径:$basepath
     
    for file_a in ${Folder_APK}/*
    do  
        temp_file=`basename $file_a`  
        echo $temp_file  
        adb install -r -d $file_a
    done
    

    6、拷贝脚本到apk目录下,安装改目录下apk大屏手机

    #!/bin/sh 
    
    #============ get the file name ===========  
    Folder_APK=$(cd `dirname $0`; pwd)
    echo 当前路径:$Folder_APK
     
    for file_a in ${Folder_APK}/*
    do  
        temp_file=`basename $file_a`  
        
         if [[ $temp_file =~ apk$ ]]; then
             echo '开始安装=>'$temp_file; 
            adb install -r -d $file_a;
            echo ------------------------------------------
         else 
            echo $temp_file'=>不是apk文件,无需安装';
         fi
        
    done
    

    7、查看app版本号的脚本信息

    #!/bin/sh 
    
    #============ get the file name ===========  
    arr=("com.qingke.aitv.setting" "com.tongxue.aitv.app" "com.komect.skill.simple" "com.tongxue.aitv.voiceassistant" "com.qingke.aitv.qklauncher")
    echo ---------------------开始查看包名------------------------------
    for value in ${arr[@]}
    do
    echo '查看包名=>'$value
    adb shell pm dump $value | grep "versionCode";
    echo ---------------------------------------------------------
    done
    echo ---------------------结束查看包名------------------------------
    

    8、shell脚本下载文件

    curl -O http://files/test.aar
    

    9、使用8下载的时候,发现要登录等验证比较麻烦,所以我就想直接让浏览器打开指定的地址

    //Mac:
    open 'https://www.jianshu.com/u/b1e83fac19e0'
    
    //Linux:
    x-www-browser 'https://www.jianshu.com/u/b1e83fac19e0'
    
    //Windows:
    cmd /c start https://www.jianshu.com/u/b1e83fac19e0
    
    //Mac下利用google浏览器打开指定地址
    open -a 'Google Chrome' https://www.jianshu.com/u/b1e83fac19e0
    

    10、下载maven上的aar。必须使用谷歌浏览器&&maven是登录状态

    #!/bin/sh 
    
    # sleep 1 睡眠1秒
    # sleep 1s 睡眠1秒
    # sleep 1m 睡眠1分
    # sleep 1h 睡眠1小时
    
    aar_version=1.0.0.13
    echo 配置AAR版本号:$aar_version
    ulr_base=http://192.168.0.1/repository/xrsqkmaven/com/xesqk/bundle/support/business
    echo 配置ulr_base:$ulr_base
    sleepTime=2s
    
    
    #============ 开始下载aar ===========  
    echo “============ 开始下载aar ===========”
    open -a 'Google Chrome' $ulr_base/libDownLoad-support/$aar_version/libDownLoad-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/sdkcom-support/$aar_version/sdkcom-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/playerbase-support/$aar_version/playerbase-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/crnbase-support/$aar_version/crnbase-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/libAbcCommon-support/$aar_version/libAbcCommon-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/sensorcore-support/$aar_version/sensorcore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/support-support/$aar_version/support-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/httpcore-support/$aar_version/httpcore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/dbcore-support/$aar_version/dbcore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/zipcore-support/$aar_version/zipcore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/glidecore-support/$aar_version/glidecore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/permission-support/$aar_version/permission-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/libAliyun-support/$aar_version/libAliyun-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/libMedia-support/$aar_version/libMedia-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/libLatex-support/$aar_version/libLatex-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/rncore-support/$aar_version/rncore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/workwidget-support/$aar_version/workwidget-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/aliosscore-support/$aar_version/aliosscore-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/exoplayer-support/$aar_version/exoplayer-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/workbase-support/$aar_version/workbase-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/libAilab-support/$aar_version/libAilab-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/studyappcom-support/$aar_version/studyappcom-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/common-support/$aar_version/common-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/nativequestion-support/$aar_version/nativequestion-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/rncorework-support/$aar_version/rncorework-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/ministryedu-support/$aar_version/ministryedu-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/moduleBook-support/$aar_version/moduleBook-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/nativeanswer-support/$aar_version/nativeanswer-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/rnanswer-support/$aar_version/rnanswer-support-$aar_version.aar
    sleep $sleepTime
    open -a 'Google Chrome' $ulr_base/qualitycultivate-support/$aar_version/qualitycultivate-support-$aar_version.aar
    sleep $sleepTime
    echo “============ 结束下载aar ===========”
    
    

    10、修改目录下.aar为.zip

    #!/bin/sh 
    
    #!/bin/bash
    oldext="aar"
    newext="zip"
    dir=$(eval pwd)
    for file in $(ls $dir | grep .$oldext)
            do
            name=$(ls $file | cut -d. -f1)
            mv $file ${name}.$newext
            done
    echo "change aar=====>zip done!"
    

    11、把aar中的其余cpu架构去掉,只保留armabi。可以使用该脚本,把所有的aar和脚本都拷贝到同一个目录下,执行脚本即可。备注:一个aar,只能执行一次,不然生成的压缩包中会有多层目录。

    #!/bin/sh 
    
    #!/bin/bash
    
    echo  -------------开始执行脚本,当前目录是$(eval pwd)
    
    # 打印佛祖
    function emptyPrint(){
    
    echo "\033[0;33m"
    cat<<EOT
    _oo0oo_
    088888880
    88" . "88
    (| -_- |)
    0\ = /0
    ___/'---'\___
    .' \\\\| |// '.
    / \\\\||| : |||// \\
    /_ ||||| -:- |||||- \\
    | | \\\\\\ - /// | |
    | \_| ''\---/'' |_/ |
    \ .-\__ '-' __/-. /
    ___'. .' /--.--\ '. .'___
    ."" '< '.___\_<|>_/___.' >' "".
    | | : '- \'.;'\ _ /';.'/ - ' : | |
    \ \ '_. \_ __\ /__ _/ .-' / /
    ====='-.____'.___ \_____/___.-'____.-'=====
    '=---='
     
     
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    佛祖保佑 iii 永不死机
    EOT
    echo "\033[m"
    }
    
    # 把aar名字修改为zip
    oldext="aar"
    newext="zip"
    dir=$(eval pwd)
    #"-------------开始修改aar为zip------------------------------------"
    for file in $(ls $dir | grep .$oldext)
            do
            # echo $file
            name=$(ls $file | cut -d. -f1 -f2 -f3 -f4)
            # echo $name
            mv $file ${name}.$newext
            done
    echo "--------------完成修改aar为zip------------------------------------"
    
    emptyPrint
    
    #"-------------开始解压zip文件------------------------------------"
    
    function deleDir(){
    #如果有文件夹,先删除
    for file in ./*
    do
        if test -f $file
        then
            msg=${file}是文件,不需要压缩处理
        fi
        if test -d $file
        then
            msg=${file}是目录需要删除
            rm -rf $file
            echo ----删除上次遗留的目录文件:$file
        fi
    done
    }
    
    deleDir
    
    
    # 解压zip文件
    for file in $(ls $dir | grep .$newext)
            do
            echo --------------文件解压中...$file
            name=$(ls $file | cut -d. -f1 -f2 -f3 -f4)
            # 解压
            unzip $file -d $name
            #解压完成后需要删除zip文件
            rm -rf $file
            done
    echo "--------------完成解压zip文件------------------------------------"
    
    emptyPrint
    
    #"-------------开始处理aar的架构------------------------------------"
    #该数组中的目录可以删除
    array=("arm64-v8a" "x86" "x86_64" "mips" "mips64")
    
    #替换的原始名称
    armeabiV7a="armeabi-v7a"
    #替换的目标名称
    targetName="armeabi"
    
    #判断传入的参数是否在数组里面  返回1,在数组里面 0:不在
    function isInArr(){
        
        isIN=0
        for element in ${array[@]}
         #也可以写成for element in ${array[*]}
        do
        if [ $1 = $element ] ; then
           isIN=1;
        fi
        done
        echo $isIN
        return $?;
    }
    
    #测试代码
    # resut=$(isInArr x86)
    # echo "结果:"${resut}开始处理吧
    
    #递归遍历文件目录,做修改名称和删除目录
    read_dir(){
        for file in `ls -a $1`
        do
            # 是目录
            if [ -d $1"/"$file ] ; then
    
                if [[ $file != '.' && $file != '..' ]] ; then
                
                    echo 目录文件:$1"/"$file
                    # 开始判断是armeabi-v7a文件,需要改名为armeabi,其余的cpu架构需要删除
                    # 名字改为armeabi
                    if [ $file = $armeabiV7a ] ; then
                    #    echo 需要改名字的文件
                    #    echo 修改的原始路径:$1"/"$file
                    #    echo 修改的目标路径:$1"/"${targetName}
                       mv $1"/"$file $1"/"${targetName}
                    #    echo 已经把${file}修改为${targetName}
                       echo -----被修改名字的目录:$1"/"$file
                    # 删除其余架构
                    elif [ $(isInArr $file) = 1 ] ;then
                    #   echo 是需要删除的目录:$1"/"$file
                      rm -rf $1"/"$file
                      echo -----被删除的目录:$1"/"$file
                    else
                      # echo 不需要改名字的文件
                      msg="是目录,不需要修改名字、或者删除"
                    fi
                    # 结束 判断是armeabi-v7a文件,需要改名为armeabi,其余的cpu架构需要删除
    
                    #递归调用 read_dir 方法
                    read_dir $1"/"$file
                fi
            # 是文件
            else
                # echo $1"/"$file
                msg="是文件,不需要打印"
            fi
        done
    }
    
    #测试目录 test
    # read_dir test
    #测试目录 /Users/tal/Desktop/armv7ToArm 
    # read_dir /Users/tal/Desktop/armv7ToArm
    #测试目录 当前目录
    read_dir $dir
    echo "--------------完成处理aar的架构------------------------------------"
    
    emptyPrint
    
    #"-------------开始根目录下的文件压缩成aar------------------------------------"
    #压缩成zip
    for file in ./*
    do
        if test -f $file
        then
            echo $file 是文件,不需要压缩处理
        fi
        if test -d $file
        then
            echo $file 是目录,需要压缩
            # 第一是压缩保存文件;第二给需要压缩的文件夹
            zip -r ${file}.aar  ${file} 
        fi
    done
    echo "--------------完成根目录下的文件压缩成aar------------------------------------"
    
    
    deleDir
    
    

    相关文章

      网友评论

          本文标题:Shell知识以及常用的脚本

          本文链接:https://www.haomeiwen.com/subject/clzkgctx.html