软件包管理工具yum
查看软件包:yum list(yum list installed 查看已安装的软件包)
安装软件包:yum install 软件包名称 (root用户可操作)
移除软件包:yum remove package_name
lrzsz:Linux服务器和window互传文件工具,只能在XShell中使用。
编程相关工具
编辑器
Emacs,著名的集成开发环境和文本编辑器。emacs
Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM
emacs和vim比起来,编辑效率低下。emacs强调统一的环境,便于编程,里面包含了源代码管理,邮件收发、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能。与gbd出自一家,兼容性好。
Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器。Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。
vim
vim有12中模式,常见的有三种:插入模式、普通模式、底行模式。
普通模式下常见指令:
移动光标:上下左右箭头,h左,j下,k上,l右,ctrl+f向下翻页,ctrl+b向上翻页,gg跳转到第一行,G跳转到最后一行,w/b按单词向右/向回移动。
增删改查:yy复制一行,p向下一行添加新行进行粘贴,P向上一行添加新行进行粘贴,n yy从光标开始向下复制n行,dd删除光标所在行,n dd向下删除n行。x删除光标所在字符,dw删除光标所在单词。这里没有绝对的删除,删除均是剪切。v进入视图模式,移动光标可以选中一部分,y复制,p粘贴。
其他操作:u撤销,ctrl+r撤销后返回。gg=G全文对齐,编辑代码时可用此命令快速调整全文格式。
所有的模式都是围绕普通模式进行切换,其他模式下按ESC键即可回到普通模式。
vim 文件名:使用vim编辑器打开某个文件。
i 光标所在处进入插入模式,I光标至行首进入插入模式,a光标向后移动一个字符进入插入模式,A光标至行尾进入插入模式,u光标至最后进入插入模式,o光标至所在行的下一行插入新行进入插入模式。
:进入底行模式,w保存,q退出,结合使用:wq保存并退出,q!强制退出,进入底行模式输入数字光标跳转到相应行首。
编译器
VS系列:微软的Visual Studio,目前最全面和功能强大的主流IDE(集成开发环境)。
VisualC++ :Windows平台上的编译器,和VS集成的很好,编译效率和编译后的代码效率不错。
IDEA (最主流的 JAVA IDE),全称 IntelliJ IDEA,是java编程语言开发的集成环境。在业界被公认为最好的java开发工具之一。尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能。IDEA是JetBrains公司的产品,最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。JB全家桶 : PyCharm(Python) CLion(C++) PHP(PHPSton) JavaScript(WebStorm) Go(GoLand)。
CLion,一款专为开发 C 及 C++ 所设计的跨平台 IDE。 它是以 IntelliJ 为基础设计的,包含了许多智能功能来提高开发人员的生产力,从而提升工作效率 。如果你在mac或者Linux下已经通过命令行编译通过了,那么就可以直接进行图像化界面 调试。且调试过程简单。在CLion中,开发人员可以使用之前定义发布的函数、变量、数据成员或者一个类,在IDE中会用红色来突出显示。同时CLion还提供了一套可靠的重构来帮助开发人员保持代码的质量,此代码重构适用于整个变化范围。跨平台:可在64-bit Linux,OS X 以及64-bit Windows上使用。
Atom(Github官方开发的编译器),具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言。支持宏,自动完成分屏功能,集成了文件管理器。
VSCode(MS微软),全称 Visual Studio Code,凭借扩展可以从一个普通的代码编辑器变身成一个万能的轻量IDE。优点是打开大文件快,速度和 Notepad++不相上下,且体验比Notepad++好。(可用作文本阅读),VSCode 里几乎可以找到想要的对应编程语言的扩展。在 VSCode 当中,微软也集成了对 Git 版本管理的支持,可以直接在 VSCode 内完成提交、同步等 Git 操作。开发者针对 Git 专门开发了扩展这个扩展名为 GitLens,同时它可以对代码做一个版本管理上的透析,可以在这上面看到每一个文件的历史更改,代码哪一次提交中被更改也有很直观的展示,可极大提高团队的开发效率。VSCode 本质是一个开源应用,同时它支持高自由度的扩展开发,可以利用扩展直接对 VSCode 本身进行修改,开发出重构 VSCode 界面的扩展。且设定是VSCode 的扩展本身并不阻止扩展对程序本身一些文件的操作,VSCode 只是会对此给出警告。
Eclipse,一个开放源代码的、基于Java的可扩展开发平台。它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
gcc/g++
Linux下的编译器
C语言编译器:gcc;C++编译器g++。
将用户所写的高级语言代码解释成为机器可以识别的指令。
编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:
1、预处理:展开所有的代码(头文件的展开/宏替换/条件编译/去掉注释)gcc -E 生成 .i 的文件[预处理器cpp]
2、编译:语义语法检查,然后将预处理后的文件转换成汇编语言, gcc -S 生成文件 .s [编译器egcs]
3、汇编:将汇编转换为二进制机器指令,gcc -c 生成 .o 的文件[汇编器as]
4、链接:将所有的文件代码以及库文件中的代码集合打包, 生成可执行程序 [链接器ld]
gcc main.c -o main指定生成的文件名称。
详情:GCC 参数详解
readelf命令,一般用于查看ELF格式的文件信息,常见的文件有如在Linux上的可执行文件,动态库(*.so)或者静态库(*.a) 等包含ELF格式的文件。readelf命令使用说明
调试器gdb
gdb调试程序的前提:使用gcc生成debug版的可执行程序(gcc默认生成release版),debug版可执行程序中包含调试符号信息。
gcc -g main.c -o main:生成可执行程序main的debug版。
gdb ./man:加载程序调试。
逐步调试:
start:开始逐步调试
list:查看调试行附近代码(l)list filename: line-行号,例 list 10
next:下一步,下一行,并不进入函数(n)
step:下一步,跟踪进入函数(s)
continue:从当前位置开始运行至程序结束(c)
until:直接运行到指定行停下,例 until filename: 14 或 until 14
run:直接运行程序至结束(r)
断点调试:
break:break num/funcname 打断点,指定行或指定函数(b)
info break:查看断点信息
delete:删除所有断点,delete 4删除4号断点(d)
watch i:针对变量i设置断点,变量内容发生改变时停下,变量监控
print:打印变量内容,print i 打印i,print &i 打印i的地址(p)
其他调试
backtrace:查看函数调用栈,栈顶函数即为发生断错误(非法内存访问)的函数。
项目管理工具
项目构建工具make/Makefile
Makefile:是一个普通的文本文件,这个文件中记录的是一个项目的所有构建规则。
make:是一个解释程序,在执行make命令的时候,会到当前目录下寻找Makefile文件,然后对Makefile中记录的构建规则进行解释执行,最终完成整个项目的构建。
Makefile编写规则
目标对象(需要生成的可执行程序名称):依赖对象(依赖的源文件,用来判断目标对象是否需要重新生成)
[tab \t] 为了生成目标对象所执行的指令
通配符:%
# 开头为注释
预定义变量:
$^:右边所有的依赖对象
$@:左边目标对象的内容
$<:依赖对象中的第一个
make命令的解释执行规则
从上往下找到第一个目标对象,执行命令生成后就退出。若依赖对象不存在则继续向下方寻找依赖对象的生成规则,先生成依赖对象,然后最终生成目标对象。
.PHONY:target_name:声明伪对象,伪对象是不管目标对象是否最新,每次都需要重新生成。
项目版本管理工具git
git是分布式管理工具,SVN是集中式。
从远程克隆一个项目至本地:git clone url(url统一资源定位符)
本地的修改提交:
git add ./*
git commit -m "备注信息"
远程服务器的提交:git pish origin branch_name上传到制定分支,master是主分支