Liunx 常用命令


      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🇦🇨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 原路径 链接路径