Linux易混名词整理和相关操作

    做Linux操作时对于不太熟悉的人有些名词易混;下载的安装包里面会夹杂一些 .tar、.gz、.glibc之类的名词,看上去跟Windows不太相同;下面来理一下;

目前本机在Hyper-V安装了Linux;用 CentOS-7.0-1406-x86_64-DVD.iso 这个文件安装的;

一 Linux的GNU是什么意思

GNU是一个技术组织,发起者是一个叫Richard Stallman的人。
这个组织中黑客云集,而且多是掌握核心技术的真正高手,他们的作品多是编译器、词法/语法分析器、底层函数库等。
他们发布了一种版权许可协议——GPL。

Linux的发展非常快,他本身遵循GPL版权可协议,同时又把GNU的很多软件集成了进去(注意,Linux仅仅是一个内核,不包含外围的应用程序),所以现在我们使用的Linux系统,应该完整地称之为GNU/Linux才对。 

GNU是一个*软件工程项目,其目标是创建一套完全*的操作系统。
到1991年Linux内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。
(在Linus Torvalds和其他开发人员的努力下,GNU组件可以运行于Linux内核之上,实现了GNU与Linux内核的完美结合)

GPL:GNU通用公共许可证
为保证GNU软件可以*地“使用、复制、修改和发布”,所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,即GPL。

GNU是一个项目,它是GNU's not Unix的“递归缩写”。
GNU倡导所谓的“free software”,翻译过来就是*软件,*软件的意思是说每个人都有使用、传播、修改软件的*,它有自己的版权申明(copyright)。

 

二 Linux中的libc和glibc

 

现在centos6.8-x64系统里的c标准库已经成了glibc,glibc取代了libc,c标准库的位置在/lib64/libc.so.6

Linux平台提供的C标准库包括:
    一组头文件,定义了很多类型和宏,声明了很多库函数。这些头文件放在哪些目录下取决于不同的编译器,stdarg.h和stddef.h位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录下,stdio.h、stdlib.h、time.h、math.h、assert.h位于/usr/include目录下。C99标准定义的头文件有24个。

    一组库文件,提供了库函数的实现。大多数库函数在libc共享库中,有些库函数在另外的共享库中,例如数学函数在libm中。

       ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。
    上述库函数在其各种支持 C 语言的 IDE 中都是有的。 你要是使用fopen/memcpy等等这样标准C的函数,当然在链接时使用到标准C库(ANSI C),如果你使用了read/write这些glibc库实现的函数,肯定就在链接时使用到glibc库。

       GNU C 函数库是一种类似于第三方插件的东西。由于 Linux 是用 C 语言写的,所以 Linux 的一些操作是用 C 语言实现的,因此,GUN 组织开发了一个 C 语言的库 以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。 

    glibc下载地址:http://mirror.hust.edu.cn/gnu/

    glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。

    glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

Linux系统glibc库版本信息查看

有时我们经常需要查看当前系统的glibc版本,可以这样查看:
/lib/libc.so.6

有时:/lib/x86-64-linux/libc.so.6
把这个文件当命令执行一下

或者:
因为ldd命令也是glibc提供的,所以也能查看
ldd  --version

glibc是什么,以及与gcc的关系?
glibc是gnu发布的libc库,也即c运行库。glibc是linux 系统中最底层的api(应用程序开发接口),几乎其它任何的运行库都会倚赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本 身也提供了许多其它一些必要功能服务的实现,

gcc 是编译器,基本上 Linux 下所有的程序(包括内核)都是 gcc 编译的,libc 当然也是。
gcc 和 libc 是互相依赖的两个软件,它们合作的方式类似 Linux 系统的 "自举"。先在一个可以运行的带有老 libc 和 gcc 的系统上,用老 gcc 编译出一个新版本的 gcc + 老 libc,再用这个新 gcc 编译出一个新 gcc + 新 libc,再用这套东东编译整个新系统。

看一下本机的glibc库版本;此命令要打两个横线,version之前;2.17版本;

Linux易混名词整理和相关操作

找一下glibc的头文件的位置;

cd /,回到根目录;

cls,Linux无此命令;

按前文;

stdarg.h和stddef.h位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录下;

stdio.h、stdlib.h、time.h、math.h、assert.h位于/usr/include目录下;

usr目录下面有lib和lib64目录;lib目录下没发现gcc目录;下回再搞;

Linux易混名词整理和相关操作

Linux没有 cd.. 命令;

看一下usr目录下的include目录;都是头文件;

Linux易混名词整理和相关操作

 

三 Linux下文件(文件夹)的压缩和解压

 

1.zip命令

例如:zip -r mysql.zip mysql 该句命令的含义是:将mysql文件夹压缩成mysql.zip
zip -r abcdef.zip abc def.txt 这句命令的意思是将文件夹abc和文件def.txt压缩成一个压缩包abcdef.zip

2.unzip命令
与zip命令相反,这是解压命令,用起来很简单。 如:unzip mysql.zip 在当前目录下直接解压mysql.zip。

压缩和解压命令还有很多可配置的参数,如解压缩时要不要覆盖原有的文件等;

下面来操作一下;

把test4文件夹压缩为test4.zip;

zip -r test4.zip test

Linux易混名词整理和相关操作

新建一个test1.txt;

Linux易混名词整理和相关操作

把test1文件夹和test1.txt压缩为test1.zip;

zip test1.zip test1 test1.txt

Linux易混名词整理和相关操作

 

四 tar

 

Linux tar命令用于备份文件。
tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

实例

压缩文件 非打包
# touch a.c       
# tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz
a.c

列出压缩文件内容
# tar -tzvf test.tar.gz 
-rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c

解压文件
# tar -xzvf test.tar.gz 
a.c

下面来操作一下;

新建一个demo1.cpp文件;

把demo1.cpp压缩为demo1.tar.gz;

tar -czvf demo1.tar.gz demo1.cpp

Linux易混名词整理和相关操作

查看压缩文件内容;

tar -tzvf demo1.tar.gz

Linux易混名词整理和相关操作

 

五 Linux中apt与apt-get的区别以及详细使用方法

 

Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。
随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。

那么,apt-get 与 apt 命令之间到底有什么区别呢?

apt与apt-get

apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。

在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。

简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。

通过 apt 命令,用户可以在同一地方集中得到所有必要的工具,apt 的主要目的是提供一种以「让终端用户满意」的方式来处理 Linux 软件包的有效方式。

apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。除此之外,它默认启用的几个特性对最终用户也非常有帮助。例如,可以在使用 apt 命令安装或删除程序时看到进度条。

apt 还会在更新存储库数据库时提示用户可升级的软件包个数。

如果你使用 apt 的其它命令选项,也可以实现与使用 apt-get 时相同的操作。

虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。

apt-get已弃用?
    目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。

apt-get install
    apt-get install是下载命令,下载的软件都会存到/var/cache/apt/archives下。
    apt还会检查Linux系统的包依赖关系,简化了用户安装和卸载包的过程。
    要下载一个软件包时,大概需要4步:
        1.扫描本地存放的软件包更新列表,找到最新版本的软件包。
        2.进行软件包依赖关系检查,找到支持该软件的所有软件包。
        3.从镜像站点中下载相关软件包(包含所依赖的软件包),并存放在/var/cache/apt/archive
        4.解压软件包,并自动完成应用程序的安装和配置。

 

六 gzip

 

    这个也是压缩的;

Linux压缩保留源文件的方法:gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:gunzip –c filename.gz > filename

把demo1.cpp压缩为demo1.cpp.gz;

Linux易混名词整理和相关操作