Linux软件包管理器—yum
-
查看软件包
通过 yum list 命令可以罗列出当前一共有哪些软件包:
yun list
由于包的数量非常多,可以用 grep 命令进行筛选:
yun list | grep lrzsz
筛选之后:
①:软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构
②:“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
③:“el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
④:base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” .查看已经安装的软件包:
yum list installed
-
怎样安装软件
sudo yum install package(软件包名字)
注意:
①:安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成。
②:yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。 -
怎样卸载软件包
sudo remove package_name(软件包名字)
linux编辑器—vim
-
vim的基本概念
vim一共有 12 种模式(打开,关闭,查看,查询,插入,删除,替换,撤销,复制,普通,插入,底行),但是只需要掌握三种模式:命令模式/普通模式、插入模式、底行模式。
①命令模式/普通模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
②插入模式:只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
③底行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 就可进入该模式。 -
vim的基本操作
①:模式切换:
普通—>插入:i / l / a / A / o
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「A」进入插入模式后,是从行末开始输入文字;
按「I」进入插入模式后,是从行首开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字;插入—>普通:Esc
普通—>底行::
底行—>普通:Esc
-
vim 普通模式下的命令
移动光标命令:
- vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格;
- 按「G」:移动到文章的最后;
- 按「 $ 」:移动到光标所在行的“行尾”;
- 按「^」:移动到光标所在行的“行首”;
- 按「w」:光标跳到下个字的开头;
- 按「e」:光标跳到下个字的字尾;
- 按「b」:光标回到上个字的开头;
- 按「#l」:光标移到该行的第#个位置;
- 按[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行行首;
vim底行模式命令
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。
列出行号
- 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。[重要]
跳到文件中的某一行
- 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。
查找字符
- 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
- 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。
保存文件[重要]
- 「w」: 在冒号输入字母「w」就可以将文件保存起来
离开vim[重要]
-
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
-
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
配置好用的vim
vim 的配置文件名是vimrc,共有两个:
- ①:一个是公共的、所有用户的vimrc,对所有用户都有效。公共配置文件位于 :/etc/vim/vimrc
- ②: 一个是私有的、个人的.vimrc。个人的配置文件是隐藏的,不进行配置的话一般是没有这个文件的,需要自己创建.vimrc ,私有的配置文件位于个人用户的主目录下:/home/用户名/.vimrc
在这里贴一个超级好用的配置,按照操作即可:如何配置好用的vim
Linux编译器-gcc/g++使用
编译过程:
- 预处理:展开头文件,宏替换,条件编译,去掉注释等
gcc -E test.c -o test.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。
- 编译:检查语义语法错误、生成汇编代码
gcc -S test.i -o test.s
选项“-S”来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
- 汇编:生成机器可识别代码,将汇编代码生成二进制代码
gcc -c test.s -o test.o
选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码
- 链接:生成可执行文件或库文件
在Windows下生成xx.exe文件;在Linux下生成xx.out文件
也可以自己指定生成可执行文件 :gcc test.o -o test
在执行程序的时候,程序需要被夹在到内存中,若多个程序使用了相同的库,则内存中就会出现大量的库函数代码冗余,这是没必要的。完全相同的库函数在内存中加载一次就够了,所以就出现了两种链接方式:
- 静态链接:链接生成可执行程序时,直接将库中的代码拷贝一份到可执行程序中,其后缀名一般为“.a” 。优点:可以不依赖库文件的存在,库文件删除依然可以进行运行。缺点:若库文件被大量的程序使用,则运行时会造成大量的内存中代码冗余。
- 动态链接:链接生成可执行程序时,并不拷贝代码,只是在可执行程序中记录函数位置符号信息,等到运行的时候将库中的代码加载到内存中,并且多个程序可以共享使用。动态库一般后缀名为“.so”,优点:节省资源,内存中共用一份。缺点:程序运行时,库文件必须存在。
ps:gcc 在编译时默认使用动态库.
Linux调试器-gdb使用
gdb调试程序的前提条件:
- Linux gcc/g++出来的二进制程序,默认是release模式,要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,使 gcc 生成 debug 可执行程序。
gcc -g test.c -o test //生成debug可执行程序
gdb test //加载程序调试
gdb调试指令
逐步调试
- start(s):开始逐步调试
- list(l):查看调试行附近代码。ps:还可以 list filename:line(filename 为文件名,line 为行数,下面同样)
- next(n):下一步(不进入函数)
- step(s):下一步(进入函数)
- continue ( c):从当前位置开始直接运行程序
- until(u):直接运行到指定行停下。ps:until filename : line
- run( r):直接运行程序
断点调试
- break(b):在某一行设置断点。ps: break filename:line 或者 break funcname(funcname为函数名)
- info break(ib):查看断点信息。
- delete(d):删除断点。ps:delete <断点号>。
- print( p):打印变量内容。
- watch:变量监控,当变量发生变化时候,程序就停下来。 ps:watchvariable_name(variable_name 为变量名)
其他指令
- backtrace(bt):查看函数调用栈。
- ctrl + d 或 quit:退出调试