【linux学习】linux工具篇(上)
大家好我是程序员小青蛙下面进行学习linux的工具想了解更多看下一篇工具篇前言今天来学习一些linux的基本工具vim,编译器gcc,g等下面进行介绍。一、Linux软件包管理器yum什么是软件包在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序.但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装.软件包和软件包管理器,就好比App和应用商店这样的关系.yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器.主要应用在Fedora,RedHat,Centos等发行版上.关于rzsz这个工具用于windows机器和远端的Linux机器通过XShell传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去.方便在Windows和linux上进行操作通过yum list命令可以罗列出当前一共有哪些软件包.由于包的数目可能非常之多,这里我们需要使用grep命令只筛选出我们关注的包.例如:yum list | grep lrzsz安装rzszsudo yum install lrzsz卸载软件sudo yum remove lrzsz二、开发工具vim1.vim的基本概念目前需要掌握三种命令模式插入模式底行模式。正常/普通/命令模式(Normal mode)控制屏幕光标的移动字符、字或行的删除移动复制某区段及进入Insert mode下或者到last line mode插入模式(Insert mode)只有在Insert mode下才可以做文字输入按「ESC」键可回到命令行模式。该模式是我们用的最频繁的编辑模式。末行模式(last line mode)文件保存或退出也可以进行文件替换找字符串列出行号等操作。在命令模式下shift:即可进入该模式。要查看你的所有模式打开vim底行模式直接输入2. vim的基本操作进入vim,在系统提示符号输入vim及文件名称后就进入vim全屏幕编辑画面:不过有一点要特别注意就是你进入vim之后是处于[正常模式]你要切换到[插入模式]才能够输入文字。[正常模式]切换至[插入模式]输入a输入i输入o[插入模式]切换至[正常模式]目前处于[插入模式]就只能一直输入文字如果发现输错了字,想用光标键往回移动将该字删除可以先按一下「ESC」键转到[正常模式]再删除文字。当然也可以直接删除。[正常模式]切换至[末行模式]「shift ;」,其实就是输入「:」退出vim及保存文件,在[正常模式]下按一下「:」冒号键进入「Last line mode」,例如:: w保存当前文件: wq (输入「wq」,存盘并退出vim): q! (输入q!,不存盘强制退出vim)3. vim正常模式命令集插入模式按「i」切换进入插入模式「insert mode」按“i”进入插入模式后是从光标当前位置开始输入文件按「a」进入插入模式后是从目前光标所在位置的下一个位置开始输入文字按「o」进入插入模式后是插入新的一行从行首开始输入文字。从插入模式切换为命令模式按「ESC」键。移动光标vim可以直接用键盘上的光标来上下左右移动但正规的vim是用小写英文字母「h」、「j」、「k」、「l」分别控制光标左、下、上、右移一格按「G」移动到文章的最后按「$」移动到光标所在行的“行尾”按「^」移动到光标所在行的“行首”按「w」光标跳到下个字的开头按「e」光标跳到下个字的字尾按「b」光标回到上个字的开头按「#l」光标移到该行的第#个位置如5l,56l按gg进入到文本开始按shiftg进入文本末端按「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行行首。4. vim末行模式命令集在使用末行模式之前请记住先按「ESC」键确定您已经处于正常模式再按「」冒号即可进入末行模式。列出行号「set nu」:输入「set nu」后会在文件中的每一行前面列出行号。跳到文件中的某一行「#」:「#」号表示一个数字在冒号后输入一个数字再按回车键就会跳到该行了如输入数字15再回车就会跳到文章的第15行。查找字符「/关键字」:先按「/」键再输入您想寻找的字符如果第一次找的关键字不是您想要的可以一直按「n」会往后寻找到您要的关键字为止。「?关键字」先按「?」键再输入您想寻找的字符如果第一次找的关键字不是您想要的可以一直按「n」会往前寻找到您要的关键字为止。问题和查找有和区别操作实验一下保存文件「w」:在冒号输入字母「w」就可以将文件保存起来离开vim「q」按「q」就是退出如果无法离开vim可以在「q」后跟一个「!」强制离开vim。「wq」一般建议离开时搭配「w」一起使用这样在退出的时候还可以保存文件。5.简单vim配置配置文件的位置在目录/etc/下面有个名为vimrc的文件这是系统中公共的vim配置文件对所有用户都有效。而在每个用户的主目录下都可以自己建立私有的配置文件命名为“.vimrc”。例如/root目录下通常已经存在一个.vimrc文件,如果不存在则创建之。切换用户成为自己执行su进入自己的主工作目录,执行cd ~打开自己目录下的.vimrc文件执行vim .vimrc常用配置选项设置语法高亮: syntax on显示行号: set nu设置缩进的空格数为4: set shiftwidth4其他办法是下载插件6.Linux编译器-gcc/g使用1.预处理进行宏替换)2.编译生成汇编)3.汇编生成机器可识别代码4.连接生成可执行文件或库文件)预处理(进行宏替换)预处理功能主要包括宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。实例:gcc –E hello.c –o hello.i选项“-E”,该选项的作用是让gcc在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。编译生成汇编在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。实例:gcc –S hello.i –o hello.s汇编生成机器可识别代码汇编阶段是把编译阶段生成的“.s”文件转成目标文件读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了实例:gcc –c hello.s –o hello.o连接生成可执行文件或库文件在成功编译之后,就进入了链接阶段。实例:gcc hello.o –o hello在这里涉及到一个重要的概念:函数库我们的C程序中并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?最后的答案是:系统把这些函数实现都被做到名为libc.so.6的库文件中去了,在没有特别指定时,gcc会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到libc.so.6库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。函数库一般分为静态库和动态库两种。静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的libc.so.6就是动态库。gcc在编译时默认使用动态库。完成了链接之后,gcc就可以生成可执行文件,如下所示。gcc hello.o –o hellogcc默认生成的二进制程序是动态链接的这点可以通过file命令验证。gcc选项-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S编译到汇编语言不进行汇编和链接-c编译到目标代码-o文件输出到文件-static此选项对生成的文件采用静态链接-g生成调试信息。GNU调试器可利用该信息。-shared此选项将尽量使用动态库所以生成文件比较小但是需要系统由动态库.-O0-O1-O2-O3编译器的优化选项的4个级别-O0表示没有优化,-O1为缺省值-O3优化级别最高-w不生成任何警告信息。-Wall生成所有警告信息。gcc选项记忆esc,iso例子总结基本工具的学习主要对vim的命令和用法进行学习。