git常用命令:
sudo get-apt install git:git安装
git init: 创建git版本库
git add xx:添加到暂存区
git commit -m "说明信息":创建一个版本
git log: 查看版本创建记录,ID号
git reset --hard HEAD^: 回退一个版本
git reset --hard HEAD~X: 回退X个版本
git reset --hard ID:回退本地代码库至ID号之前的版本
git reflog: 查看版本操作记录
git reset --hard 标记符:回退标记符对应的版本
git status: 查看修改记录
git checkout -- XX:丢弃对XX的修改
git diff HEAD -- code.txt: 查看详细的修改记录
git diff > patch:将修改保存至patch文件夹
git apply patch:将patch中记录的改动应用到当前的服务器仓库
git reset XX file: 从暂存区里拿出来
git log --pretty=online: 用简短的形式显示版本
git branch: 可以看到当前有几个分支,在哪个分支工作、
git checkout -b dev: 创建一个新的分支dev,并切换到dev分支工作
git checkout master: 切换到master分支
git merge dev: 合并分支dev到mater上
git branch -d dev:删除dev分支
git log --graph --pretty=online: 查看分支修改记录,包含两个分支解决冲突的记录
git merge --no--ff -m "XX": 禁止快速合并,并添加XX说明信息
git stash: 保存现场
git stash save "message": 保存现场并添加注释
git stash list: 列出保存的工作现场
git stash pop: 回复现场
git push origin 分支名称:把该分支上的所有本地提交推送到远程
git pull origin 分支名称:把github上的分支拉取到本地
git stash pop stash@{1}: 恢复指定的进度到工作区
git pull:从远程仓库拉取代码
git push -f -u origin master:将代码推送到远程服务器
git log -- filename(git log filename):查看该文件相关的commit记录
git log -p filename:显示该文件每次提交的diff,及具体的改动内容
git show comit_id filename:查看某次提交中的某个文件变化
git show commit_id:查看某次提交
git pull --rebase:当远程基线与本地基线不一致时,拉取远程基线到本地,然后将本地基线之上的提交附加到新基线
adb命令:
adb devices: 查看连接的电脑设备
adb shell: 进入设备终端
adb connect 192.168.xx.xx: 连接终端设备
adb -s 192.168.xx.xx shell: 连接特定的终端设备(有多台终端设备时)
adb reboot: 重启终端,需要先连接到终端
adb reboot loader: 会进入fastboot 模式,Android 可以在fastboot 模式下采用烧录软件进行烧录
adb poweroff: 关机
shell命令:
setprop: 设置系统配置参数
getprop: 获得系统配置参数
command | grep “xx: 在命令中打印出xx的信息,其它的过滤掉
find 路径 -name“xx”: 在路径下搜索xx相关的文件名
find 路径 -name '*.dtsi'|xargs grep 'test': 查看路径下带.dtsi后缀文件中,有test内容的文本内容、路径
find 路径 -type c: 查找字符设备的文件类型
chmod +x xx: 给xx设置执行权限
dmesg: 内核启动过程分析,执行了那些服务
logcat -vtime :启动过程中执行的服务打印了那些信息如 echo “”、shell命令执行等
echo "1 4 1 7" > /proc/sys/kerner/printk: 屏蔽驱动的打印信息
df -h: 查看磁盘的容量,以M显示
du -h: 文件容量汇总,以合适的单位显示
du -sh: 目录总的磁盘空间大小
mount [选项] <源> <目录>: 源表示硬件设备或网络设备
dmesg | grep -E "bt|bluetooth" :过滤有bt或bluetooth字符串的语句
ssh xx@192.168.xx.xx:在某一台服务器上登录另外一台服务器
scp -r /xx/file2 root@192.168.1.65:/xx/file1:把65服务器上的file1拷贝到当前服务器的file2
vim命令:
/xx: 在文件中搜寻xx内容的字符,上一个匹配N,下一个匹配n
%s/xx/yy/g: 将文本中所有xx替换为yy
nd: 删除光标及之后n行
dw: 删除一个单词
shift+G: 跳转到到第一行
set nu: 显示行号
shift+g:跳转到最后一行
shift+g+$:跳转到最后一行末尾
网络shell相关:
ip a: ip a显示是否启用或禁用的所有接口
ifconfig eth0 192.168.xx.xx: 设置网络Ip地址
ifconfig: ifconfig只显示已启用接口
ifconfig wlan0 up: 启用wlan0网络接口
udhcpc -b -i wlan0: 动态的给wlan0分配ip地址
ndc softap set wlan1 apname broadcast 149 wpa-psk 123456789: 设置wlan1信道、热点名称、密码;
wlan1是需要设置的网络节点,apname是热点名称,149表示5G信道(注意不用的模式信道不同),wpa-psk表示安全模式,12345678表示热点密码
ndc interface setcfg wlan1 192.168.43.1 24 up: 设置wlan1的地址和启用wlan1网络节点
ndc softap startap: 表示开启热点
ndc tether interface add wlan1: 增加wlan1为热点
ndc tether start 192.168.43.10 192.168.43.99: 给连接上的ip地址分配地址,地址范围10-99
ndc tether dns set 0 192.168.1.1 114.114.114.114: 设置dns
ndc nat enable wlan1 eth0 0: 设置那个节点的网络供应热点上网,这里是ehh0
ip route add 192.168.43.0/24 dev wlan1 proto static scope link table local_network: 设置路由表
ip rule add from all oif wlan1 lookup local_network pref 14000: 设置路由表
shell脚本基础:
关键点1:
sudo echo out > sys/gpio19/dirction 这里sudo表示只对echo生效,后面的命令不生效,因此out写入不了sys/gpio19/dirction文件
sudo sh -c echo out > sys/gpio19/dirction 这里sudo sh -c 表示对后面所有的命令都生效
关键点2:shell脚本 name.sh “交互式脚本”
#!/bin/bash 这一行必须要有,表示默认的解析器
echo “please input your name:”
read name //从键盘读取并赋值给name
echo “your name:” $name 在屏幕打印 your name :从键盘读取的name
#!/bin/bash 这一行必须要有,表示默认的解析器
echo “please input your name:”name1 name2
read name //从键盘读取并赋值给name
echo “your name1=$name1 your name2=$name2”在屏幕打印your name1=XX your name2=XX
关键点3:两个值相加
#!/bin/bash 这一行必须要有
echo “please input two value:”
read -p value1 或者 read -p "input one value:" value1
read -p value2 或者 read -p "input one value:" value2
total=$($value1+$value2) 或者 total=$((value1+value2))
echo “total value:” $total
关键点3:
echo $PATH 会在屏幕打印环境变量,当输入外部命令ifconfig时,会在环境变量包含的路径中找到并执行ifconfig程序
关键点4:.sh的执行方式
1 ./hello.sh
2 /bin/bash hello.sh
3 source hello.sh
4 . hello.sh
关键点5: 有空格时的赋值方式
#!/bin/bash
value='12345 67' 或"12345 67"
echo "$value"
关键点6: ''和""单双引用的区别
#!/bin/bash
value='12345 67'
value1="${value}aa"
echo "$value1"
""会解引用
''不会解引用
关键点6: echo加边界确定引用边界
echo "${value1}bbb"
关键点7: 输出shell命令 反引号
#!/bin/bash
value=`pwd`或$(pwd)
echo "${value}"
如果
value=$(pwd)aaa
echo "${value}" 输出当前文件路径+aaa
关键点8: 删除定义变量
#!/bin/bash
value='123'
uset value
echo "${value}" 输出空
关键点9:特殊变量
$0 屏幕输出.sh文件名
$1 屏幕输入的传参1
$2 屏幕输入的传参2
$# 屏幕传入的参数个数
$* 屏幕传入的所有参数
exit 111 .sh执行完毕的退出值
$? .sh执行完毕的退出值
$$ shell脚本的进程值
关键点10:检测某个条件是否成立
#!/bin/bash
read -p "input one value:" value1
read -p "input one value:" value2
test $value1 -eq $value2 && echo "value1 = value2" 成立输出value1=value2 不成立输出空
test $value1 -eq $value2 || echo "value1 != value2" 不成立输出value1!=value2 成立输出空
[$value1 -eq $value2] || echo "value1 != value2" 等同于上一条
关键点11:判断条件
-eq 是否是等于
-ne 是否不相等
-gt 是否大于
-lt 是否小于
-ge 是否大于等于
-le 是否小于等于
-z str 字符串str是否为空
-n str 字符串str是否不为空
=和== 判断字符串是否相等
-d filename 判断文件是否存在,并为目录文件
-f filename 判断文件是否存在,并为普通文件
关键点12:if语句
=!bin/bash
read -p "input a:" a
read -p "input b:" b
if [ $a -eq $b ]
then
echo "a=b"
fi
关键点13:if else语句
=!bin/bash
read -p "input a:" a
read -p "input b:" b
if [ $a -eq $b ]
then
echo "a=b"
else
echo "a!=b"
fi
关键点14:if else语句
=!bin/bash
read -p "input a:" a
read -p "input b:" b
if [ $a -eq $b ]
then
echo "a=b"
elif [$a -gt $b]
then
echo "a>b"
else
echo "a<b"
fi
关键点15:case语句
=!bin/bash
read -p "input a:" a
case $a in
1)
echo "a=1"
;;
2)
echo "a=2"
;;
*)
echo "a!=1&&!=2"
;;
esac
关键点16:for in语句
=!bin/bash
read -p "input a:" a
for n in 1 2 3 4 5 或者 {1..5}
do
echo "$n"
done
=!bin/bash
read -p "input a:" a
for n in $(ls /bin/*sh)
do
echo "$n" 输出shell解释器
done
=!bin/bash
read -p "input a:" a
for n in $* 或者 "$*" 屏幕输入./sh 1 2 3 输出 1换行 2换行 3换行 "$*" 输出 1 2 3
do
echo "$n" 输出shell解释器
done
关键点17:while循环
=!bin/bash
n=0
while ((n<10)) 或者 [n -lt 10]
do
echo "$n"
n=$((n+1))
done
关键点18:函数定义
=!bin/bash
function test(){
echo "test function"
} 定义
test 执行