百度摘自各处
查看当前连接设备:
- 查看当前连接设备:
adb devices
- 如果发现多个设备:
adb -s 设备号 其他指令
举例:
adb -s devicel install xxx.apk
查看顶部Activity:
- windows环境下:
adb shell dumpsys activity | findstr "mFocusedActivity"
- Linux、Mac环境下:
adb shell dumpsys activity | grep "mFocusedActivity"
查看日志:
adb logcat
安装apk文件:
adb install xxx.apk
- 此安装方式,如果已经存在,无法安装;推荐使用覆盖安装:
adb install -r xxx.apk
- 比如直接RUN出来的包是test-only的无法安装,推荐使用-t:
adb install -r -t xxx.apk
卸载App:
adb uninstall com.test.app
- 如果想要保留数据,则:
adb uninstall -k com.test.app
传递文件:
- 往手机SDCard传递文件:
adb push 文件名 手机端SDCard路径
例如:
adb push test.jpg /sdcard/
- 从手机端下载文件:
adb pull /sdcard/xxx.txt
查看手机端安装的所有app包名:
adb shell pm list packages
启动Activity:
adb shell am start 包名/完整Activity路径
例如:
adb shell am start com.test.app/com.test.app.MainActivity
- 如果需要携带参数(携带一个Intent, Key 为name):
adb shell am start com.test.app/com.test.app.MainActivity -e name xxx
启动一个隐式的Intent:
adb shell am start -a "android.intent.action,VIEW" -d "https://www.google.com"
发送广播:
adb shell am broadcast -a "broadcastactionfilter"
- 如果需要携带参数(携带一个Intent,key为name):
adb shell am broadcast -a "broadcastactionfilter" -e name xxx
启动服务:
adb shell am startservice "com.test.app/com.test.app.MyService"
屏幕截图:
- 可以使用screencap命令来进行手机屏幕截图,例如:
adb shell screencap /sdcard/screen.png
录制视频:
- 可以使用screenrecord[options] filename命令来录制屏幕视频,例如:
adb shell screenrecord /sdcard/demo.mp4
目录操作
mkdir: 创建目录
- -p : 递归的创建目录 也就是可以创建多层目录
- 一次创建多个目录: mkdir {a,b,c,d,e,f}
- 一次创建 a b c d e f多个目录。
rmdir:删除一个空文件夹
cp:复制文件或者文件夹
- -a =-pdr
- -p 同时复制文件属性,比如修改日期
- -d 复制时保留文件链接
- -r: 复制文件夹时,递归复制子文件夹
- -l 不复制,而是创建指向源文件的链接文件,链接文件名由目标文件给出。
- note:可以在拷贝的同时重命名
mv:移动文件或者文件夹,可以在移动的时候重命名
rm :删除文件或者文件夹
- -r:递归删除
- -f:强制删除 即没有提醒
文件处理命令
ls :查看文件
- -l 以列表形式查看
- -h 以一种人性化的方式查看,也是文件的大小以合适的单位显示
- -a 查看所有文件,包括隐藏文件
- -i 显示出文件的i节点号
touch 文件名:
创建文件 可以一次创建多个文件,以空格隔开
cat :查看文件内容
- -n:带行号
tac:反向显示文件内容
more:分页查看文件内容
进入浏览模式后:
- f或者空格:下一页
- enter:一行一行往下翻
- q:退出
less:查看文件内容
- 空格翻页
- 回车换行
- pageup:上一页
- pagedown:下一页
- 上箭头:向上翻
- 下箭头:向下翻
- /搜索词 n向下找
head -n 文件名 :
查看文件前n行。缺省-n显示前10行
tail -n 文件名 :
查看文件的末尾几行
- -f: 动态显示文件末尾内容
ln: 链接命令
- -s创建软连接
- 硬链接和cp -p的区别是硬链接会同步更新
- 源文件如果丢失,硬链接依然存在。
- 硬链接和源文件的i节点相同。
- 硬链接不能夸分区,软连接可以跨分区。
- 硬链接不可以链接目录,链接可以
- 软连接文件具有的权限是ugo都是rwx
权限管理命令
chmod:修改文件或目录的权限,只有root和所有者可以更改
- [{ugoa}{+-=}{rwx}] [文件或目录]
- [mode=421] [文件或目录]
- -R 递归修改
- 权限的数字表示:
- r->4
- w->2
- x->1
例:
chmod u+x a.txt
chmod g+w,o-r a.txt //同时做多个权限的修改
chmod g=rwx a.txt
chmod 640 a.txt
chmod -R 777 testdir //把目录和下面所有文件的权限
针对文件 | 针对目录 | ||
---|---|---|---|
r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
w | 写权限 | 可以修改文件内容 | 可以在目录中创建、删除文件 |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
chown:
更改文件所有者,只有root可以更改
chown root a.txt //把a.txt更改为root所有
chgrp:
更改所属组
chgrp lambrother fengjie //把fengjie的所属组更改为lambrother
umask -S:
查看创建文件的缺省权限,即默认权限
umask 023:
修改文件的缺省权限为777-023=754。即rwxr-xr--
文件搜索命令
find:搜索制定范围内的文件
- find [搜索范围] [匹配条件]
- -name 按文件名搜索
- -iname 根据文件名查找,不区分大小写
- -size +n大于 -n小于 n等于 这个n是数据块,在Linux中一个数据块是512字节大小
- -user 根据所有者查找
- -group 根据所属组查找
- 根据文件属性查找:
-amin 访问时间 access
-cmin 根据文件属性被修改的时间 change
-mmin 根据文件内容被修改的时间 modify
例:
find /etc -cmin -5: 查找/etc目录下五分钟内被修改过属性的文件和目录
- -a 两个条件同时满足
find /etc -size +10 -a -size -50 - -o 两个条件满足一个即可
- -type
f 文件 d 目录 l软连接文件 - -inum 根据i节点查找
对找到的结果进行操作
- -exec或者-ok 命令 {} \;
例如:
find /etc -name init* -exec ls -l {} \; //对找到的文件名按列表查看
find /etc -name init : //搜索目录/etc下面所有的init文件,精确匹配,包括子目录中的init文件
find / -size +204800 //搜索大于100M的文件
locate: (查找速度非常快,因为它维护了一个文件库。缺点就是新建立的文件没有很快收录到文件库)
locate 文件名
- updatedb 更新locate的文件资料库 文件资料库不收录/tmp下的文件
- -i 不区分大小写
which :查找命令的目录以及别名
which 命令
whereis:
搜索命令所在目录及帮助文档路径。
grep:
在文件中搜寻字符串匹配的行并输出,多个文件以空格隔开。
- -i不区分大小写
- -v排除指定字符串
- -E 以正则表达式的方式搜索
- -F 以普通文本的方式搜索
- -n 显示搜索到的内容在文件中的行号。
帮助命令
man:查看命令或者配置文件的帮助信息
- man 命令/配置文件
- 在手册里面,可以输入/要查找的str
- man ls
- man services
- man fstab //直接输入配置文件的名字,而不需要使用绝对路径 重点查看name选项和配置文件的格式。
- 如果一个命令即使命令又是配置文件,那么可以使用一个序号进行区分,比如:
- man 1 passwd 查看命令passwd的帮助
- man 5 passwd 查看配置文件passwd的帮助
whatis 命令:得到命令的简要信息
apropos 配置文件名:查看配置文件的简短信息
命令 --help:查看命令的选项。
help 命令:查看shell内置命令的帮助信息。 shell内置命令是没有命令路径。不能使用man查看帮助。
用户管理命令
useradd: 添加用户
useradd 用户名
passwd: 修改用户密码
passwd 用户名 不加用户名直接更改自己的密码
who:查看当前的账户
显示的格式为: 登录用户名 登录终端(tty:本地登录 pts:远程终端) 登录时间 ip地址
- w:查看更详细的用户登录信息。
压缩解压缩命令
.gz格式
- 压缩:gzip 文件名 只能压缩文件不能压缩目录,压缩完源文件也不见了
- 解压缩:gunzip/gzip -d 压缩包名称
tar:
- -zcvf 压缩后文件名 打包的目录 :生成.tar.gz文件 注:这个命令先用tar归档,然后把归档的包压缩成.gz
- -zxvf 要解压的文件名 :解压缩.tar.bz2的文件
- -jcvf 压缩后的文件名 打包的目录:生成.tar.bz2 注:这个命令先用tar归档,然后把归档的包压缩成.bz2
- -jxvf 要解压的文件名 :解压.tar.bz2的文件
zip:
- zip -r 压缩生成的文件名 要压缩的目录
- zip 压缩生成的文件名 要压缩的文件。
unzip:
- unzip 要解压缩的文件
bzip2:
- bzip2 -k 要压缩的文件名 -k选项:保留源文件
- bunzip2 -k 要解压的文件名 -k选项:保留压缩包
网络命令
ping: 测试网络连通性
ping ip地址
- -c 要ping的次数
ifconfig:
直接回车查看当前网卡信息
- ifconfig 网卡名 ip地址 临时修改网络ip
ifconfig th0:0 192.168.1.100 netmask 255.255.255.0 //给th0这个网卡新添加一个ip
ifconfig eth0:0 down
ifconfig eth0:0 up
ifdown th0
禁用th0这块网卡
ifup th0
开启th0这块网卡
mail:邮件命令
- mail 要发送的用户名
- mail 直接回车:查看命令
help :查看支持的命令格式
输入序列号:查看邮件详细内容
h: 回到邮件列表
d 序列号:删除序列号对应的邮件
last:统计计算机所有用户登录的时间信息,以及重启信息
lastlog:所有用户最后一次登录的时间
- -u 用户的uid 查看指定用户的登录信息。
traceroute:显示数据包到主机间的路径
traceroute 要探测的地址.
- -n 使用ip而不使用域名
nslookup www.baidu.com
查看百度的ip地址
netstat:显示网络相关信息
- -t :tcp协议
- -u :udp协议
- -l:监听
- -r:路由
- -n:显示ip地址和端口号
- netstat -tlun:查看本机监听的端口
- netstat -an:查看所有的监听信息
- netstat -rn :查看路由表,即网管
wget 文件地址
下载文件
service network restart:重启网络服务。
telnet 域名或ip
远程管理与端口探测
如: telnet 192.168.2.3:80 探测192.168.2.3是否开启了80端口
mount:挂在命令
mount -t iso9660 /dev/sr0 /mnt/cdrom //把sr0挂在到cdrom
关机重启命令
shutdown:这个关机命令更安全一些,不推荐使用其他关机命令。
- -h:关机
shutdown -h now shutdown -h 20:30
- -r:重启
shutdown -r now
- -c:取消上次的关机命令
重启:
- init 6
- reboot
关机:
- init 0
- poweroff
系统运行级别:
- 0 关机
- 1 单用户 类似windows安全模式
- 2 不完全多用户,不含nfs服务
- 3 完全多用户
- 4 未分配
- 5 图形界面
- 6 重启
可以通过查看/etc/inittab来查看系统启动的运行级别
- runlevel:查看当前的运行级别
- init n:设置系统运行级别
logout:退出当前用户,返回到登录界面
其他小技巧
\命令名字 :使用原始的命令
比如:
- ls 实际上是ls --color auto
- \ls 就是原始的ls
其他命令
ps 静态查看系统进程,系统默认安装
- ps -aux 使用BSD语法查看所有进程
- ps -ef 标准语法查看所有进程
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
STIME 系统启动时间
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何 - ps -aux --sort -pcpu,-pmem
根据CPU占用情况和内存占用情况来显示进程 - watch -n 1 'ps -aux --sort -pcpu,-pmem'
每隔1秒监控一次进程情况
top 动态查看系统的状态
lsof -Pti: 8000
通过端口号获得进程pid
kill -9 pid
杀死指定pid的进程,强行杀死。
history
查看历史命令
执行历史命令
- !! 执行上一条命令
- !n 执行历史命令的中第n条
- !-n 执行导数第n条
- !string 执行以string开头的历史命令行
- !?string? 执行包含string的历史命令行
alias
给命令起别名
- alias 命令='别名'
- alias -p 查看已存在的别名
unlias
取消别名
- unlias name
cal
查看某一年的日历,可以是1-9999中的任意一年
- cal 88
zcat
查看压缩包中的内容
sed -i 's#old#new#g' 文件名
使用new替换文件中的old
ssh [email protected] "ifconfig"
远程执行命令
bash -x 脚本名
调试脚本
centos6上的三个网络配置文件
- /etc/sysconfig/network-scripts/ifcfg-etho
- /etc/sysconfig/network
- /etc/resolv.conf # dns
算了不记了,GUI用户没情怀。会插入编辑强制保存退出Vans了

Reflog2.gif
Reflog.gif
5164e18f44496040c3721d417a213ddc.gif
7fa397f2f716ef7fdccbc0c0e790f4f0.gif
6daf895e1e4f033c1d29d34c97bb7b68.gif
2869a725dd1d8be242de1db893f684ef.gif
6583510ecf6aac9f13617710bc3fedae.gif
ebca219688b8e28d799b0d29e1d740e7.gif
squash.gif
drop.gif
Rebasing.gif
1205188948a1da6a9c5eb18de2e88f68.gif
No-fast-foward-no-ff.gif
Fast-forward--ff.gif














下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
一、新建代码库
在当前目录新建一个Git代码库
git init
新建一个目录,将其初始化为Git代码库
git init [project-name]
下载一个项目和它的整个代码历史
git clone [url]
二、配置
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
显示当前的Git配置
git config --list
编辑Git配置文件
git config -e [--global]
设置提交代码时的用户信息
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
git 修改当前的project的用户名的命令为:
git config user.name //你的目标用户名;
git修改当前的project提交邮箱的命令为:
git config user.email //你的目标邮箱名;
如果你要修改当前全局的用户名和邮箱时,需要在上面的两条命令中添加一个参数,–global,代表的是全局。
命令分别为:
git config --global user.name 你的目标用户名;
git config --global user.email 你的目标邮箱名;
三、增加/删除文件
添加指定文件到暂存区
git add [file1] [file2] ...
添加当前目录的所有文件到暂存区
git add .
添加每个变化前,都会要求确认
对于同一个文件的多处变化,可以实现分次提交
git add -p
删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...
停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file]
改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]
四、代码提交
提交暂存区到仓库区
git commit -m [message]
提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
提交时显示所有diff信息
git commit -v
使用一次新的commit,替代上一次提交
如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m [message]
重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2] ...
五、分支
列出所有本地分支
git branch
列出所有远程分支
git branch -r
列出所有本地分支和远程分支
git branch -a
新建一个分支,但依然停留在当前分支
git branch [branch-name]
新建一个分支,并切换到该分支
git checkout -b [branch]
git checkout -b appoint_box(别名) origin/feature/20181128_1491627_appoint_box_1(分支名)
新建一个分支,指向指定commit
git branch [branch] [commit]
新建一个分支,与指定的远程分支建立追踪关系
git branch --track [branch] [remote-branch]
切换到指定分支,并更新工作区
git checkout [branch-name]
切换到上一个分支
git checkout -
建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream [branch] [remote-branch]
合并指定分支到当前分支
git merge [branch]
选择一个commit,合并进当前分支
git cherry-pick [commit]
删除分支
git branch -d [branch-name]
删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
六、标签
列出所有tag
git tag
新建一个tag在当前commit
git tag
新建一个tag在指定commit
git tag [commit]
删除本地tag
git tag -d
删除远程tag
git push origin :refs/tags/[tagName]
查看tag信息
git show
提交指定tag
git push [remote]
提交所有tag
git push [remote] --tags
新建一个分支,指向某个tag
git checkout -b [branch]
七、查看信息
显示有变更的文件
git status
显示当前分支的版本历史
git log
显示commit历史,以及每次commit发生变更的文件
git log --stat
搜索提交历史,根据关键词
git log -S [keyword]
显示某个commit之后的所有变动,每个commit占据一行
git log HEAD --pretty=format:%s
显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
git log HEAD --grep feature
显示某个文件的版本历史,包括文件改名
git log --follow [file]
git whatchanged [file]
显示指定文件相关的每一次diff
git log -p [file]
显示过去5次提交
git log -5 --pretty --oneline
显示所有提交过的用户,按提交次数排序
git shortlog -sn
显示指定文件是什么人在什么时间修改过
git blame [file]
显示暂存区和工作区的代码差异
git diff
显示暂存区和上一个commit的差异
git diff --cached [file]
显示工作区与当前分支最新commit之间的差异
git diff HEAD
显示两次提交之间的差异
git diff [first-branch]...[second-branch]
显示今天你写了多少行代码
git diff --shortstat "@{0 day ago}"
显示某次提交的元数据和内容变化
git show [commit]
显示某次提交发生变化的文件
git show --name-only [commit]
显示某次提交时,某个文件的内容
git show [commit]:[filename]
显示当前分支的最近几次提交
git reflog
可以得到cimmit id
从本地master拉取代码更新当前分支:branch 一般为master
git rebase [branch]
八、远程同步
git remote update --更新远程仓储
下载远程仓库的所有变动
git fetch [remote]
显示所有远程仓库
git remote -v
显示某个远程仓库的信息
git remote show [remote]
增加一个新的远程仓库,并命名
git remote add [shortname] [url]
取回远程仓库的变化,并与本地分支合并
git pull [remote] [branch]
上传本地指定分支到远程仓库
git push [remote] [branch]
强行推送当前分支到远程仓库,即使有冲突
git push [remote] --force
推送所有分支到远程仓库
git push [remote] --all
九、撤销
恢复暂存区的指定文件到工作区
git checkout [file]
恢复某个commit的指定文件到暂存区和工作区
git checkout [commit] [file]
恢复暂存区的所有文件到工作区
git checkout .
重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
git reset [file]
重置暂存区与工作区,与上一次commit保持一致
git reset --hard
重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset [commit]
重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard [commit]
重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --keep [commit]
新建一个commit,用来撤销指定commit
后者的所有变化都将被前者抵消,并且应用到当前分支
git revert [commit]
暂时将未提交的变化移除,稍后再移入
git stash
git stash pop
十、其他
生成一个可供发布的压缩包
git archive
上传本地项目到远程仓库
- (先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库
git init
- 把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件
git add .
- 用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明
git commit -m 'first commit'
- 关联到远程库
git remote add origin 你的远程库地址
如:
git remote add origin https://github.com/githubusername/demo.git
- 获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
- 把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。
git push -u origin master
- 状态查询命令
git status
1、文本编辑
- 删除 ctrl + y
- 复制 ctrl + d
- 光标跳到类头 ctrl + home
- 光标跳到类尾 ctrl + end
- 光标快速移动 ctrl + <-/->
- 光标快速选中 ctrl + shift + <-/->
- 光标在类内方法头部快速移动 alt + 上下箭头
- 光标所在位置每次选中一行 shift + 上下箭头
- 内容在方法体内上下移动 ctrl + shift + 上下箭头
- 内容在类内上下移动 alt + shift + 上下箭头
2、智能提示
- 提示 ctrl + space
- 智能提示 ctrl + shift + space
- 完成当前语句 ctrl + shift + enter
- 建议提示为参数 ctrl + alt + p
- 对代码重新排列格式 ctrl + alt + l
- 对imports进行优化 ctrl + alt + o
3、位置定位
- 定位到下一个或上一个错误 f2/Shift + f2
- 定位文件行 ctrl + g
- 定位到代码块开始 ctrl + [
- 定位到代码块结束 ctrl + ]
- 回到最近的窗口 f12
- 回到之前的文件 alt + left
- 回到之后的文件 alt + right
- 定位到最后编辑位置 ctrl + shift + backspace
- 焦点切换到文件编辑 esc
- 关闭最近打开的窗口 shift + esc
4、类方法文件定位
- 查找类 ctrl + n
- 查找文件 ctrl + shift + n
- 符号定位 ctrl + alt + shift + n
- 查看文件结构 ctrl + f12
- 最近打开的文件 ctrl + e
- 定位下一个方法 alt + down
- 定位上一个方法 alt + up
- 查看方法参数信息 ctrl + p
- 查看方法、类的doc ctrl + q
5、类和方法的结构查看定位
- 跳到类或方法的声明 ctrl + b
- 定位到类的父类、接口 ctrl + u
- 查看类的继承结构 ctrl + h
- 查看方法的继承结构 ctrl + shift + h
- 查看类或方法被调用情况 ctrl + alt + h
- 原地参看类、方法的声明 ctrl + shift + i
6、运行与调试
- 选择配置并调试 alt + shift + f9
- 选择配置并运行 alt + shift + f10
- 运行当前默认工程 shift + f10
- 调试当前默认工程 shift + f9
- 构建项目 ctrl + f9
- 运行至光标处 alt + f9
- 强制运行至光标处 ctrl + alt + f9
- 生成断点 ctrl + f8
- 查看断点 ctrl + shift + f8
7、重构
- 弹出重构菜单 ctrlt + alt + shift + t
- 重命名 shift + f6
- 复制类 f5
- 移动方法到另外一个类 f6
- 安全删除 alt + delete
- 内联 ctrl + alt + n
8、代码生成
- 生成单元测试类 ctrl + shift + t
- 代码标签输入完成后,按 Tab,生成代码 tab
- 可以生成构造器/Getter/Setter等 alt + insert
版权属于:Vergil Wu
本文链接:https://www.vergil.com.cn/215.html
转载时须注明出处及本声明
4 条评论
好全
😎😎😎
😲
牛啊