Liunx 常用命令
================================================================================
1. 远程拷贝文件
---------------------------------------------------------------------------------
scp -r xyf@192.168.1.20:/home2/xyf/a20/android4.0 ./android/
2. 远程登录
---------------------------------------------------------------------------------
ssh droid05@192.168.1.23
convert L: /FS:NTFS // L 是你的盘符 格式化U盘,当你的盘大于4G ,想拷贝大于4G文件
3. 登录驱动配置文件
---------------------------------------------------------------------------------
make menuconfig ARCH=arm
选择平台为arm 默认的是x86 .
4. 打印信息
---------------------------------------------------------------------------------
adb shell logcat -b radio > logcat-radio.log --> 3g dongle
在preinstall.sh最后加入如下命令:
echo 8 > /proc/sys/kernel/printk
echo 1 > /sys/class/axppower/axpdebug
cat /proc/kmsg > /data/local/kmsg`date +%Y%m%d_%H%M%S` &
logcat > /data/local/logcat`date +%Y%m%d_%H%M%S` &
adb shell
ls | busybox grep drm
上述命令会在/data/local/logcat下生成LOG信息,以开机时间命名。
5. 我们的修改工具 sys_config1后,如果能不升级整个固件就让其生效
---------------------------------------------------------------------------------
修改sys_config1后,如果能不升级整个固件就让其生效
1>. 在android shell中将/dev/block/nanda mount到某个节点:
mount -t vfat /dev/block/nanda /mnt/nand
2>. 修改sys_config1后build固件,然后在lichee\tools\pack\out\bootfs下找到scrpt.bin和script0.bin
3>. 然后用adb连接后,将scritp.bin和script0.bin推到所mount节点的根目录下,替换原有同名文件:
adb push script*.bin /mnt/nand/
4>. 最后sync重启即可
adb shell
sync
reboot
6. 如何单独替换内核
---------------------------------------------------------------------------------
1>. android shell中将/dev/block/nanda mount到某个节点:
mount -t vfat /dev/block/nanda /mnt/nand
2>. 用adb连接后,将bImage直接push到所mount节点的linux目录下,替换bImage:
adb push bImage /mnt/nand/linux
3>. sync重启即可
adb shell
sync
reboot
7.git and repo 基本命令
---------------------------------------------------------------------------------
repo
========================
1>. repo status -> 查看工程下面所有git 状态
2>. repo branch -> 查看工程下面所以分支
3>. repo start <分支名称> --all ->创建repo分支
4>. repo checkout <分支名称> ->切换分支
5>. repo forall -c git remote -v ->查看远程分支
6>. repo forall -c git pull <远程分支> <本地分支> -> 同步远程分支到本地
7>. repo forall -c git merge <合并改过BUG分支>
8>. repo forall -c git branch -d <删除分支的名称>
9>. repo forall -c git checkout . -> 检出git 上的内容
10>. repo forall -c git checkout -b 分支名 ->该条命令会对repo下的project执行新建并切换branch的命令
11>. repo forall -c git diff <分支名称 -> <分支名称 +> ->比较两个分支的不同
repo forall -c 'pwd && git fetch exdroid' -> 更新服务器的,不会更改本地内容
repo forall -c 'pwd && git status' -> 验证每个分支的状态
repo forall -c git checkout -b <分支名> -> 切换对应的分支repo 下所有的分支
repo forall -c git remote -v -> 查看所有的原厂分支
repo forall -p -c 'git log --oneline --name-only --committer=cqq' //查看曾经修改过的文件
repo forall -c git config core.fileMode false //忽略权限修改
//更新,建议在更新前要建一个备份分支,
//这样即使新代码有问题,也可以切换会旧的代码分支出软件,新代码稳定后就可以把备份分支删除
repo checkout develop
repo forall -p -c git pull exdroid develop //android
repo forall -p -c git pull exdroid develop:develop //如果没更新到tag,用这个命令更新tag
repo forall -c 'pwd && git status' //显示状态
repo forall -p -c git pull lichee develop //lichee
repo checkout mybranch
repo forall -c git merge develop
//冲突标记,开始于: <<<<<<< HEAD
git cherry-pick commit-id //挑拣合并
git
========================
1>. git status -s
2>. git log --stat -> 查看log 信息 和 修改的内容
3>. git diff
4>. git diff --cached
5>. git diff HEAD
6>. git show ->查看历史修改 与git 无关
git show <commit id>
git rev-parse <分支名称> ->查看当前的conmit id值
git reflog ->引用日志
git show HEAD^ ->查看上一次提交的信息
git show d921970^ ->改次的第二次提交 ^ 与 ~等同
git show HEAD~3 -> HEAD^^^
git remote show 远程库名
7>. git log --online ->查看每次提交的哈希值
8>. git br -v ->查看分支最后一次提交的信息
9>. git add . ->添加当前git 下的所有修改的文件
10. git rm <文件名称> ->删除del 的文件
11. git ci -m "注释" ->提交修改的文件
12. git reset HEAD
13. git reset HEAD^3
14. git reset commit ->撤销指定版本
15. git rm --cached <file> ->删除暂存区中的文件,工作区不变
16. git checkout .
17. git checkout --<file> ->用暂存区的内容 替换 工作区的内容
18. git checkout HEAD . ->HEAD的内容 替换 暂存区和工作区的内容
19. git branch <新分支>
20. git branch -d <删除的分支> //如果分支没合并,删除会失败
21. git branch -D <删除的分支> ///即使分支没合并,也会删除
22. git reset --hard + id ->回到未来,之后的都删掉了
23. git checkout–b new_branch local_branch //切换到某个已经建立的本地分支local_branch,并且使用此分支初始化一个新分支new_branch。
24. git checkout –b new_branch remote_branch //切换到某个远程分支remote_branch,并且用此分支初始化一个新分支new_branch<本地分支>。
25. git checkout –b new_branch commit_id //切换到某个commit id,并建立新分支new_branch
26. git checkout –b new_branch tag //切换到某个tag,并建立新分支new_branch
27. git config --global user.name "John Doe"
28. git config user.name "John Doe"
29. git config --global user.email johndoe@example.com
30. git config user.email johndoe@example.com
31. git revert commit-id //还原指定版本的修改
32. git show // 显示最近的一次提交的内容
33. git show --name-only // 只显示修改的文件名,而不具体显示修改的行的内容
34. git tag //查看tag 一个里程碑
35. git tag v1.0 //新建一个tag
35. git tag -a v1.0.1 -m "注释" //带注释的tag
36. git tag -n<num> //查看带注释的tag <num> 查看最大的行数
37. git reset --soft 回到提前之前 多次 git commot --amend -m "新的注释" etc 悔棋 就查阅 p156 git指南
`find -name ""` or $(find -name "")
38. git whatchange -num //查看分支修改的文件
39. git clean -dn //确认是否删除
40. git clean -dxf //清除未加入版本控制的文件
41. git config --list
-----------------------------------------------------------------------------------------
git 对工作进度的保存
git stash 保存
git checkout xxx
git checkout xxx_
git stash pop 恢复
-----------------------
问题点:
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.
方法:
rm -f ./.git/index.lock
8. 查找命令 查看
---------------------------------------------------------------------------------
1. find ./ -name “string”
find . -type f | xargs sed -i 's/a31st/xxx/g'
2. grep "string" ./ -rn
3. cat /system/usr/device.info
4. cat /data/device.info
9. logcat
---------------------------------------------------------------------------------
基本命令
1. adb logcat -c 清除所有以前的日志
2.adb logcat -d 这个命令是在时间上倒过来用的 就是你先操作然后敲这个命令 打出来的log就是你刚操作那段时间的log 而且自动退出log模式
3.adb logcat -s “xxx” 这个是设置过滤用的 比如你只想查看FirstDemo的日志 就替换最后的XXX
过滤
1.adb logcat ActivityManager:I MyApp:D *:S
eg: ActivityManage:
I/ActivityManager( 585): Starting activity: Intent {action=android.intent.action...}
上面表达式的最后的元素 *:S ,,是设置所有的标 签为”silent”,所有日志只显示有”View” and “MyApp”的,用 *:S 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出到日志中.
2.adb logcat *:W
上面的过滤语句指显示优先级为warning或更高的日志信息
3. adb logcat -v thread -> [adb] logcat [-v ]
下面是用 thread 来产生的日志格式:
需要注意的是你只能-v 选项来规定输出格式 option.
4. 查看 可用日志缓冲区
Android日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。为了得到 日志信息,你需要通过-b 选项来启动logcat 。如果要使用循环缓冲区,你需要查看剩余的 循环缓冲期:
radio — 查看缓冲区的相关的信息.
events — 查看和事件相关的的缓冲区.
main — 查看主要的日志缓冲区
[adb] logcat [-b ]
下面的例子表示怎么查看日志缓冲区包含radio 和 telephony信息:
adb logcat -b radio
5. logcat -v time -s "xxx"
10.内核打印级别
---------------------------------------------------------------------------------
echo 8 > proc/sys/kernel/printk 可以看到所有内核打印
echo 1 > /sys/class/axppower/axpdebug
logcat -v time > /sdcard/log1 $
cat /proc/kmsg > /sdcard/kmsg1 & 定向到sd 卡上
11. chiphd search
---------------------------------------------------------------------------------
git clone ssh://builder@192.168.1.22/home2/builder/release/chiphd_script/zzzzz-chiphd
git clone ssh://droid05@192.168.1.23/home/droid05/git/clone.git/llf-chiphd.git
git clone ssh://droid05@192.168.1.23/home/droid05/git/clone.git/sugar-chiphd.git
git clone ssh://git@192.168.1.20/home/git/git_repo/chiphd_devices/a3xBox/4.2/mars_g1000.git
git clone ssh://boxbuilder@192.168.1.23/home2/boxbuilder/git/project/chiphdDevices.git
git clone ssh://git@192.168.1.20/git_repo/chiphd_devices/a31s/4.4/chiphdDevices.git
git clone ssh://boxbuilder@192.168.1.23/home2/boxbuilder/git/a3142/chiphdDevices.git //a31 中诺
ssh://hbc@192.168.1.20/home2/hbc/git/winners/winners.git //F10
back
------------
i15
git clone ssh://hbc@192.168.1.20/home2/hbc/git/i15/android.git
git clone ssh://hbc@192.168.1.20/home2/hbc/git/i15/lichee.git
i12
git clone ssh://hbc@192.168.1.20/home2/hbc/git/sugar-a20/android.git
git clone ssh://hbc@192.168.1.20/home2/hbc/git/sugar-a20/lichee.git
// 脚本库文件 下载全志sdk
git clone ssh://builder@192.168.1.22/home2/builder/release/chiphd_script
./download_chiphd_AOSP_autoScan.sh --allwinner
cp chiphd_script/tar_repo.sh .
public:
git clone ssh://git@192.168.1.20/home2/xyf/git/H8/chiphdDevices.git
12.git patch
---------------------------------------------------------------------------------
1. git format-patch -1 单次提交做成patch
使用之前先检查补丁的可用性:
git apply --check newpatch.patch 先检查patch 文件
git apply --stat newpatch.patch 检查能否应用成功
引用patch
patch_chiphd_ap 0001-add-osd-usb-insmod-and-rrmod.patch 打补丁 但不自动提交
git am --signoff < newpatch.patch 打补丁,使用-s或--signoff选项,可以commit信息中加入Signed-off-by信息)
////////////////////////////////////////////////////////////////////
//创建补丁, 1b6d 是hash值
git diff 1b6d > my.patch
git format-patch 1b6d //更正式
git format-patch -3 //依次创建前3次提交的补丁
//打补丁
git apply < my.patch
//在实际打补丁之前,可以先用git apply --check 查看补丁是否能够干净顺利地应用到当前分支中
git apply --check 0001-seeing-if-this-helps-the-gem.patch
git apply 0001-seeing-if-this-helps-the-gem.patch //然后打补丁
13. 创建项目工程
-------------------------------------------------------------------------------------
createProject.sh
14.
-------------------------------------------------------------------------------------
tar zcvf ../a13_eclipse.src.tar.gz `cat .classpath | grep classpathentry | sed 's%.*path="\([^"]*\)".*$%\1%' | sed 's%net_out%%'`
15.
---------------------------------------------------------------------------------------
悔棋 就查阅 p156 git指南
介绍 git reset --soft 回到提前之前 多次 "新的注释" etc
16. tar 包过滤
---------------------------------------------------------------------------------------
tar zcvf xxx.tar.gz /etc --exclude= + 文件 + 文件夹 是针对当前目录的
tar zcvf ../11.tar.gz ./ --exclude=1/2/3 --exclude=.git
17. 获取android 源代码 只含有 *.java
---------------------------------------------------------------------------------------
1. cp development/ide/eclipse/.classpath .
2. TFiles=$(sed -n '/path="/p' ./.classpath | sed 's%.*path="\([^"]*\)".*$%\1%')
3. ls $TFiles 1>/dev/null 出错,删掉改行
4. tar zcvf ../a13_eclipse.src.tar.gz $TFiles .classpath
解压后导入eclipse 查看源码 并调试。
18. sed 介绍
------- ----------------------
sed -i 's/\r//' + filename 替换\n
19 shell shell调试 http://www.cnblogs.com/softwaretesting/archive/2012/02/06/2339671.html
1.echo
-------------------------
字背景颜色范围:40 - 49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
-----------------------
字颜色:30 - 39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
-----------------------
ANSI控制码
\33[0m 关闭所有属性
\33[01m 设置高亮度
\33[04m 下划线
\33[05m 闪烁
\33[07m 反显
\33[08m 消隐
\33[30m -- \33[37m 设置前景色
\33[40m -- \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
----------------------------
eg:
echo -e "\033[31m xxx \033[0m"
echo -e "\e[1;32m xxx \e[0m "
2.
-----------------------------------
19. getprop sys.mem.opt
-----------------------------------
a23 1G和512M自适应,
adb shell
getprop sys.mem.opt
1G的结果为false
512M的结果为true
20.ssh
---------------------------------
使用ssh-keygen设置ssh无密码登录 <http://blog.csdn.net/hustpzb/article/details/8230454>
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。
github的SSH配置如下:
一 、
设置Git的user name和email:
$ git config --global user.name "xuhaiyan"
$ git config --global user.email "haiyan.xu.vip@gmail.com"
二、生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥:
$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com”
按3个回车,密码为空。
Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………
最后得到了两个文件:id_rsa和id_rsa.pub
3.添加密钥到ssh:ssh-add 文件名
需要之前输入密码。
4.在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。
打开https://github.com/ ,登陆xuhaiyan825,然后添加ssh。
5.测试:ssh git@github.com
The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.
ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.
三、 开始使用github
1.获取源码:
$ git clone git@github.com:billyanyteen/github-services.git
2.这样你的机器上就有一个repo了。
3.git于svn所不同的是git是分布式的,没有服务器概念。所有的人的机器上都有一个repo,每次提交都是给自己机器的repo
仓库初始化:
git init
生成快照并存入项目索引:
git add
文件,还有git rm,git mv等等…
项目索引提交:
git commit
4.协作编程:
将本地repo于远程的origin的repo合并,
推送本地更新到远程:
git push origin master
更新远程更新到本地:
git pull origin master
补充:
添加远端repo:
$ git remote add upstream git://github.com/pjhyett/github-services.git
重命名远端repo:
$ git://github.com/pjhyett/github-services.git为“upstream”
21.vi 加密
--------------------------------
用命名 X 来保存文件会进行加密。
eg:
:X
请输入密码
解密方法:
:set key= //设置key 未空
:w
:x
解密完成
忘记密码,这个还没办法解决。
22. tar 解包 压缩命令集 <http://blog.163.com/aragorn_king/blog/static/188005152201162753126735/>
--------------------------------
23.apktools
--------------------------------
DoChiphdPreApk ~/a31box_g2000/android/device/softwinner/xx/preApk
24.touch <http://www.cnblogs.com/peida/archive/2012/10/30/2745714.html> 相关参数说明
--------------------------------
//更新所有 c and c++
find $path -name '*.[HhCc]*' | xargs touch -c
25. adb 占用问题
--------------------------------
一、命令:adb nodaemon server 查看哪个端口被占用
二、命令:netstat -ano | findstr "5037" 列出端口被占用的进程
三、在任务管理器里找到对应的占用端口的进程,然后杀掉进程。
或者用命令杀掉进程: ntsd -c q -p ""
26. ln -s 原路径 链接路径