# **1. Linux简介** Linux最初是1991年由芬兰的Linus Torvalds发起,目的是为了避开当时的类Unix的版权问题,Linux从一开始就是开源的,由网上组织松散的开发者协作完成,并在1994年开始遵循GPL许可协议。 Linux、git创始人、技术狂人 —— 林纳斯·托瓦兹 ![](images/WEBRESOURCE6f00c4094996487e8c714760360e01dfstickPicture.png) [内核官网](https://www.kernel.org/) 通常谈到Linux,有两个层面的含义: - 一指Linux内核,它运行于整个系统内部,用户看不见摸不着,其主要功能是: 1. 内存管理 1. 文件管理 1. 任务管理 1. 网络管理 1. 设备管理 - 二指Linux发行版操作系统,例如Ubuntu、RedHat、Fedora、CentOS等。所谓的发行版指的是可直接发行给用户直接使用的操作系统,它不仅包括了上述所说的内核,且包括了诸如桌面系统、编辑编译环境、Shell、浏览器等用户日常使用必备的软件。 ![](images/WEBRESOURCE45c51d8809e541af992df6e704909de0stickPicture.png) 各种Linux发行版操作系统 作为操作系统(Operating System),目前世界范围内有影响力的有: 1. Linux(开源系统,可定制可裁剪) 1. HarmonyOS(华为公司,先进的分布式操作系统) 1. Windows(微软公司,针对普通家庭用户) 1. MacOS(苹果公司,针对普通家庭用户) Linux与其他OS最大的区别是 ![](images/WEBRESOURCE5296aa7dcfd14b96881247007a0e0892stickPicture.png) # **2. Ubuntu** 在众多Linux发行版中,Ubuntu是用的比较多的一款。点击进入 [Ubuntu 官方主页](https://cn.ubuntu.com/download/desktop) 可以下载最新版本,Ubuntu系统每隔半年发布一个新版本,分别在每年的4月和10月,比如: - 2019年10月份发布的被称为:Ubuntu-19.10 - 2020年04月份发布的被称为:Ubuntu-20.04-LTS 注意到  ![](images/WEBRESOURCEec78f62ce35a4b90b4e04faf253872e0stickPicture.png) 从网上下载了Ubuntu的 ISO 镜像文件之后,需要在虚拟机中安装了之后才能使用,以下是已经安装好并配好环境的 Ubuntu 系统,开箱即食,童叟无欺: - 适用于 VirtualBox: - Ubuntu-20.04-LTS( - 适用于 VMware: - Ubuntu-18.04-LTS( - Ubuntu-20.04-LTS( ## **2.1 APT软件管理器** Ubuntu最大的特点是继承了Debian系统的APT软件管理体系,使得Linux下的软件管理变得非常简便。如下图所示,各种厂商在世界各地部署了Ubuntu软件服务器,统一管理Ubuntu中的deb软件包,用户只要能联网,即可从最近的服务器上直接下载安装所需的服务或软件。APT带给用户最便捷的地方在于,它能自动为用户分析和安装软件的依赖模块,从而避开了Linux软件安装中饱受诟病的依赖问题。 ![](images/WEBRESOURCE8b9e7526b7414947be881eb4bfef5f68stickPicture.png) 使用APT软件管理器,一般遵循如下步骤: 1. 选择恰当的服务器(物理距离近的、速度快的) 1. 执行 update 指令,更新服务器软件清单 选择完毕恰当的服务器之后,还需执行APT的  ```shell gec@ubuntu:~$ sudo apt update ``` **安装与卸载** ```shell # 安装 gec@ubuntu:~$ sudo apt install xxx # 卸载 gec@ubuntu:~$ sudo apt remove xxx gec@ubuntu:~$ sudo apt remove --purge xxx #将配置文件也一并删除 # 修复APT管理器 gec@ubuntu:~$ sudo apt install -f # 自动卸载一些已经无用的软件或服务 gec@ubuntu:~$ sudo apt autoremove ``` ## **2.2 Linux目录结构** Linux系统的目录结构中,不同的文件夹分属不同的功能,列表如下: Linux下一切皆文件,除网络设备 ![](images/WEBRESOURCEbd44608fd6664867bca2f8e4561fae77image.png) 文件1的路径:/usr/local/文件1 (根目录下的usr目录下的local的文件1) | 目录名 | 功能 | | -- | -- | | / | 根目录,所有的分区和文件的起点(类似与C盘) | | /bin | 普通用户可用的命令所在路径 | | /sbin | 超级用户可用的命令所在路径 | | /etc | 各种配置文件所在路径 | | /home | 所有普通用户的家目录所在路径 | | /lib | 系统库文件所在路径 | | /boot | 系统内核镜像文件所在路径 | | /dev | 设备节点所在路径 | | /usr | 第三方库和服务默认安装路径 | | /proc | 系统进程数据在文件系统中的挂载路径 | | /sys | 系统内核数据在文件系统中的挂载路径 | | /var | 存放一些“易变”的文件,例如安装包、系统日志等 | | /mnt | 默认的分区挂载路径 | 目录与目录间的关系不是分属,Linux下目录与目录或目录与文件是索引关系 ## **2.3 命令终端** 使用Linux的乐趣,在于其直达核心的命令终端,几乎所有的操作都可以在终端中进行,配合Linux中大量精巧的命令,真正做到让开发者敲代码时心无旁骛,摒弃任何多余的分散注意力的东西,后续课程,重点就是介绍终端中的各种命令。 Shell 是用户与操作系统内核之间的接口,负责 Shell 是一种命令行解释器(Command Line Interpreter),它接收用户输入的文本命令,将其翻译为操作系统内核能够理解的指令,并执行相应操作。 在Ubuntu中Shell 命令行解释器使用的是bash解释器(Bash(Bourne Again SHell)是一种命令行解释器,也是 Linux 和 macOS 系统的默认 Shell) 命令终端(bash解释器) ``` 1、ctrl + alt + t //打开一个终端 2、鼠标右键打开终端 3、点击终端图标 ``` ![](images/WEBRESOURCE5fcadc9becb441e19779d82e2d845ea6image.png) 终端前缀说明: ```shell gec@Ubuntu:~$ ``` > gec :当前登录的用户名称 > Ubuntu:当前系统名称 > ~:当前所处的路径名称(~的完整路径是"/home/gec",当用户处于自己的家目录是路径用~表示,代表这个目录是用户的主目录,不同用户的家目录是不同的) > @ : $:这些符号的作用是用于分隔内容($表示当前用户的身份是普通用户 `#`表示当前用户身份是超级管理员用户) **能用普通用户尽量不要用root** 有许多人在使用 Linux 系统时存在一些坏习惯,比如使用  ``` Important: you can and should build everything as a normal user. There is no need to be root to configure and use Buildroot. By running all commands as a regular user, you protect your system against packages behaving badly during compilation and installation. ``` 翻译: ``` 重要: 你可以且应该使用普通用户去构建所有的程序。 没有任何必要非得要root去配置和使用系统,使用普通用户去执行命令,可以避免在程序编译和安装时出现的莫名其妙的系统错误。 ``` **总之** **终端使用小技巧** 1. 打开相同路径下的新窗口: ``` ctrl + shift + n ``` 打开相同路径下的新终端窗口 ![](images/WEBRESOURCEa00846a6c2b74327a597f110d86d52f4stickPicture.png) 1. 快速定位命令行光标位置: ``` 快速定位到命令末尾: ctrl + e 快速定位到命令开头: ctrl + a ``` 1. 快速复制、粘贴: ``` 复制终端的文本:选中即已复制 文本粘贴到终端:按下鼠标滚轮 ``` 1. 自动补全单词 ``` 在目录下唯一单词自动补全:tab ``` 1. 历史命令浏览 ``` 浏览上一条或下一条历史命令:方向上/下 ``` 1. 快速切换路径 ``` 快速切换路径到家目录:cd 快速切换路径到上一个路径位置:cd - ``` ## **2.4 环境变量** 环境变量是能作用于整个系统的特定变量,比如  下面介绍跟环境变量相关的常见操作。 **1) 查看系统所有的环境变量** 命令  ```shell gec@ubuntu:~$ env CLUTTER_IM_MODULE=xim LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US.UTF-8 DISPLAY=:0 GNOME_SHELL_SESSION_MODE=ubuntu COLORTERM=truecolor XDG_SESSION_ID=2 USER=gec DESKTOP_SESSION=ubuntu WINDOWPATH=2 TERM=xterm-256color SHELL=/bin/bash VTE_VERSION=5201 QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx IM_CONFIG_PHASE=2 XDG_CURRENT_DESKTOP=ubuntu:GNOME GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1 GNOME_TERMINAL_SERVICE=:1.82 XDG_SEAT=seat0 SHLVL=1 GDMSESSION=ubuntu GNOME_DESKTOP_SESSION_ID=this-is-deprecated XAUTHORITY=/run/user/1000/gdm/Xauthority XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg HOME=/home/gec PATH=/usr/local/arm/5.4.0/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin XDG_RUNTIME_DIR=/run/user/1000 gec@ubuntu:~$ gec@ubuntu:~$ ``` **2) 查看某个环境变量** 如果需要查看某个特定的环境变量的值,可以使用命令  ```shell gec@ubuntu:~$ echo $PATH PATH=/usr/local/arm/5.4.0/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin gec@ubuntu:~$ gec@ubuntu:~$ ``` **3) 设置某个环境变量** 1. 临时设置(以PATH为例): ```shell gec@ubuntu:~$ export PATH=$PATH:/home/gec ``` 注意,以上设置只对当前的终端有效。 1. 永久设置(以PATH为例): 1. 打开终端的配置文件 ~/.bashrc ```shell gec@ubuntu:~$ export PATH=$PATH:/home/gec ``` 注意:需要执行如下命令来加载修改过的配置文件: ```shell gec@ubuntu:~$ source ~/.bashrc ```