C++学习(linux 一)

linux基础学习一

  • 操作系统作用
    • 操作系统的目标
    • 操作系统的地位
  • Unix/Linux操作系统介绍
    • Unix家族
    • Linux家族
    • Linux使用用户
    • Unix的衍生品
    • Linux相关版本
  • 文件系统
    • 目录与路径
      • 目录
      • 路径
    • 文件系统
      • Windows与Linux文件系统区别
        • 补充Linux安装分区问题(针对虚拟机分配20GB)
      • Linux目录结构
    • 一切皆文件
      • 一切皆文件
      • 文件分类
    • 文件权限
      • 访问用户
      • 访问权限
      • 举例说明
  • 未完待续...

c++的学习会很大程度上在服务器上运行,回顾学习一下服务器,同时我将单独学习一下linux。展开c++,linux两个共同学习!

操作系统作用

操作系统的目标

  1. 方便:使得计算机系统易于使用
  2. 有效:以更有效的方式使用计算机系统资源
  3. 扩展:方便用户的有效开发、测试和引进新功能

操作系统的地位

操作系统作为硬件与软件之间的桥接作用,像刚开始学习51/stm32单片机一样,我们直接用软件操作硬件就比较麻烦,无法直接在上面运行exe程序,操作系统使得上层应用更加编写快捷。

C++学习(linux 一)_第1张图片

Unix/Linux操作系统介绍

Unix家族

 1965:贝尔实验室(Bell Labs)加入一项由通用电气和麻省理工学院合作的计划,该计划要建立一套多使用者、多任务、多层次的MULTICS操作系统。后来因为项目太为复杂失败。
 1969:其主要开发者Thompson(后被称为UNIX之父)和Ritchie领导一组开发者,开发了一个新的多任务操作系统—UNICS,后来被改名为Unix,最初的Unix是用B语言和汇编语言混合编写而成。
 1971:两人在贝尔实验室共同发明了C语言,并于1973用C语言重写了Unix。
 1974:UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。
 1980:有两个最主要的Unix的版本线,一个是Berkeley的BSD UNIX,另一个是AT&T的Unix,两者的竞争最终引发了Unix的战争,最终导致Unix出现各种各样的变种。
 1982:AT&T基于版本7开发了UNIX System Ⅲ的第一个商业版本,并不再开源。
 1992~2001:由于版权问题,AT&T公司与BSD开发组开始了一场将近10年的版权官司。UNIX由于其昂贵的费用,仅局限于大型机的应用;BSD因为版权问题,失去了宝贵的发展时期。

Linux家族

 Minix(mini-UNIX)最初是由Andrew Tanenbaum教授,仿照4.3BSD的源代码,白手起家完成了12000行C语言的编写工作这个系统只是一个教学工具,没有什么实际应用价值。
 1990年,Linus Torvalds决定编写一个自己的Minix内核,初名为Linus’ Minix,意为Linus的Minix内核,后来改名为Linux,此内核于1991年正式发布,并逐渐引起人们的注意。
 Linux操作系统的诞生、发展、和成长过程依赖于五个重要支柱:unix操作系统、minix操作系统、GNU计划、POSIX标准和互联网。
 GNU计划:GNU是“GNU is Not Unix”的递归缩写,由Richard M.Stallman于1984年创办,旨在开发一个免费、类unix的操作系统-GNU系统及其开发工具;Emacs编辑系统、BASH shell程序、GCC、GDB等开发工具都是GNU组织的产品。
 1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。
 POSIX标准:POSIX标准定义了操作系统应该为应用程序提供的接口标准,POSIX标准用来统一Unix、Linux各分支编程接口,以提高其通用型和可移植性。

Linux使用用户

C++学习(linux 一)_第2张图片

Unix的衍生品

C++学习(linux 一)_第3张图片

Linux相关版本

序号 版本
1 Ubuntu
2 CentOS
3 Linux Mint
4 openSUSE
5 Fedora
6 RedHat

一般常用CentOS/Ubuntu;

文件系统

目录与路径

目录

 目录是一组相关文件的集合,即文件夹。
 一个目录下面除了可以存放文件之外还可以存放其他目录,即可包含子目录。
 在确定文件、目录位置时,DOS和Unix/Linux都采用“路径名+文件名”的方式。路径反映的是目录与目录之间的关系。

路径

Unix/Linux路径由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为斜杠“/”,而DOS则用反斜杠“\”来分割各个目录。
路径分为绝对路径和相对路径:
 绝对路径

  1. 绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。
  2. 下级目录接在上级目录后面用“/”隔开。
  3. 注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。
     相对路径
  4. 相对路径是指目标目录相对于当前目录的位置。
  5. 如果不在当前目录下,则需要使用两个特殊目录“.”和“”了。目录“.”指向当前目录,而目录“…”。

文件系统

Windows与Linux文件系统区别

在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符:
C++学习(linux 一)_第4张图片
每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:
C++学习(linux 一)_第5张图片
在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
CentOS
C++学习(linux 一)_第6张图片
Ubuntu
C++学习(linux 一)_第7张图片
Unix/Linux也采用了树状结构的文件系统,它由目录和目录下的文件一起构成。但Unix/Linux文件系统不使用驱动器这个概念,而是使用单一的根目录结构,所有的分区都挂载到单一的“/”目录上,其结构示意图如图所示:
C++学习(linux 一)_第8张图片

补充Linux安装分区问题(针对虚拟机分配20GB)

目录 建议大小 描述
/ 5-10GB 根目录
/swap 1-3GB 交换空间,物理内存1.5倍即可
/boot 500MB-1GB Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。
/tmp 5-10GB 系统的临时文件,一般系统重启不会被保存。
/home 尽量大 存放用户文件

Linux目录结构

 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
 /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
 /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
 /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
 /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
 /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
 /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
 /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
 /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
 /opt:给主机额外安装软件所摆放的目录。
 /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
 /root:系统管理员root的家目录。
 /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
 /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
 /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
 /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
 /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

一切皆文件

一切皆文件

Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。
在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。

文件分类

通常,Unix/Linux系统中常用的文件类型有5种:普通文件、目录文件、设备文件、管道文件和链接文件。
 普通文件
普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。
 目录文件
Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。
每个目录文件至少包括两个条目,“…”表示上一级目录,“.”表示该目录本身。
 设备文件
Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。
字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。
 管道文件
管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
 链接文件
似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。
总之,Linux/Unix一切皆文件

文件权限

Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。

访问用户

通过设定权限可以从以下三种访问方式限制访问权限:
 只允许用户自己访问(所有者)
所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。

 允许一个预先指定的用户组中的用户访问(用户组)
用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。

 允许系统中的任何用户访问(其他用户)
用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类

这有点类似于 QQ 空间的访问权限:
 这个 QQ 空间是属于我的,我相当于管理者(也就是“所有者”),我想怎么访问就怎么访问。
 同时,我可以设置允许 QQ 好友访问,而这些 QQ 好友则类似于“用户组”。
 当然,我可以允许所有人访问,这里的所有人则类似于“其他用户”。

访问权限

用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
 读权限(r)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
 写权限(w)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
 可执行权限(x)
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。

举例说明

ls - all

通过上面指令会出现以下内容:

-rw-rw-r-- 1 admin admin  XXXXXXX

C++学习(linux 一)_第9张图片

  1. 第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。
  2. 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。

每一个用户都有它自身的读、写和执行权限。
 第一组权限控制访问自己的文件权限,即所有者权限。
 第二组权限控制用户组访问其中一个用户的文件的权限。
 第三组权限控制其他所有用户访问一个用户的文件的权限。

这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。

未完待续…

你可能感兴趣的:(C++学习(linux 一))