Linux 从入门到跑路第一讲 -- 程序员都应该知道的 Linux知识!

文章目录

    • Linux 的前世今生
    • Linux 与 Windows 的恩怨情仇
    • Linux 的组成
    • Linux 的一些特点
    • Linux 的目录结构
        • 文件类型
        • 子目录
        • /usr
        • /var
        • 绝对路径与相对路径

Linux 的前世今生

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux 系统最大的特色是源代码完全公开,任何人都可以获得甚至修改源代码。

Linux 与 Windows 的恩怨情仇

Linux 与 Windows 都是当前市场上较为火热的操作系统,那它们有什么区别呢?

  1. 界面:Windows 界面统一; Linux 图形界面风格可能因为发布版的不同而不同,可能互不兼容
  2. 使用:Windows 使用简单,容易入门,图形化界面便于新手操作;Linux 图形界面容易入门,文字界面则需要一定程度的学习
  3. 学习:Windows 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难;Linux 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易
  4. 软件:Windows 需要购买相应的授权;Linux 大部分软件都可以自由获取
  5. 安全:Linux 要比 Windows 更加安全
  6. 定制:Windows 是封闭的,而 Linux 是开源的

Linux 的组成

  1. 内核:内核是操作系统的核心。内核直接与硬件交互,并处理大部分较低层的任务,如内存管理、进程调度、文件管理等
  2. Shell:Shell 是一个处理用户请求的工具,它负责解释用户输入的命令,调用用户希望使用的程序
  3. 命令和工具:日常工作中,你会用到很多系统命令和工具,如 cp、mv、cat 和 grep 等。在 Linux 系统中,有250多个命令,每个命令都有多个选项;第三方工具也有很多,他们也扮演着重要角色
  4. 文件和目录:Linux 系统中所有的数据都被存储到文件中,这些文件被分配到各个目录,构成文件系统,其中 Linux 的目录与 Windows 的文件夹是类似的概念

Linux 的一些特点

  1. 在 Linux 中,所有内容以文件形式保存,包括硬件
  2. Linux 严格区分大小写
  3. Linux 不靠扩展名区分文件类型

Linux 的目录结构

Linux 的所有数据都被保存在文件中,所有的文件被分配到不同的目录,目录是一种类似于树的结构,称为文件系统。其中,文件系统采用级层式的树状目录结构,在此结构中的最上层是根目录 “/”,然后在此目录下再创建其他的目录。

文件类型

Linux 有三种基本的文件类型:

  1. 目录:目录可以包含普通文件和特殊文件,其相当于 Windows 中的文件夹
  2. 普通文件:普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对 Linux 来说并无区别,对普通文件的解释由处理该文件的应用程序进行
  3. 设备文件:Linux 与外部设备(例如光驱,打印机,终端)是通过一种被称为设备文件的文件来进行通信的。Linux 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的,Linux 在与一个外部设备通讯前,这个设备必须首先要有一个设备文件存在。例如,每一个终端都有自己的设备文件来供 Linux 写数据(出现在终端屏幕上)和读取数据(用户通过键盘输入)。设备文件和普通文件不一样,设备文件中并不包含任何数据

子目录

根目录 (/) 包含的子目录如下:

  1. /bin:系统有很多放置执行档的目录,但 /bin 比较特殊。因为 /bin 放置的是在单人维护模式下还能够被操作的指令。在 /bin 底下的指令可以被 root 与一般帐号所使用,主要有:cat,chmod(修改权限),chown,date,mv,mkdir,cp,bash 等常用的指令
  2. /boot:主要放置开机会使用到的档案,包括 Linux 核心档案以及开机选单与开机所需设定档等等
  3. /dev:在 Linux 系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置
  4. /etc:系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有 root 有权力修改。建议不要放置可执行档 (binary) 在这个目录中
  5. /home:系统预设的使用者家目录 (home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号: ~ :代表当前使用者的家目录,而 ~guest:则代表用户名为 guest 的家目录
  6. /lib:系统的函式库非常的多,而 /lib 放置的则是在开机时会用到的函式库,以及在 /bin 或 /sbin 底下的指令会呼叫的函式库而已 。什么是函式库呢?你可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。 尤其重要的是 /lib/modules/ 这个目录,因为该目录会放置核心相关的模组(驱动程式)
  7. /media:media 是媒体的英文,顾名思义,这个 /media 底下放置的就是可移除的装置。 包括软碟、光碟、DVD 等等装置都暂时挂载于此
  8. /mnt:如果你想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中。在早时候,这个目录的用途与 /media 相同。 只是有了 /media 之后,这个目录就用来暂时挂载用了
  9. /opt:给第三方协力软体放置的目录 。 另外,如果你想要自行安装额外的软体,那么也能够将你的软体安装到这里来。 不过,以前的 Linux 系统中,我们还是习惯放置在 /usr/local 目录下
  10. /root:系统管理员 (root) 的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有 root 的家目录,所以我们会希望 root 的家目录与根目录放置在同一个分区中
  11. /sbin:Linux 有非常多指令是用来设定系统环境的,这些指令只有 root 才能够利用来设定系统,其他使用者最多只能用来查询而已。放在 /sbin 底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令
  12. /srv:srv 可以视为 service 的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录
  13. /tmp:让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录。 因为 FHS(一个对 Linux 做一些基本要求的机构) 甚至建议在开机时,应该要将 /tmp 下的资料都删除

需要注意的是,由于根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。那哪些目录不可与根目录分开呢?一共有以下五个:

  1. /etc:配置文件
  2. /bin:重要执行档
  3. /dev:所需要的装置文件
  4. /lib:执行档所需的函式库与核心所需的模块
  5. /sbin:重要的系统执行文件

/usr

/usr 里面放置的数据属于可分享的与不可变动的 ,可以分享给局域网络内的其他主机来使用。

/usr 是 Unix 操作系统软件资源所放置的目录,而不是指用户的数据。FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己独立的目录。这是因为所有系统默认的软件都会放置到 /usr 底下,系统刚安装完毕时,这个目录会占用最多的硬盘容量。

/var

如果 /usr 是安装时会占用较大硬盘容量的目录,那么 /var 就是在系统运作后才会渐渐占用硬盘容量的目录。 因为 /var 目录主要针对常态性变动的文件,包括缓存、登录档以及某些软件运作所产生的文件, 包括程序文件,或者例如 MySQL 数据库的文件等等。

绝对路径与相对路径

我们可以将路径定义为绝对路径与相对路径两种。

  1. 绝对路径:由根目录 (/) 开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc
  2. 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai ,反正开头不是 / 就属于相对路径的写法

相对路径是以你当前所在路径的相对位置来表示的,举个例子,当前在 /home 这个目录下,想进入 /var/log 这个目录,应该怎么规划路径呢?

如果用绝对路径来表示,直接 /var/log 就行了,但如果使用相对路径表示,我们需要写成 ../var/log,这是因为 ./ 代表当前目录,../ 代表上一层的目录,我们现在在 /home 目录下,需要先返回上一层目录,再向 /var 移动。

参考:深入理解linux系统的目录结构(总结的非常详细)

你可能感兴趣的:(linux)