一些 Linux 下的脚本小工具

1、查询 Android 手机的前台 Activity

#!/bin/bash

if [ $# -eq 0 ]; then
    adb shell "dumpsys activity activities | grep mResumedActivity"
elif [ $1 = "-s" ]; then
    adb -s $2 shell "dumpsys activity activities | grep mResumedActivity"
elif [ $1 = "-e" ]; then
    adb -e shell "dumpsys activity activities | grep mResumedActivity"
elif [ $1 = "-d" ]; then
    adb -d shell "dumpsys activity activities | grep mResumedActivity"
else
    echo "Invalid args: $*"
fi

查询 Android 手机的前台 Fragment

#!/bin/bash

if [ $# -eq 0 ]; then
    echo "Error: Please input package name!"
elif [ $# -eq 1 ]; then
    adb shell dumpsys activity $1 | grep --color "Active Fragments:"
elif [ $1 = "-s" ]; then
    adb -s $2 shell dumpsys activity $3 | grep --color "Active Fragments:"
elif [ $1 = "-e" ]; then
    adb -e shell dumpsys activity $2 | grep --color "Active Fragments:"
elif [ $1 = "-d" ]; then
    adb -d shell dumpsys activity $2 | grep --color "Active Fragments:"
else
    echo "Invalid args: $*"
fi

2、自动 wait-for-device 的 adb

#!/bin/bash

#/usr/bin/adb wait-for-device $*

realadb=~/Android/Sdk/platform-tools/adb

if [[ $1 = --* ]]; then
    $realadb $*
elif [ $1 = "devices" ]; then
    $realadb devices
elif [ $1 = "kill-server" ]; then
    $realadb kill-server
elif [ $1 = "start-server" ]; then
    $realadb start-server
elif [ $1 = "-s" ]; then
    $realadb -s $2 wait-for-device ${@:3}
elif [ $1 = "-e" ]; then
    if [ $2 = "-d" ]; then
        $realadb -e -d wait-for-device ${@:3}
    else
        $realadb -d wait-for-device ${@:2}
    fi
elif [ $1 = "-d" ]; then
    $realadb -d wait-for-device ${@:2}
else
    $realadb wait-for-device $*
fi

3、Wifi 连接 adb

#!/bin/bash

#ip=`adb -d shell ifconfig | grep "inet addr:10.12.172" | grep Bcast | awk -F: '{print $2}' | awk '{print $1}'`
ip=`adb -d shell ip addr show wlan0 | grep -e wlan0$ | cut -d " " -f 6 | cut -d/ -f 1`
echo -e "\033[31mip = $ip \033[0m"
adb -d devices;
sleep 1;
adb -d tcpip 5555;
sleep 1;
adb -d connect $ip:5555
sleep 1;

echo "============ after adb devices ============="
adb -d devices

4、adb push 文件夹或文件

#!/bin/bash

path=$1
target=${path##*/system/}

if [ -d $path ]; then
    adb push $path/* /system/$target/
elif [ -f $path ]; then
    echo "pushing $path /system/$target"
    adb push $path /system/$target
#elif [ -L $path ]; then
#    echo "pushing $path /system/$target"
#    adb -e -d push $path /system/$target
fi

5、adb 依次 push 文件夹下的子文件夹或文件

#!/bin/bash

path=$1

for i in `ls $path`; do
    apush "$path/$i";
done

6、搜索文件夹

#!/bin/bash

find $(pwd) -type d -name $*

7、搜索文件

#!/bin/bash

find $(pwd) -type f -name "$*"

8、搜索 .git 文件夹

#!/bin/bash

find $(pwd) -type d -name ".git"

9、gitstat

#!/bin/bash

commit_1=HEAD^
commit_2=HEAD
filelist=""

if [ $# -gt "0" ]; then
    if grep -qE '^(([[:xdigit:]]*)|(\w*HEAD))(\^|~|[[:digit:]])*$' <<< "$1"; then
        echo "$1 is a commit."
        commit_1=$1^
        commit_2=$1

        if [ $# -gt "1" ]; then
            if grep -qE '^(([[:xdigit:]]*)|(\w*HEAD))(\^|~|[[:digit:]])*$' <<< "$2"; then
                echo "$2 is a commit."
                commit_1=$1
                commit_2=$2
                if [ $# -gt "2" ]; then
                    filelist=${@:3}
                fi
            else
                filelist=${@:2}
            fi
        fi

    else
        filelist=${@:1}
    fi
fi

echo filelist=$filelist

if [ "$filelist" = "" ]; then
    git diff $commit_1 $commit_2 --stat
else
    git diff $commit_1 $commit_2 --stat $filelist
fi



#if [ $# = "0" ]; then
#    git diff HEAD^ HEAD --stat
#elif [ $# = "1" ]; then
#    git diff $1^ $1 --stat
#elif [ $# = "2" ]; then
#    git diff $1 $2 --stat
#else
#    git diff $1 $2 --stat ${@:3}
#fi

10、gitdifftool

#!/bin/bash

commit_1=HEAD^
commit_2=HEAD
filelist=""

if [ $# -gt "0" ]; then
    if grep -qE '^(([[:xdigit:]]*)|(\w*HEAD))(\^|~|[[:digit:]])*$' <<< "$1"; then
        echo "$1 is a commit."
        commit_1=$1^
        commit_2=$1

        if [ $# -gt "1" ]; then
            if grep -qE '^(([[:xdigit:]]*)|(\w*HEAD))(\^|~|[[:digit:]])*$' <<< "$2"; then
                echo "$2 is a commit."
                commit_1=$1
                commit_2=$2
                if [ $# -gt "2" ]; then
                    filelist=${@:3}
                fi
            else
                filelist=${@:2}
            fi
        fi

    else
        filelist=${@:1}
    fi
fi

echo filelist=$filelist

if [ "$filelist" = "" ]; then
    gitstat $commit_1 $commit_2
    echo git difftool $commit_1 $commit_2
    git difftool $commit_1 $commit_2
else
    gitstat $commit_1 $commit_2 $filelist
    echo git difftool $commit_1 $commit_2 $filelist
    git difftool $commit_1 $commit_2 $filelist
fi



#if [ $# = "0" ]; then
#    gitstat
#    git difftool HEAD^ HEAD
#elif [ $# = "1" ]; then
#    if $has_commit_1; then
#        gitstat $1
#        git difftool $1^ $1
#    else
#        git difftool HEAD^ HEAD $1 # with filename
#    fi
#elif [ $# = "2" ]; then
#    if $has_commit_2; then
#        gitstat $1 $2
#        git difftool $1 $2
#    else
#        git difftool $1^ $1 $2 # with filename
#    fi
#else
#    git difftool $1 $2 ${@:3} # with filename
#fi

11、git 搜索文件历史

#!/bin/bash

git log --name-status -- '*'$1'*' ${@:2}

12、远程 Windows

#!/bin/bash

rdesktop -g 1600x900 -P -z -x l -r sound:off -u account -p pw 111.111.111.111:3389

13、解锁 Android 手机

#!/bin/bash

ret=`adb -e -d shell dumpsys power | grep "Display Power: state="`
echo $ret
if [[ $ret = "Display Power: state=ON" ]]; then
    echo "ON -> unlock"
else
    echo "OFF -> ON -> unlock"
    adb -e -d shell input keyevent 26
fi

adb -e -d shell input swipe 500 500 500 100

14、Android 手机下滑

#!/bin/bash

adb -e -d shell input swipe 500 500 500 0

15、Android 手机上滑

#!/bin/bash

adb -e -d shell input swipe 500 500 500 2000

16、自动创建 Android 源码 out 目录链接

#!/bin/bash

if [ $TARGET_PRODUCT ];then
    echo "TARGET_PRODUCT = $TARGET_PRODUCT"
else
    echo "TARGET_PRODUCT IS NOT EXISTS"
fi

if [ -z $TARGET_PRODUCT ];then
    echo "TARGET_PRODUCT is empty"
else
    croot
    if [ ! -d "out" ]; then
        dirname=/HDD/REAL-OUT/$(basename `pwd`)-out-$TARGET_PRODUCT-$TARGET_BUILD_VARIANT
        if [ ! -d $dirname ]; then
            mkdir $dirname
        fi
        ln -s $dirname out
    fi
fi

Java 环境变量设置

if [ -d $HOME/java/jdk ];then
    JAVA_HOME=$HOME/java/jdk/bin
    PATH="$JAVA_HOME:$PATH"
fi

17、切换到 jdk7

#!/bin/bash

cd ~/java
rm jdk
ln -s java7 jdk

18、切换到 jdk8

#!/bin/bash

cd ~/java
rm jdk
ln -s java8 jdk
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值