Mic_chen

It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

git:

git status
git add -u 只将已跟踪的文件加入
git add * 会忽略.gitignore把任何文件都加入
git add . 将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录 会把本地所有untrack的文件都加入暂存区
git add -A
git rm --cached [file]:取消文件版本控制
git commit
git reset --soft 需要回退的commit_id:取消了commit
git reset --mixed 需要回退的ommit_id :取消了commit ,取消了add
git reset --hard :版本回滚,取消了commit ,取消了add,取消源文件修改
撤销已经push的提交:首先,通过git log查看提交信息,以便获取需要回退至的版本号,然后,通过git reset –soft <版本号>重置至指定版本的提交(也可以选择参数hard,会撤销相应工作区的修改,一定要谨慎使用)。
最后,通过git push origin 分支名 –force强制提交当前版本号。
git reflog: 查看每一次的命令记录,可以回滚到最新版本或者之前的记录版本。
git tag -l:查看tag信息,例如v1.6, 然后通过git show v1.6(tag信息) 可以查看tag对应的哈希值
git checkout: 撤销本地文件修改, 检出分支。
git config user.name:查看用户名
git branch :查看当前处于什么分支
git branch -a:查看所有分支。
git show <commit 哈希> :查看某次提交内容
git show <commit 哈希> --stat :查看某次提交文件
git show --name-only 哈希 :查看某次提交的文件列表
git log -p <FileName> 查看文件每次提交的diff
git reflog 查看所有Git操作的记录
git diff --cached 查看add之后的差异。
git diff [<options>] [<commit> [<commit>]] [--] [<path>...] :查看某次提交某个文件的修改信息
git reflog show 分支名:查看分支来源
git cherry-pick <commit 哈希> 合并部分提交
删除远程提交记录:git rebase -i A的commit_id,参考链接:https://blog.csdn.net/weixin_43108539/article/details/127213906
reset --hard之后回到最新提交,先git reflog找到相应的commit id,然后执行git reset --hard commit-id
创建分支:git checkout commit-id -b stable-v3.x,然后git push --set-upstream origin stable-v3.x
删除分支:git branch -D stable-v3.x然后git push origin --delete dev-v3.x
合并分支:首先切换到A分支,git checkout A,reset到某次提交;然后git checkout B ;最后git merge A
某一次提交合并到分支:首先切换到A分支,git checkout A;然后git log 找出要合并的commit-id; 然后切换到B分支上执行git checkout B git cherry-pick commit-id 最后就将A分支的某个commit合并到了B分支了

gdb命令:
设置断点
1、Break(b) filename:linenum 在某 source file 的第几行或指定函数设断点。
2、b function 在某个函数设置断点。

(gdb) i r #查看主要寄存器
(gdb) i r a # 查看所有寄存器(包括浮点、多媒体)
(gdb) i r epc #查看epc(异常保留程序计数器)
(gdb) i r pc #查看pc
(gdb) i r psr #查看处理器状态寄存器

(gdb) x /wx 0x80040000 # 以16进制显示指定地址处的数据
(gdb) x /8x $esp #
(gdb) x /16x $esp+12 #
(gdb) x /16s 0x86468700 # 以字符串形式显示指定地址处的数据
(gdb) x /24i 0x8048a51 # 以指令形式显示指定地址处的数据(24条)


gcc工具:
1、生成反汇编文件:objdump -D hello-demo > hello.S
2、查看CPU类型:readelf -h hello-demo
3、查看是否使用硬浮点,cpu类型等详细参数:readelf -a hello-demo

 

linux:
centos源于hat,Ubuntu源自Debian
绿色文件: 可执行文件,可执行的程序
红色文件:压缩文件或者包文件
蓝色文件:目录
白色文件:一般性文件,如文本文件,配置文件,源码文件等
浅蓝色文件:链接文件,主要是使用ln命令建立的文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件

0、查看系统/内核版本信息: cat /proc/version 或者 uname -a
1、进入root权限,sudu su: sudo(Super User Do)命令是给su(Switch User)命令提权,su后面不输入默认是root,因此这条命令完整是sudo su -root;退出root到用户使用exit或者su 用户名
2、修改登入密码:sudo passwd user(user 是对应的用户名), passwd root :修改root密码
3、 which 查看可执行文件的位置。 which iptables
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。

如在当前目录及子目录中的所有c文件中查找包含"Connnect to"字符串的文件,并显示出现位置的行号
find [path] -name "*.c" | xargs grep -n "Connect to"
find -name .git* | xargs rm -rf 查找文件并删除

grep: --exclude-dir=drivers --exclude=*.out ‘abcdefg’
-r
^ // 行首
^d // 行首以d开头的
awk:
-F fs 指定文件折分隔符,后面跟着fs可以是的字符串或者正则表达式,如-F/。


4、下载并安装软件包:apt-get install cmatrix(包名);软件包放在/var/cache/apt/archives,可执行文件在/usr/bin;可以用find指令查找下,和红帽的yum命令类似。
5、安装已下载好的软件包:dpkg -i mNetAssist-release-amd64.deb;卸载:dpkg -r mnetassist
注意:使用dpkg -i xx.deb进行安装的时候,可执行文件默认路径为:/opt
6、"|",管道符:可将一个命令的输出作为下一个命令的输入用。
cat testA.sh | while read line
do
echo "内容${line}"
done
7、*,
a、在文件名扩展上,用来代表任何字元
b、在运算时代表乘法,**代表阶乘 ,如:2**3=8
8、在ubuntu的调试终端上搜索:ctrl+shift+F
9、环境变量的组合命令:export,source
10、shell脚本中常见的set -x -e
set -x 会在执行每一行 shell 脚本时,把执行的内容输出来。它可以让你看到当前执行的情况,里面涉及的变量也会被替换成实际的值。
set -e 会在执行出错时结束程序,就像其他语言中的“抛出异常”一样。(准确说,不是所有出错的时候都会结束程序,见下面的注)

11、df
12、打包压缩:tar -cvf etc.tar /src (仅打包,不压缩)
13、解包: tar -xvf xxx.tar -C /dst
对于“.tar.gz”压缩包:tar -zxf xxx.tar.gz。或者 gzip demo.txt;解压:gunzip demo.tar.gz;
对于.tar.bz2压缩包: tar -jxvf xx.tar.bz2
对于zip:压缩:zip all.zip *.jpg; 解压:unzip all.zip

1. tar.gz tar -zxvf 压缩文件名.tar.gz
2. tgz tar -zxvf 压缩文件名.tgz
3. tbz tar -jxvf 压缩文件名.tbz
4. tar tar -xvf 压缩文件名.tar
5.zip unzip 压缩文件名.zip
6. 7z 7z x 压缩文件名.7z -r -o. /


a、只查看不解包:tar -tvf xxx.tar
b、不包含一级目录的打包方法:进入要打包的目录,然后tar -cvf xxx.tar *

14、进程相关:
ps:ps -A 列出所有进程; ps -ef //显示所有命令,连带命令行
top、kill、
pmap pid:来输出进程内存的状况,可以用来分析线程堆栈
watch:是周期性的执行下个程序,并全屏显示执行结果,eg:watch -n 1 -d netstat -ant( 每隔一秒高亮显示网络链接数的变化情况)

top:
top - 10:00:34 up 193 days, 15 min, 2 users, load average: 0.03, 0.05, 0.10
Tasks: 168 total, 1 running, 167 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 0.8 sy, 0.0 ni, 98.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us:用户进程执行时间百分比
  sy:系统进程执行时间百分比
ni: 用户进程空间内改变过优先级的进程占用CPU时间百分比
  id:空闲时间百分比
  wa:等待IO时间百分比
hi: CPU服务于硬件中断的CPU时间百分比
si: CPU服务于软件中断的CPU时间百分比
  st:被虚拟机偷走的cpu时间百分比
操作:
a、通过敲击“y”键关闭或打开运行态进程的加亮效果(横列)
b、敲击键盘“x”(打开/关闭排序列的加亮效果)(数列), 通过”shift + >”或”shift + <”可以向右或左改变排序列

15、网络相关:
netstat
16、service:service mysqld stop start,那么就相当于执行了 /etc/init.d/mysqld stop start。
通过find可以找到service在usr/sbinz中,通过cat /usr/sbin/service 可以看到SERVICEDIR="/etc/init.d"
17、Systemd :根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统
systemctl是systemd的一个主命令,其他的还有systemd-analyze命令用于查看启动耗时。 hostnamectl命令用于查看当前主机的信息;
systemctl list-dependencies --all nginx.service:列出一个 Unit 的所有依赖
# 查看当前系统的所有 Target
$ systemctl list-unit-files --type=target

18、查找执行文件是脚本:#! /bin/sh
19、查看当前环境下内核导出了哪些符号
#cat /proc/kallsyms | grep printk
20、将脚本中带有的\r删除:sed -i 's/\r$//' build.sh。因为linux下的换行是\n,没有\r。
删除文件makefile中包含textrel_check所在的行:sed -i '/textrel_check/d' src/Makefile

21、apt相关:apt-get install,卸载:先看下软件包是否存在:dpkg --list,然后执行卸载: apt-get --purge remove 包名(--purge是可选项,写上这个属性是将软件及其配置文件一并删除)
1)apt-cache Madison xxx:查询xxx软件的可用版本
2)dpkg-l|grep xxx:查看指定软件是否安装
3)apt-get remove xxx

22、du命令用于显示目录或文件的大小:
a、查看文件夹大小:du -h 文件夹名
b、查看大小,只看总容量:du -sh

查看大小并排序 du -s * | sort -nr
df:用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

23、提示符后面显示全路径:echo "export PS1='[\u@\h \w]\$ '" >> /etc/profile
24、查看flash分区:cat /proc/mtd;查看所有分区:cat /proc/partitions
25、创建软连接: ln -s 源文件 软连接名
26、查看当前控制台的打印级别: cat /proc/sys/kernel/printk
27、测试写速度:dd if=/dev/zero of=./test bs=8k count=10 conv=fsync
28、查看压缩包的一级目录 tar -tvf xxx.tar.gz | grep ^d | awk -F/ '{if(NF<4) print}'
awk 中的 NF 是由'/' 分割后的 字段个数! 而不是 '/' 的个数!
行尾的'/' 后面,即使没有字符了,其后也被计算入一个 字段!
因此例
如: drwxr-xr-x root/root 0 2011-08-26 09:18 bin/ 是3个字段
29、查看内核启动信息:dmesg
30、批量删除svn的shell脚本: find . -type d -name ".svn"|xargs rm -rf
33、调试中断颜色
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m *色字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
34、比较工具:meld
35、一种同时访问内网和外网的网络环境配置,其中访问外网必须使用无线热点:
//同时支持有线访问南网云、无线访问互联网的路由配置命令:
1、route -p ADD 172.16.0.0 MASK 255.255.0.0 192.168.199.1 METRIC 4 IF 20 // 有线访问南网云网段
2、route -p ADD 0.0.0.0 MASK 0.0.0.0 192.168.43.1 METRIC 2 IF 17 // 无线访问其他网段
通过route PRINT确认路由配置和跃点数,保证无线的跃点数高于有线。
虚拟机和开发板交互的时候使用桥接模式,这样虚拟机和开发板同一局域网。
虚拟机需要访问互联网的时候使用NAT模式,这样虚拟机的请求由PC转发。

36、重启网卡:/etc/init.d/networking force-reload; /etc/init.d/networking restart


VI:
u:回退上一次操作。
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
1、# 开始向文件头的方向搜索光标所在位置的单词的下一个出现位置
 2、* 或者n 开始向文件尾的方向搜索光标所在位置的单词的下一个出现位置

?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;或者(set nu)
:set nonumber:在命令模式下,用于在最左端不显示行号;
gg 跳到文件第一行
Shift + g 跳到文件最后一行


win:
1、快速截屏win+shift+S
2、任务管理器:taskmgr
设备管理器:devmgmt.msc
网络连接:ncpa.cpl
远程连接:mstsc
3、打印目录树 tree /f >>tree.txt


VMware:
1、Ctrl-Alt 返回正常(窗口)模式, 鼠标键盘焦点返回到本机vmware中。

 


1、编译警告。
2、状态位测试。


eeprom寄存器描述:
0B:设置寄存器,字节间隔小于N*1us的风暴将被抑制,设置范围(0-15),单位1us。
1B:设置寄存器,包间隔小于N*100us的风暴将被抑制,设置范围(0-63),单位100us。
2B-9B:状态寄存器,GOOSE报文抑制状态。
10B-202B:设置寄存器,匹配订阅GOOSE报文中"目的MAC+APPID+GoCBRef+DatSet+GoID"的CRC32码的报文将被接收。
CRC32校验算法(参数模型)NAME: 自定义,宽度WIDTH: 32, 多项式POLY(Hex): 04C11DB7, 初始值INIT(Hex): FFFFFFFF, 结果异或值XOROUT(Hex): 0, 勾选输入数据反转(REFIN)。


操作示例:
写寄存器
ethtool -E eth4 magic 0x474F4F53 offset 0 value 10
ethtool -E eth4 magic 0x474F4F53 offset 1 value 16
ethtool -E eth4 magic 0x474F4F53 offset 10 value 0xeb
ethtool -E eth4 magic 0x474F4F53 offset 11 value 0x9c
ethtool -E eth4 magic 0x474F4F53 offset 12 value 0x83
ethtool -E eth4 magic 0x474F4F53 offset 13 value 0x93

读寄存器
ethtool -e eth4 offset 0

当然也可以通过编写程序,调用ioctl(ctx->fd, SIOCETHTOOL, &ifr);实现多字节读写。具体可参考ethtool工具的ethtool.c中相关代码。

posted on 2019-04-18 19:50  Mic_chen  阅读(152)  评论(0编辑  收藏  举报