TOC
顶部
- 做技术,永远不要和客户硬刚。
目录
-
简介
-
GitTips
- git gc
- git push
-
LinuxTips
-
STM32Tips
- 内存分配
-
ShellTips
- udhcpc
- history
- alias
- 通配符
- type
- read
- declare/typeset
- ulimit
-
VimTips
- 编辑
- 移动光标
- 进入和退出
- 删除
- 撤销
- 定位
- 外部命令
- 复制
- 粘贴
- 指令列
-
ElectronicsTips
- 晶振
- CPU
- MPU
- MCU
- SoC
git init git add git commit git remote add origin http://name:password@gitee.com/zhaochengjie/gitname.git
-
git gc --prune=now
解决当地缓存过多的问题,清理当地缓存
-
git push --force origin master
强制推送覆盖远程仓库
- const无论是局部还是全局,修还是全局 存放在flash 中,不占用RAM,所以为了省钱RAM,声明常量字符串、数据等const这是一种推荐的做法
- static无论是局部还是全局,修变量 存放于RAM 的.data段,是已初始化的变量区。static默认不显示初始化
- 全局变量的初始化 存放在RAM 的.data段,是已初始化的变量区。static默认不显示初始化
- 全局变量未初始化 放在RAM的.bss段落,即未显示的初始化
- HEAP 即堆区 存放于RAM的HEAP堆区内存需要程序员使用malloc和free动态分配和释放,注意不要丢失或重写申请内存后获得的指针,以免无法释放,导致内存泄漏
- STACK 即栈区 存放于RAM 的STACK该部分用于程序运行时函数的局部变量,使用后自动释放
- 如果指令太长 可以使用 “\【Enter】下一行输出
- “\这意味着只跳出下一个字符,中间不能包含空间
-
udhcpc -i usb1
动态获取ip配置
udhcpd作为终端设备DHCP服务器
udhcpc作为终端设备DHCP客户端
-
ls(list):不同类型文件的颜色将显示
dir(directory):不显示不同文件类型的文件颜色,所有文件都是一种颜色
但这两个指令的作用是显示当前目录下的文件。
- 单个yes输出y
- yes 字符串。 连续输出字符串。
- 检查使用过的shell指令 即使是在指令中输入的密码也会被保存下来
- alias ll=‘ls -al’ 设置别名,设置‘ls -al’用“ll替换,减少复杂输入。
- “*星号,取代零,一个或多个字符
- ?问号:替换字符
- 透过type 我们可以知道这个指令是否每个指令bash 的内建指令
- type [-tpa] name
- 与which指令有一些相似之处
**read **
- read -p "Please keyin your name: " -t 30 named 提示使用者30s输入自己的名字,并将输入字符串作为名称named的变量内容
- echo $named 可以显示输入的内容
-
declare [-aixr] variable
-
-a:将variable变量定义为数组(array)类型
-
-i:将variable变量定义为证书数字(integer)类型
-
-x:用法与export同样,就是把后面的variable变成环境变量
-
-r:将变量设置为readonly类型、变量不能改变内容或unset
-
例子:
-
sum=100 300 500 echo $sum 100 300 500
-
declare -i sum=100+300+500 echo $sum 450
-
bash 对于变量有几个基本的定义:
- 变量类型默认为字符串,若不指定变量类型,则1+2为一个字符串而不是计算式
- bash 环境中的数值运算,预设最多仅能达到整数形态,所以1/3=0
- ulimit [-SHacdfltu] [配额]
- ulimit -a 列出当前身份的所有限制资料数值
- ulimit -f 10240 限制用户仅能建立10MBytes以下的容量的档案
- 编辑模式:在一般模式中可以迚行删除、复制、贴上等等癿劢作,但是却无法编辑文件内容癿!要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母乊后才会迚入编辑模式。注意了!通常在Linux中,按下这些按键时,在画面癿左下方会出现『INSERT戒REPLACE』癿字样,此时才可以迚行编辑。而如果要回到一般模式时,则必须要按下『Esc』这个按键即可退出编辑模式。
- 在vi 里面,[tab] 这个按钮所得到癿结果不空格符所得到癿结果是丌一样癿,特别强调一下!
- 需要注意癿是,如果你癿档案权限丌对,例如为-r–r–r–时,那么可能会无法写入,此时可以使用『强制写入』癿方式吗?可以!使用『:wq!』多加一个惊叹号即可!丌过,需要特别注意呦!那个是在『你癿权限可以改变』癿情况下才能成立癿!
- i、I :进入插入模式(insert mode)。i为【从目前光标所在处插入】,I为【在目前所在行的第一个空格符处开始插入】。(常用)
- a、A :进入插入模式(insert mode)。a为【从目前光标所在的下一个字符处开始插入】,A为【从光标所在行的最后一个字符处开始插入】。(常用)
- o、O :进入插入模式(insert mode)。这是英文字母 o 的大小写。 o为【在目前光标所在处的下一行插入新的一行】;O为【在目前光标所在处的上一行插入新的一行】(常用)
- r、R :进入取代模式(Replace mode)。r只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止;(常用)
-
h 的键位于左边或左箭头键(←),每次按下就会向左移动;
l 的键位于右边或或向右箭头键(→),每次按下就会向右移动;
j 键看起来很象一支尖端方向朝下的箭头向下箭头键(↓);
k键每次按下就会向上移动或向上箭头键(↑).
-
如果想要进行多次移动的话,例如向下移动30 行,可以使用"30j" 或"30
↓" 的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!
-
H:光标移动到这个屏幕最上方那一行的第一个字符
-
M;光标移动到这个屏幕的中央那一行的第一个字符
-
L:光标移动到这个屏幕的最下方那一行的第一个字符
-
G:移动到这个档案的最后一行
-
nG :n为数字。移动到这个档案的第n行。例如20G则会移动到这个档案的第20行(可配合:set nu)
-
gg : 移动到这个档案的第一行,相当于1G啊!
-
n : n为数字。光标向下移动n行
-
/word 向光标之下寻找一个名称为word的字符串。例如要在档案内搜寻HandsomeZCJ这个字符串,就输入 /HandsomeZCJ 即可
-
?word 向光标之上寻找一个字符串名称为word的字符串
-
n :这个n是英文按键。代表【重复前一个搜寻的动作】。距离来说,如果刚刚我们执行 /HandsomeZCJ 去向下搜寻HandsomeZCJ 这个字符串,则按下n后,会向下继续搜寻下一个名称为HandsomeZCJ 的字符串。如果是执行 ?HandsomeZCJ 的话,那么按下n则会向上继续搜寻名称为HandsomeZCJ 的字符串。
-
N :这个N是英文按键。与n刚好相反,为【反向】进行前一个搜寻动作。例如/HandsomeZCJ 后,按下N则表示【向上】搜寻HandsomeZCJ
-
:n1,n2s/word1/word2/g : n1 与 n2 为数字。在第 n1 与 n2 行之间寻找word1 这个字符串,并将该字符串取代为word2 !丼例来说,在100 到
200 行乊间搜寻vbird 并叏代为VBIRD 则:『:100,200s/vbird/VBIRD/g
』。(常用)
- :1,$s/word1/word2/g :从第一行到最后一行寻找word1字符串,并将该字符串取代为word2
- :1,$s/word1/word2/gc : 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认(confirm)是否需要取代
- 首先确保自己在正常模式( 按键)
这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动
输入“wq”则会保存所做的改动。
- 输入dd删除该行。
- 输入ndd删除n行,n代表删除以下多少行。
- 在一行字当中,x 为向后删除一个字符(相当于【del】按键), X 为向前删除一个字符(相当于【backspace】亦既是退格键)
- nx :n为数字,连续向后删除n个字符。举例来说,我要连续删除10个字符 【10x】
- d1G :删除光标所在到第一行的所有数据
- dG :删除光标所在到最后一行的所有数据
- d$ :删除游标所在处,到该行的最后一个字符
- d0 : 那个是数字的0,
- 输入u撤销最后一次执行的命令。
- 输入Ctrl+R可以重做被撤销的命令。
-
输入大写 G 可以使得当前光标直接跳转到文件最后一行。
-
输入 gg 可以使得当前光标直接跳转到文件第一行。
-
在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底 部,这跟 : 命令是一样的。接着输入 errroor <回车>。那个errroor就是您要查找的字符串。要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字 符串,请输入大写 N 即可。如果您想逆向查找字符串,请使用 ? 代替 / 进行。
- 输入 :! 然后紧接着输入一个外部命令可以执行该外部命令按下我们所熟悉的 : 命令使光标移动到屏幕底部。这样您就可以输入一行命令了。接着输入感叹号 ! 这个字符,这样就允许您执行外部的 shell 命令了。我们以 ls 命令为例。输入 !ls <回车> 。该命令就会列举出您当前目录的 内容,就如同您在命令行提示符下输入 ls 命令的结果一样。如果 !ls 没起 作用,您可以试试 :!dir 看看。
- yy :复制光标所在的那一行(常用)
- nyy :n为数字。复制光标所在的向下n列,例如20yy则是复制20列(常用 )
- y1G :复制光标所在列到第一列的所有数据
- yG : 复制光标所在列到最后一列的所有数据
- y0 :复制光标所在的那个字符到该行行首的所有数据
- y$ : 复制光标所在的那个字符到该行行尾的所有数据
-
p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第20 行,且已经复制了10 行数据。则按下p 后,那10
行数据会贴在原本的20 行之后,亦即由21 行开始贴。但如果是按下P 呢?那么原本的第20 行会被推到变成30 行。(常用)
-
J :将光标所在列与下一列的 数据 结合成同一列
-
c :重复删除多个数据,例如向下删除10行,【10cj】
-
u :复原前一个动作(常用)
-
[Ctrl] + r :重做上一个动作(常用)
-
. :不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了!(常用)
-
[:w] :将编辑的数据写入硬盘档案中(常用)
-
[:w!] :若文件属性为【只读】时,强制写入该档案。不过,到底能不能写入,还是跟你对该档案的档案权限有关啊!
-
[:q] :离开vi(常用)
-
[:q!] :若曾修改过档案,又不想储存,使用! 为强制