Ubuntu & Android 技巧

LiuYinChina發表於2013-09-30
過濾空行
grep "^\s*[^# \t].*$" filename

#C++模式註釋的刪除。
#Delete the line begins with //
#首先刪除//在行首的行
sed -i '/^[ \t]*\/\//d' $file

#Delete the line ends with //
#注意已經除去了 //在行首的情況,下面匹配除去URL的//部分,因為程式碼中有一部分中有
#URL,形如fun("ftp://")
sed -i 's/\/\/[^"]*//' $file

#刪除以C語言中註釋只在一行的行
sed -i 's/\/\*.*\*\///' $file

#Delete the lines between /* and */
#刪除C語言中註釋跨行的情況
sed -i '/^[ \t]*\/\*/,/.*\*\//d' $file

#ifndef __ARM_NEON__
#error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
#endif

檢視so檔案的函式列表
find -name "*.so" | xargs -t -I {} nm -D {}
find -name "*.so" | xargs -t -I {} objdump -tT {}

檢視 so 的依賴庫
find -name "*.so" | xargs -t -I {} objdump -x {} | grep NEEDED

Native 層啟動 APK
system("am start -n com.liuyin.MediaPlayer/.MainActivity -d http://xxx.com/xxx.ts");

wget 下載重定向檔案,儲存為 Save.data
wget -d -O Save.data "http://www.redirect.com/"   #wget 可以重定向,只需要加引號即可

http://pan.baidu.com/share/home?uk=xxxxxx,我懂的,

for((i=1;i<=10;i++)); do echo $(expr $i); done;

只找當前目錄(除 .)
find -maxdepth 1 ! -name '.' -type d

列出當前目錄下子目錄名
for i in $(find -maxdepth 1 ! -name '.' -type d); do basename $i; done;

列出當前目錄下子目錄名分別打包
for i in $(find -maxdepth 1 ! -name '.' -type d); do tar jcvf $(basename $i).tar.bz2 $i; done

socat 模擬 http client(注意read.txt一定要符合HTTP標準,否則得不到正確結果)
socat -u open:request.txt!!open:response.txt,create,trunc tcp:www.baidu.com:80
socat -u open:request.txt!!open:response.txt,create,append tcp:www.baidu.com:80

socat 模擬 http server
socat open:index.txt!!open:request.txt,create,append tcp-listen:80,reuseaddr,fork

socat 傳送檔案後,就把連線斷了,模擬 http client 不太方便。可使用 netcat 模擬 http client。

netcat 模擬 http client(注意read.txt一定要符合HTTP標準,否則得不到正確結果)
type request.txt | nc baidu.com 80 > response.txt

vi 替換
g/str1/s//str2/g

任意目錄 NDK 編譯
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

當前 activity
adb shell dumpsys activity activities | grep 'Recent #0'

sudo apt-get install ia32-libs build-essential

dpkg -l | grep xxxxsudo apt-get remove --purge xxxx

adb shell dumpsys activity intentsadb shell dumpsys activity broadcasts
adb shell dumpsys activity providers
adb shell dumpsys activity servicesadb shell dumpsys activity activities
adb shell dumpsys activity processes
ifconfig eth0
ifconfig eth0 192.168.0.125
ifconfig eth0 promisc
ifconfig eth0 -promisc
ifconfig eth0 hw ether 00:14:CC:00:1A:00
dhclient
ifup eth0
ifdown

1、設定屬性
adb shell getprop media.stagefright.cache-params
adb shell setprop media.stagefright.cache-params 1572864/20971520/15000000

2、Android logcat, 列印 XXX 或者 YYY
adb logcat -c; adb logcat | grep -E '^|XXX|YYY';
adb logcat -c; adb logcat -v time 2>&1 | tee logcat.txt;
adb -s 192.168.1.32 logcat -c; adb-s192.168.1.32 logcat | grep -E '^|XXX|YYY'
adb -s emulator-5554 logcat -c; adb -s emulator-5554 logcat | grep -E '^|XXX|YYY'

3、批量 push 到要 push 的資料夾下
find -name "libstagefright*.so" -o -name "libmediaplayerservice.so" | xargs -t -I {} adb push {} /system/lib;
find . -type f -mtime -1 | xargs -t -I {} adb push {} /system/bin;
find $OUTBIN/ -type f -mmin -10 | xargs -t -I {} adb -s 10.9.44.138:5555 push {} /system/bin;

4、啟動某應用
adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com/
adb shell am start -n com.liuyin.MediaPlayer/.MainActivity -d http://www.xxxx.com/xxxx.ts

5、掛載目錄
adb shell mount -o remount, rw /system

6、抓屏
export PNG_FILE=/data/$(date +%Y_%m_%d_%H_%M_%S).png; adb shell screencap -p ${PNG_FILE}; adb -s 10.9.44.138:5555 pull ${PNG_FILE} .;

7、在當前目錄下搜尋文字 'TEXT'(含子目錄)
grep -r -n 'TEXT' *

8、排除指定文字
grep -v -e "noprint_a" -e "dont_show" text.txt

9、批量替換檔案內容
find -type f | xargs sed -i "s/source/target/g"for f in $(find $1 -type l); do [ -e $f ] && sed -i "s/source/target/g" $f; done

10、批量替換檔名
rename 's/source/target/' *;
for i in $(find -name *.hh); do mv $i $(echo $i|sed 's/\.hh/\.h/'); done

11、顯示目前所有檔案系統的可用空間及使用情形
df -h
顯示當前資料夾空間
du -sh *

12、User AgentMozilla/5.0 AppleCoreMedia/1.0.0.8J2 (iPad; U; CPU OS 6_0 like Max OS X; en-us) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25

13、Ubuntu 64 執行 32 位程式
sudo apt-get install ia32-libs

14、JAVA 訪問 SystemProperties
a.選擇 Eclipse 工程屬性頁(Properties)->Java Build Path->Libraries->Add External JARs...->選擇AndroidSDK\platforms\android-##\data\layoutlib.jar->OK
b.增加 import android.os.SystemProperties;
c.SystemProperties.set("MediaPlayer.MediaURL", "http://192.168.0.11:80/MediaFile.ts");
d.SystemProperties.get("MediaPlayer.MediaURL");

15、刪除無效軟連線
a.symlinks -d -r ./
b.for f in $(find $1 -type l); do [ -e $f ] && rm -f $f; done

16、刪除 '.svn' 和 '.repo' 檔案
find -name '.svn' -o -name '.repo' | xargs rm -rf

17、新增使用者
sudo useradd -m -s /bin/bash yourname

18、新增管理員許可權在管理員帳戶下,
sudo adduser <username> sudo

19、刪除軟體
sudo apt-get remove --purge softwarename

20、Linux下檢視 tcp 連線數及狀態
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

21、登出其他已登陸使用者
pkill -kill -t pts/1

22、除錯 Native 程式碼用 ndk-build 編譯 HelloWorld, Eclipse Export 匯出 apk, 安裝 apk,ndk-gdb-py --project=D:\Workspace\HelloWorld --start

相關文章