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