Linux,全称为GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,我们常说的Linux,指的是Linux内核,一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux现在已经是现代互联网体系中不可或缺的一部分了,可能你看不见它,但是它一直在你身边,各种嵌入式设备,如手表,机器人。还有广为人之的安卓。地球上大多数的服务器都是Linux操作系统。从航天到军事、从科研到金融、从手机到电脑,无处不在。
因其开源的特点,Linux的发展速度以指数规模增长,无数开发者加入到Linux开发的行列中来。本章简单概括一下Linux的优点和发展历史。

一、为什么要使用Linux

Linux有以下众多特点:

  • 开源免费Linux是完全免费的操作系统,并且开放源代码,任何人都可以随意修改其源代码。
  • 多用户、多任务Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
  • 安全可靠Linux的代码是开源的,所以每个人都可以参与进入修补漏洞。此外,Linux的用户权限管理也使得安全风险降低
  • 稳定Linux服务器一直以稳定性闻名,可以持续运行很久都不易崩溃。
  • 多平台Linux可以运行在多种硬件平台上,x86,arm及其他各种嵌入式设备。

以上几类特点是Linux内核的特点,我们常说的Linux,一般都是指其内核,还有很多个人、社区或者企业,都有根据Linux内核进行“改装”的发行版,各种发行版的特点不同,有的注重服务器性能,有的注重图形系统。
在Linux那么多年的迅猛发展后,Linux也产生了很多与内核无关的优点。例如

  • 方便Linux的在线安装软件包工具非常方便,一行命令即可将软件安装好,环境配置非常方便快捷。
  • 开源软件多大多数的开源软件的首要适配平台都是Linux,所以在Linux有许多免费又开源的软件工具让你使用。

    二、发展历程

    20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和macOC这几种。
    Unix价格昂贵,不能运行于PC;DOS显得简陋,且源代码被软件厂商严格保密;MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。
    MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个。
    在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛用。

    三、常用发行版

    1、Debian
    老牌发行版,非常稳定,适合用于服务器。
    2、Ubuntu
    Ubuntu是Debian的一款衍生版,侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。于2004年9月首次公布的。属于热门发行版之一,因其图形界面开发较完善以及良好的社区支持,很受初接触Linux的人群青睐。
    3、CentOS
    CentOS 是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux 是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS 就是将商业的 Linux 操作系统 RHEL 进行源代码再编译后分发,并在 RHEL 的基础上修正了不少已知的漏洞。
    4、Fedora
    Fedora Linux(第七版以前为Fedora Core)是由Fedora项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora是商业化的Red Hat Enterprise Linux发行版的上游源码。
    5、Kali
    Kali Linux是Debian的一款衍生版。旨在渗透测试和数字取证。它预先构建了用于渗透测试的多种工具。
    6、Arch
    Arch是一款采用滚动发行方式的操作系统,只要安装一次就够了,每当发行了某个新版本,就可以升级发行版,无需重新安装。Pacman是Arch Linux的软件包管理器。Arch Linux既支持X86处理器架构,又支持X86_64架构,安装程序可以从光盘或U盘来运行。

    四、推荐阅读

    有兴趣深入了解Linux以及自由软件,开源历史的,推荐阅读一下书籍
    《只是为了好玩》
    《大教堂与集市》
    《自由软件,自由社会》
    《黑客与画家》

    五、Linux系统的组成

  1. linux内核(linus 团队管理)
  2. shell:用户与内核交互的接口
  3. 文件系统:ext3、ext4等。windows 有 fat32 、ntfs
  4. 第三方应用软件

5.1Shell的基本知识

除了Shell、其他的都应该挺好懂的,那么Shell是什么东西呢???
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)
Shell可以执行:

  • 内部命令
  • 应用程序
  • shell脚本

使用type命令可以区分内部命令和外部命令
于是乎,我们利用Shell就可以干下面这些事了:

  • 命令行解释(这是用得最多的!)
  • 命令的多种执行顺序
  • 通配符( wild-card characters )
  • 命令补全、别名机制、命令历史
  • I/O重定向( Input/output redirection )
  • 管道( pipes )
  • 命令替换( 或$( ) )
  • Shell编程语言( Shell Script )

Shell的主要版本有以下这么多:

  • 我们常用(默认)的就是bash(bourne again shell)

    5.2Linux基本目录结构

    在Windows下,会有基本的目录结构的:
    image.png
    image.png
    Linux下也不例外了,也是有基本的目录结构的:

image.png

Linux 文件系统是一个目录树的结构,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录

  • bin 存放二进制可执行文件(ls,cat,mkdir等)
  • boot 存放用于系统引导时使用的各种文件
  • dev 用于存放设备文件
  • etc 存放系统配置文件
  • home 存放所有用户文件的根目录
  • lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
  • mnt 系统管理员安装临时文件系统的安装点
  • opt 额外安装的可选应用程序包所放置的位置
  • proc 虚拟文件系统,存放当前内存的映射
  • root 超级用户目录
  • sbin 存放二进制可执行文件,只有root才能访问
  • tmp 用于存放各种临时文件
  • usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
  • var 用于存放运行时需要改变数据的文件

    5.3命令基本格式

    cmd [options] [arguments],options称为选项,arguments称为参数
    选项和参数都作为Shell命令执行时的输入,它们之间用空格分隔开

  • Linux是区分大小写的

一般来说,后面跟的选项如果单字符选项前使用一个减号-。单词选项前使用两个减号—

  • 这是一般的情况,有些命令还是不归属这种规律的(相对较少)~~~
  • 例子:ls -a和ls -all,a 单个字符使用一个-,一个单词all 使用两个—

在Linux中,可执行的文件也进行了分类:

  • 内置命令:出于效率的考虑,将一些常用命令的解释程序构造在Shell内部
  • 外置命令:存放在/bin、/sbin目录下的命令
  • 实用程序:存放在/usr/bin、/usr/sbin、/usr/share、/usr/local/bin等目录下的实用程序
  • 用户程序:用户程序经过编译生成可执行文件后,可作为Shell命令运行
  • Shell脚本:由Shell语言编写的批处理文件,可作为Shell命令运行

    5.4通配符

    学过一些正则表达式的或者有点基础的同学对通配符应该就不陌生的了,在Linux也有通配符(在搜索的时候挺有用的)

  • *:匹配任何字符和任何数目的字符

  • ?:匹配单一数目的任何字符
  • :匹配[ ]之内的任意一个字符
  • [! ]:匹配除了[! ]之外的任意一个字符,!表示非的意思

    5.5文件的类型

    在Linux下文件的类型有这么多:

  • 普通文件-

  • 目录d
  • 符号链接l
    • 硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
    • 软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径(简单地理解为 Windows 中常见的快捷方式)。
  • 字符设备文件 c
  • 块设备文件b
  • 套接字s
  • 命名管道p

我们常见的就是普通文件,目录和符号链接。其他的了解一下即可~
符号链接参考资料:

  • www.jianshu.com/p/dde6a01c4…

    5.5.1用户主目录

    可能在网上查阅资料的时候会出现用户主目录这么一个名词,那他是什么呢???
    前面已经说了,我们的Linux是多用户的网络系统!所以,我们可以在Linux下创建多个用户,每个用户都会有自己专属的空间

  • 所以,在创建用户时,系统管理员会给每个用户建立一个主目录,通常在/home/目录下

  • 比如:用户osmond的主目录为:/home/osmond

用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。