Fork me on GitHub

Linux_常用工具

Linux下的常用工具

我在这里找到了一个linux命令查询的网站:http://man.linuxde.net/

编辑器

编辑器 特点
ed 行编辑器使用起来很不方便,每次只能对一行进行操作
pico pico很象DOS下的edit程序,打开之后,屏幕下方有操作的提示信息,功能简单,也可以完成操作,一步一步做就可以了。pico的功能键直接列在屏幕的最下方,可以做为帮助来指导操作。
emacs 可以在emacs中进行文本编辑,也可以编写程序代码,做程序调试,编辑HTML/SGML,读News,收发e-mail…,而且emacs经过配置后还支持中文。强大往往意味着操作方法的复杂,emacs也是如此,必须记非常多的命令才能使用它。
vi/vim vim与vi相比,增加了更多的特性,如彩色与高亮显示,可以使我们的编辑工作更轻松。

我们主要对vim进行学习

vim的基本概念

vim 有12种模式,每一种模式都有不同的功能,不同的模式做不同的操作

我们主要掌握三种模式:普通模式、插入模式、底行模式(视图模式、替换模式)

vim操作
  • 从普通模式切换到插入模式的方法
1
2
3
4
5
6
7
8

i:从光标所在位置开始插入
a:从光标所在位置的下一个字符开始插入
I:将光标移动到行首,然后进入插入模式
A:将光标移动到行尾,然后进入插入模式
o:将光标所在行的下方,新建一行,进入插入模式
O:将光标所在行的上方,新建一行,进入插入模式
s:删除光标所在字符,然后进入插入模式
  • 从普通模式切换到底行模式
1
2
3

'shift' + ':' w保存,q退出,q!强制退出(不保存本次修改),wq保存并退出
!pwd 临时执行命令,按回车返回vim
  • [ ] 从插入模式/底行模式返回普通模式: ==ESC==

  • [ ] 普通模式下的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

h:向左移动光标
j:向下移动光标
k:向上移动光标
l:向右移动光标
w:光标向右移动一个单词
b:光标向左移动一个单词
yy:复制光标所在行
nyy:从光标所在行开始向下复制n行
p:向光标所在行下方粘贴
P:向光标所在行上方粘贴
dd:删除光标所在行(vim中删除其实是剪贴)
ndd:从光标所在行开始向下删除n行
x:删除光标所在字符
dw:删除光标所在位置开始的一个单词
u:撤销操作
Ctrl+r:返回撤销操作
Ctrl+v:进入列视图模式,可以进行选择操作
v:进入行视图模式
r:替换光标所在字符
R:进入替换模式,对内容一直替换
gg:光标移动到文档的首行
G:光标移动到文档的首行
gg=G:全文缩进对齐
  • vim的配置

参考链接:https://www.linuxidc.com/Linux/2016-05/131824.htm

编译器

Linux 下可用的编译器有 GCC、EGCS 和 PGCC,其中最常用的编译器便是 GCC

gcc

linux下程序的执行就是告诉操作系统程序文件在哪个路径下

gcc是一个编译工具,将我们所写的C语言程序编程成为机器可识别的语言程序

  • gcc常用选项
1
2
3
4
5
-o:指定要生成的文件的名称
-E:只预处理
-S:只编译
-c:只汇编
-static 静态链接(默认动态)
程序的编译过程

==预处理==–>==编译==–>==汇编==–>==链接==

1
2
3
4
5
6
7
8
9
1. 预处理	gcc -E test.c -o test.i
去掉注释展开所有代码
2. 编译 gcc -S test.i -o test.s
先纠错,没有错误则编译成为汇编代码
3. 汇编 gcc -c test.s -o test.o
将汇编代码生成一个机器可识别代码(汇编只是将我们写的代码编译完毕,但是不能运行,
因为代码不完全,我们调用的一些库函数,并不知道如何实现,需要经过第四步才能生成可执行程序)
4. 链接 gcc test.o -o test.exe
将库中的函数链接过来和我们的代码最终合并生成可执行程序
  • 动态链接和静态链接
1
2
3
4
5
动态链接:链接的是动态库
静态链接:链接的是静态库
动态链接生成的可执行程序小,静态链接大,但是动态链接生成的程序运行时需要动态库的存在
静态库不需要(因为静态链接就是将库中的函数全部拿过来生成可执行程序了,所以大)
程序的连接方式默认是动态链接

安装

yum

yum是红帽系列linux操作系统进行软件包管理的工具,软件的安装、移除、查看都是通过yum工具完成的

1
2
3
4
5
查看:yum list | grep 想要安装的包名字
安装:yum install 想要安装的包名字
移除:yum remove 安装包名字
修改更新yum源的方法
/etc/yum.repos.d/CentOS-Base.repo
rpm
1
2
3
4
5
查看:rpm -a | grep "软件或者包的名字"
安装:rpm -i 需要安装的包文件名
升级:rpm -U 需要升级的包
卸载:rpm -e 需要卸载的安装包
卸载之前,通常需要使用rpm -q …命令查出需要卸载的安装包名称
源码安装

源码安装大致可以分为三步骤: (./configure)–> 编译(sudo make) –> 安装(sudo make install)

1、配置:这是编译源代码的第一步,通过 ./configure 命令完成。
执行此步以便为编译源代码作准备。常用的选项有 –prefix=PREFIX,
用以指定程序的安装位置。更多的选项可通过 –help 查询。也有某些程序无需执行此步。

2、编译:一旦配置通过,可即刻使用 make 指令来执行源代码的编译过程。
视软件的具体情况而定,编译所需的时间也各 有差异,我们所要做的就是耐心等候和静观其变。
此步虽然仅下简单的指令,但有时候所遇到的问题却十分复杂。
较常碰到的情形是程序编译到中途却无法圆满结 束。
此时,需要根据出错提示分析以便找到应对之策。

3、安装:如果编译没有问题,那么执行 sudo make install 就可以将程序安装到系统中了。

安装 介绍
rpm rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。
yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

makefile

在makefile中我们通常定义很多的程序编译规则,在终端命令行下敲击一个make命令,那么这个时候make这个程序,就会跑到当前目录下找寻这个Makefile文件,然后按照makefie中已经规划好的编译顺序以及编译规则来完成整个项目的编译

  • make命令

只在当前目录下找名字为Makefile/makefile的文件

make可以检测目标对象与依赖对象的时间属性,判断程序是否需要重新编译(一个目标对象是否重新生成)

永远之找第一个目标对象生成,生成了第一个对象之后就退出了

make可以指定要生成的对象 ,例如make clean

  • 伪对象

不管是不是最新的都需要重新生成(执行下边的生成命令)

使用 ==.PHONY== 来声明一个对象是伪对象

  • 变量

预定义变量—Makefile中已经提前定义好的变量

$@ 编写规则中要生成的目标对象

$^ 编写规则中所有的依赖对象

$< 编写规则中第一个依赖对象

wildcard关键字用于获取文件名

a=$(src),变量的使用需要加上一个$符号,否则认为是字符串赋值

  • 如何编写makefile
1
2
目标对象名称:依赖对象名称
[制表符]通过依赖对象生成目标对象的命令

avater

gdb使用

  • gcc -g

gcc -g 选项是开启gdb调试选项,目的是为了在可执行程序中加入调试符号信息

gdb调试一个程序需要这个程序在编译时加上-g选项来开启调试,为可执行程序加入一些调试符号信息。例如:gcc -g main.c -o main

  • gdb如何加载程序

gdb ./main 或者 gdb进入之后 file ./main

  • gdb常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
q	退出
run/r 开始运行程序,程序直接跑起来
r -l -s -a 程序的参数在这里加载
start 开始逐步调试程序
list/l 查看当前行附近代码
next/n 下一步,不跟踪进入函数
until n 直接运行到第n行
b 添加断点
eg: b main.c:n 给main.c第n行添加断点
b n 给当前文件第n行添加断点
b func 给函数添加断点
s 下一步,跟踪进入函数
i 查看详细信息
i b 查看当前断点信息
d 默认删除所有断点
d n 删除id 为n的断点
p 打印变量内容(p i(变量))
watch 变量监控,变量修改后会停下来(watch i(变量))
c 继续运行
bt 查看函数调用栈
-------------本文结束感谢您的阅读-------------

本文标题:Linux_常用工具

文章作者:李煜哲

发布时间:2018年10月04日 - 21:10

最后更新:2018年10月05日 - 21:10

原始链接:http://yoursite.com/2018/10/04/Linux-常用工具/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者

觉得好的话就打赏一下吧