1.在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.2.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装. 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.3.yum(Yellow dog Updater, Modifified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.
rz -E //通过该指令可以选择从本地机器上传到云服务器的文件sz 文件夹名 //该指令可以从云服务器上的文件下载到本机机器的制定文件夹
ping www.baidu.com
yum list | grep lrzsz
安装命令形式:sudo yum install 软件名sudo yum install lrzsz
卸载命令形式:sudo yum remove 软件名
sudo yum remove lrzsz
当发现自己不知道存在哪种模式下,直接ESC回到命令模式
$ vim test.c不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。
输入a输入i输入o按下insert键
目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
「shift + ;」, 其实就是输入「:」退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」然后:: w (保存当前文件): wq (输入「wq」,存盘并退出vim): q! (输入q!,不存盘强制退出vim)
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
移动光标vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格按「G」:移动到文章的最后按「 $ 」:移动到光标所在行的“行尾”按「^」:移动到光标所在行的“行首”按「w」:光标跳到下个字的开头按「e」:光标跳到下个字的字尾按「b」:光标回到上个字的开头按「#l」:光标移到该行的第#个位置,如:5l,56l按[gg]:进入到文本开始按[shift+g]:进入文本末端按「ctrl」+「b」:屏幕往“后”移动一页按「ctrl」+「f」:屏幕往“前”移动一页按「ctrl」+「u」:屏幕往“后”移动半页按「ctrl」+「d」:屏幕往“前”移动半页
删除文字「x」:每按一次,删除光标所在位置的一个字符「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符「dd」:删除光标所在行「#dd」:从光标所在行开始删除#行
复制「yw」:将光标所在之处到字尾的字符复制到缓冲区中。「#yw」:复制#个字到缓冲区「yy」:复制光标所在行到缓冲区。「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
替换「r」:替换光标所在处的字符。「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
撤销上一次操作「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。「ctrl + r」: 撤销的恢复
更改「cw」:更改光标所在处的字到字尾处「c#w」:例如,「c3w」表示更改3个字
跳至指定的行「ctrl」+「g」列出光标所在行的行号。「#G」:例如,「15G」,表示移动光标至文章的第15行行首
列出行号「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。
查找字符「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
保存文件「w」: 在冒号输入字母「w」就可以将文件保存起来
离开vim「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件 。
以下是我常用的指令总结:
命令模式:
shift+$ 移动到光标所在行的“行尾”
shift+^ 移动到光标所在行的“行首”
shift+g 、gg、n+shift+g 上下定位
yy,nyy 复制
p,np 粘贴
u 撤销
crtl+r 恢复撤销的数据
dd,ndd 删除
dd+p 剪切
shift+~ 大小写切换
w,b 按照单词为单位进行光标跳转
x,nx 删除所在光标的字符
X,nX 删除光标之前的字符,不包括光标所在的位置
r,nr 替换光标所在处的字符
shift+r(R) 进入替换模式
h,j,k,l 左、下、上、右
底行模式
set nu 设置行号
set nonu 取消行号
w,q,! 保存,退出,强制
:!cmd 不退出vim执行命令行命令
:vs filename 分屏操作
ctrl+w 光标在多屏幕下进行切换
快速配置vim链接
在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
从上图中知道头文件存在于/usr/include
ldd:查看文件或共享库所依赖的动态链接库信息
函数库一般分为静态库和动态库两种。
动态库:LInux后缀名(.so)、Windows(.dll)--动态链接
静态库:Linux后缀名(.a)、Windows(.lib)--静态链接
Linux下安装C/C++静态库工具命令
sudo yum install -y glibc-static
sudo yum install -y libc++-static
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o 文件输出到 文件-static 此选项对生成的文件采用静态链接-g 生成调试信息。GNU 调试器可利用该信息。-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.-O0 、-O1 、-O2 、-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-w 不生成任何警告信息。-Wall 生成所有警告信息。
利用readelf -S test_g| grep debug显示debug后的调试信息
list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。list/l 函数名:列出某个函数的源代码。r或run:运行程序。n 或 next:单条执行。s或step:进入函数调用break(b) 行号:在某一行设置断点break 函数名:在某个函数开头设置断点info break :查看断点信息。fifinish:执行到当前函数返回,然后挺下来等待命令print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数p 变量:打印变量值。set var:修改变量的值continue(或c):从当前位置开始连续而非单步执行程序run(或r):从开始连续而非单步执行程序delete breakpoints:删除所有断点delete breakpoints n:删除序号为n的断点disable breakpoints:禁用断点enable breakpoints:启用断点info(或i) breakpoints:参看当前设置了哪些断点display 变量名:跟踪查看一个变量,每次停下来都显示它的值undisplay:取消对先前设置的那些变量的跟踪until X行号:跳至X行breaktrace(或bt):查看各级函数调用及参数info(i) locals:查看当前栈帧局部变量的值quit:退出gdb
会不会写makefifile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
工程是需要被清理的像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编译。但是一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被执行的。可以将我们的test.c目标文件声明成伪目标,测试一下。
当我们将此时的test.c设置成伪目标
.PHONY是一个伪目标,
可以防止在Makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突,
另一种是提交执行makefile时的效率。
冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
为什么要引入缓冲区?
比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。
又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
缓冲区的类型
缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。
1) 全缓冲
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。
2) 行缓冲
在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是标准输入(stdin)和标准输出(stdout)。
3) 不带缓冲
也就是不进行缓冲,标准出错情况stderr是典型代表,这使得出错信息可以直接尽快地显示出来。
下列情况会引发缓冲区的刷新:
缓冲区满时;
行缓冲区遇到回车时;
关闭文件;
使用特定函数刷新缓冲区
注意以下区别:
\n:换行,使光标下移动一格
\r回车,使光标回到本行行首
Enter:换行并回车,使光标移动到以下一个行首
如果是\r则不会刷出缓存区所以就不会显示内容,如果是\n则会立马显示出,如果不使用\n,可以通过使用fflush(stdout)刷新。
上述代码可以观察到过了3秒时间在屏幕中显示出来
加上fflush或者是\n则将会立马刷出到屏幕上。
进度条代码:
1 #include
2 #include
3 #include
4
5 int main()
6 {
7 int i=0;
8 char buff[100];
9
10 memset(buff,0,sizeof buff);
11 const char *label="|/-\\";
12 while(i<=100){
13 printf("[%-100s][%d%%][%c]\r",buff,i,label[i%4]);
14 fflush(stdout);
15 buff[i++]='#';
16 usleep(10000);
17 }
18 printf("\n");
19 return 0;
20 }
~
yum install git
创建好一个放置代码的目录
git clone [url]
这里的 url 就是刚刚建立好的 项目 的链接
git add [文件名]
git push