Linux下基本工具及彩色进度条程序

1.vim配置

Vim是从 vi 发展出来的一个功能强大、高度可定制的文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
那么vim怎么来配置它呢?
在目录/etc下面,有一个名为.vimrc的隐藏文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以建立私有的配置文件,命名为“.vimrc”。我们在自己的linux下执行命令:cd~ 进入到自己的祝工作目录,然后执行:vim .vimrc 打开自己目录下的vim配置文件,然后在文档中可以对vim进行配置。常用的配置选项有:

  • 设置语法高亮:syntax on
  • 显示行号:set nu
  • 设置缩进的空格数为:set shiftwidth=4

除了这些原生配置,我们还可以选择安装插件来完善配置,让vim更加好看、方便。常用的插件有taglist,winmanager。
网上有很多大神将原生配置和插件都打包起来以供下载,这里先放上一张我使用的vim配置的大神的截图解解馋。Linux下基本工具及彩色进度条程序_第1张图片
另外附上链接:传送门

2.常用编辑器

Vim

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。它普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。

Emacs

Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。
EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。
自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种是:1984年由Richard Stallman发起并由他维护至今的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。
Emacs使用Emacs Lisp,这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。

Sublime Text

Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

Notepad++

Notepad++是 Windows操作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。
Notepad++功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。
Notepad++是免费软件,可以免费使用,自带中文,支持众多计算机程序语言。

Lighttable

LightTable是一个应用ClojureScript写的可扩展的集成编辑环境(IDE)。由ChrisGranger和RobertAttorri开发。具有实时运行反馈,调试和搜索文档的功能。及时反馈功能提供了一个不同寻常的运行环境来让程序员构建抽象。开发团队试图创造一个能够让程序员及时获知程序运行状态的软件。该软件一开始只支持Clojure语言,但是现在通过众多扩展,也能够支持Python和JavaScript语言。

nano

nano是Unix和类Unix系统中的一个文本编辑器,是Pico的复制品。
GNU nano是一个小巧友好的文本编辑器. 与基本的文本编辑相比,nano提供许多额外的特性,例如:交互式的查找和替换,定位到指定的行列,自动缩进,特性切换,国际化支持,以及文件名标记完成.
nano的目标是类似Pico的全功能但又易于使用的编辑器。nano是遵守GNU通用公共许可证的自由软件,自从2.0.7版发布,许可证从GPLv2升级到GPLv3。

DartEditor

DartEditor是Google开发设计的,旨在帮助开发者制作光亮而惊叹的Web应用。DartEditor支持多种开发语言,同时也集成了Dartium。通过它的静态分析引擎,你可以创建,维护,调试和开发自己的Web应用。函数、类、方法等都能以树的结构列出来,方便你编写代码。

Chocolat

Chocolat是最新出现的一款强大的Mac系统文本编辑器,兼具原生的Cocoa及强大的文本编辑功能。Chocolat支持很多种编程语言的关键字高亮显示、窗口分割、标签页、色彩主题等功能。界面和MacVim非常相似。

常用编译器

GCC

GCC原名GNU C Compiler,后来逐渐支持更多的语言编译(C++、Fortran、Pascal、Objective-C、Java、Ada、Go等),所以变成了GNU Compiler Collection(GNU编译器套装),是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布,是大多数类Unix(如Linux、BSD、Mac OS X等)的标准编译器,而且适用于Windows(借助其他移植项目实现的,比如MingW、Cygwin等)。GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。
优点:类Unix下的标准编译器,支持众多语言,支持交叉编译。
缺点:默认不支持Windows,需要第三方移植才可用于Windows。

MSVC

MSVC是微软Windows平台Visual Studio自带的C/C++编译器。
优点:对Windows平台支持好,编译快。
缺点:对C++的新标准支持得少。

Clang

Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类型的简化处理以及更好的处理constexpr关键字。

ICC

全称Intel C++ Compiler,是Intel开发的C/C++/Fortran编译器套装,适用于Linux、Microsoft和Mac OS X操作系统,没有非IA指令集版本(就是说仅供x86架构CPU使用)。ICC广泛应用于高性能计算、分布式计算等商业计算领域,其向量化和并行化性能是业界的标杆,能够充分发挥现代处理器的特性。ICC编译器套装提供两个版本,针对高性能计算机测试采用前者,而后者面向嵌入式及移动设备。

IBM® XL C/C++ for AIX®

IBM® XL C/C++ for AIX® 是一种编译器,有助于为 IBM Power Systems™ 创建和维护使用 C/C++ 编写的应用。它能生成可利用最新 POWER8™ 架构功能的代码,并最大限度地提高硬件利用率。

Cygwin

Cygwin是一个Windows下Unix-like模拟环境,具体说就是Unix-like接口(OS API,命令行)重定向层,其目的是不修改软件源码仅重新编译就可以将Unix-like系统上的软件移植到Windows上(这个移植也许还算不上严格意义上的无缝移植)。始于1995年,最初作为Cygnus软件公司工程师Steve Chamberlain的一个项目。
和GCC的关系:Cygwin是让Windows拥有Unix-like环境的软件而不是编译器,GCC是安装在Cygwin上的编译器。
优点:可以比MingW移植更多的软件到Windows上,对Linux接口模拟比MingW全面。
缺点:软件运行依赖cygwin1.dll,速度受点影响。

MingW

MingW(Minimalist GNU on Windows)是一个Linux/Windows下的可以把软件源码中Unix-like OS API调用通过头文件翻译替换成相应的Windows API调用的编译环境,其目的和Cygwin相同。从而把Linux上的软件在不修改源码的情况下编译为可直接在Win下执行的exe。
和GCC的关系:MingW是编译环境,不是编译器,GCC是MingW中的核心组成。
优点:在Win下可以和Linux一样的方式编译C/C++源码,可以说是Win版的GCC,其生产的Windows PE程序相比Cygwin不依赖任何第三方库,比Cygwin纯粹,理论上也更快速。
缺点:编译速度、编译出的程序在算法上可能都比MSVC慢。

gcc -g和readelf命令

默认编译生成的可执行文件是无法使用 gdb 来跟踪或调试的,因为可执行程序中没有可供 gdb 调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们便需要用到 -g 选项,这样生成的可执行程序,倘若出现问题,便可以使用 gdb 找出问题具体出现的位置,便于问题的解决。

gcc -g test.c

“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。
加上-g选项以后,gcc在编译是会做以下额外的操作:

  1. 创建符号表,符号表包含了程序中使用的变量名称的列表。
  2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

readelf命令

readelf用来显示ELF格式目标文件的信息.可通过参数选项来控制显示哪些特定信息。
ELF文件有下面三种类型:

  1. 目标文件
    $ gcc -c test.c
    得到的test.o就是目标文件,目标文件通过链接可生成可执行文件。
    静态库其实也算目标文件,静态库是通过ar命令将目标打包为.a文件。
    如:ar crv libtest.a test.o
  2. 可执行文件
    $gcc -o test test.c
    得到的test文件就是可执行的二进制文件。
  3. 共享库
    $ gcc test.c -fPIC -shared -o libtest.so
    得到的文件listtest.so就是共享库。

可以通过readelf来区分上面三种类型的ELF文件,每种类型文件的头部信息是不一样的。

彩色进度条程序

直接上代码和截图:
progressbar.c

#include 
#include 
#include 

int main()
{
    int i=0;
    int j=0;
    char bar[102];
    int color[]={1,2,3,4,5,6,7};
    const char* status="|/-\\";
    memset(bar,0,sizeof(bar));
    while(i<=100)
    {
        printf("\033[3%dm[%-100s]\033[0m\033[33m[%d%%]\033[0m[%c]\r",color[j],bar,i,status[i % 4]);
        fflush(stdout);
        bar[i++]='#';
        if(i%15==0)
        {
            ++j;
        }
        usleep(50000);
    }
    printf("\n");
    return 0;
}

Makefile

progressbar:progressbar.c
	gcc $^ -o $@

效果图:
在这里插入图片描述

Linux软件安装

  1. 源码安装
    大多数开源的软件都是源码的形式。拿过来自己编译,安装。
    优点:源码安装兼容性好。  
    缺点:过程繁琐还容易卡壳。
  2. rpm安装
    RPM(Red-Hat Package Manager)红帽的软件包管理器。一般rpm安装使用rpm包,rpm包和tar包、gzip等不同,这些是压缩包,而rpm包是源码和一些安装规则的集合。使用RPM方式来安装后会指定软件安装位置,并生成对应的配置文件、服务启动脚本文件等。
    优点:简化安装方式,不需要联网!
    缺点:指定rpm包去安装,没有解决依赖关系。
  3. yum安装
    是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
    优点:再次简化安装
    缺点:需要联网,更准确的说法是需要有一个yum源。大型的公司都会有自己的yum源,或者是找到可访问的yum源,修改yum配置文件中的yum源地址,并使之生效,这样就可以用yum进行软件安装了。

你可能感兴趣的:(Linux)