Skip to content

Linux

字数: 0 字 时长: 0 分钟

第 1 章 Linux 基础

1.1 操作系统概述

计算机是由硬件和软件所组成

硬件:计算机系统中由电子、机械和光电元件等组成的各种物理装置的总称

软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机进行交流,而操作系统就是软件的一类

一个完整的计算机:

操作系统是计算机软件的一种,它主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作

当计算机拥有了操作系统,就相当于拥有了灵魂,操作系统可以:

  • 调度 CPU 进行工作
  • 调度内存进行工作
  • 调度硬盘进行数据存储
  • 调度网卡进行网络通讯
  • 调度音响发出声音
  • 调度打印机打印内容

1.2 认识 Linux

Linux 系统的组成如下:

  • Linux 系统内核
  • 系统级应用程序

内核提供系统最核心的功能,如:调度 CPU、调度内存、调度文件系统、调度网络通讯、调度 IO 等

系统级应用程序可以理解为出厂自带程序,可供用户快速上手操作系统,如:文件管理器、任务管理器、图片查看、音乐播放等

Linux 发行版:

内核是免费、开源的,这也就代表了任何人都可以获得并修改内核,并且可以自行集成系统级程序,提供了内核 + 系统级程序的完整封装,称之为 Linux 发行版

任何人都可以封装 Linux,目前市面上由非常多的 Linux 发行版,常用的如下:

1.3 虚拟机

学习 Linux 系统,就需要有一个可用的 Linux 系统,如何获得?将自己的电脑重装系统为 Linux?这不现实,因为 Linux 系统并不适合日常办公使用,我们需要借助虚拟机来获得可用的 Linux 系统环境进行学习

虚拟机就是虚拟的电脑:

借助虚拟化技术,我们可以在系统中通过软件模拟计算机硬件,并给虚拟硬件安装真实的操作系统,这样就可以在电脑中虚拟出一个完整的电脑以供学习 Linux 系统

1.4 WSL

第 2 章 Linux 基础命令

2.1 Linux 的目录结构

Linux 的目录结构是一个树型结构

Windows 系统可以拥有多个盘符,如 C 盘、D 盘、E 盘,Linux 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面

Linux 路径的描述方式:

  • 在 Linux 系统中,路径之间的层级关系使用 / 来表示
  • 在 Windows 系统中,路径之间的层级关系使用 \ 来表示

2.2 Linux 命令

命令行:即 Linux 终端(Terminal)是一种命令提示符页面,以纯字符的形式操作系统,可以使用各种字符化命令对系统发出操作指令

命令:即 Linux 程序,一个命令就是一个 Linux 的程序,命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈

2.2.1 Linux 命令基础格式

无论是什么命令,用于什么用途,在 Linux 中,命令有其通用的格式:

command [-options] [parameter]

其中:

  • command 是命令本身
  • -options 是命令的一些选项,可以通过选项控制命令的行为细节
  • parameter 是命令的参数,多数用于命令的指向目标等
  • 其中 [] 表示可选的意思

示例:

ls -l /home/yusi :ls 是命令本身,-l 是选项,/home/yusi 是参数。意思是以列表的形式,显示 /home/yusi 目录内的内容

cp -r test1 test2 :cp 是命令本身,-r 是选项,test1 和 test2 是参数。意思是复制文件夹 test1 成为 test2

2.2.2 ls 命令

ls 命令的作用是列出目录下的内容,语法细节如下:

ls [-a -l -h] [Linux 路径]

  • -a 选项表示 all 的意思,即列出全部文件(包含隐藏的文件/文件夹)
  • -l 选项表示以列表(竖向排列)的形式展示内容,并展示更多信息
  • -h 选项需要和 -l 选项搭配使用,用于显示文件的大小单位

当不使用选项和参数直接使用 ls 命令本体,表示以平铺形式列出当前工作目录下的内容

2.2.3 home 目录和工作目录

前面说 ls 命令是列出当前工作目录下的内容,那么当前工作目录是什么?

Linux 系统的命令行终端,在启动的时候默认会加载当前登录用户的 home 目录作为当前工作目录,home 目录是每个 Linux 操作用户在 Linux 系统的个人账户目录,路径在:/home/用户名

2.2.4 cd 命令

当 Linux 终端(命令行)打开的时候,会默认以用户的 home 目录作为当前的工作目录,我们可以通过 cd 命令更改当前所在的工作目录

cd [Linux 路径]

  • cd 命令无需选项,只有参数,表示要切换到哪个目录下
  • cd 命令直接执行,不写参数,表示回到用户的 home 目录

2.2.5 pwd 命令

pwd 命令可以查看当前所在的工作目录

pwd

  • pwd 命令无选项,无参数,直接输入 pwd 即可

2.2.6 相对路径、绝对路径、特殊路径符

绝对路径:以根目录为起点,描述路径的一种写法,路径描述以 / 开头

相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以 / 开头

特殊路径符:

  • . 表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的 Desktop 目录内,和 cd Desktop 效果一致
  • .. 表示上一级目录,比如 cd .. 即可切换到上一级目录,cd ../.. 切换到上二级的目录
  • ~ 表示 home 目录,比如 cd ~ 即可切换到 home 目录,cd ~/Desktop 切换到 home 内的 Desktop 目录

2.2.7 mkdir 命令

通过 mkdir 命令可以创建新的目录(文件夹)

mkdir [-p] Linux路径

  • 参数必填,表示 Linux 路径,即要创建的文件夹的路径,相对路径或绝对路径均可
  • -p 选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

注意:创建文件夹需要有修改权限,请确保操作均在 home 目录内,不要在 home 外操作,涉及到权限问题,home 外无法成功

2.2.8 文件操作命令

2.2.8.1 touch 命令

可以通过 touch 命令创建文件

touch Linux路径

  • touch 命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可使用
2.2.8.2 cat 命令

有了文件后,可以通过 cat 命令查看文件的内容

cat Linux路径

  • cat 同样没有选项,只有必填参数,参数表示被查看的文件路径,相对、绝对、特殊路径符都可以使用
2.2.8.3 more 命令

more 命令同样可以查看文件内容,同 cat 不同的是:

  • cat 是直接将内容全部显示出来
  • more 支持翻页,如果文件内容过多,可以一页一页的展示

more Linux路径

  • 同样没有选项,只有必填参数,参数表示被查看的文件路径
2.2.8.4 cp 命令

cp 命令可以用于复制文件/文件夹

cp [-r] 参数1 参数2

  • -r 选项可选,用于复制文件夹使用,表示递归
  • 参数1 是 Linux 路径,表示被复制的文件或文件夹
  • 参数2 是 Linux 路径,表示要复制去的地方
2.2.8.5 mv 命令

mv 命令可以用于移动文件/文件夹

mv 参数1 参数2

  • 参数1 是 Linux 路径,表示被移动的文件或文件夹
  • 参数2 是 Linux 路径,表示要移动去的地方,如果目标不存在则进行改名,确保目标存在
2.2.8.6 rm 命令

rm 命令用于删除文件/文件夹:

rm [-r -f] 参数1 参数2 ...... 参数N

  • 同 cp 命令一样,-r 选项用于删除文件夹
  • -f 表示 force,强制删除(不会弹出提示确认信息)
    • 普通用户删除内容不会弹出提示,只有 root 管理员用户删除内容会有提示
    • 所以一般普通用户用不到 -f 选项
  • 参数1、参数2、......、参数N 表示要删除的文件或文件夹路径,按照空格隔开

rm 命令支持通配符 * 用来做模糊匹配:

  • 符号 * 表示通配符,即匹配任意内容(包含空)
  • test* 表示匹配任何以 test 开头的内容
  • *test 表示匹配任何以 test 结尾的内容
  • *test* 表示匹配任何包含 test 的内容
2.2.8.7 which 命令

Linux 里的命令其实它们的本体就是一个一个的二进制可执行程序,可以通过 which 命令查看所使用的一系列命令的程序文件存放在哪里

which 要查找的命令

2.2.8.8 find 命令

可以通过 find 命令去搜索指定的文件

find 起始路径 -name "被查找的文件名"

  • 起始路径 可以指定范围搜索
  • -name 表示按文件名搜索
  • "被查找的文件名" 可以使用通配符进行模糊匹配
2.2.8.9 grep 命令

可以通过 grep 命令从文件中通过关键字过滤文件内容行

grep [-n] 关键字 文件路径

  • -n 选项可选,表示在文件内容结果中显示匹配的行的行号
  • 关键字 必填,表示过滤的关键字,带有空格或其它特殊符号建议使用 "" 将关键字包围起来
  • 文件路径 必填,表示要过滤内容的文件的路径,可作为内容输入端口
2.2.8.10 wc 命令

可以通过 wc 命令统计文件内容的行数、单词数量等

wc [-c -m -l -w] 文件路径

2.2.8.11 管道符

管道符 | 的含义是将管道符左边命令的结果作为右边命令的输入

可以嵌套使用:

2.2.8.12 重定向符

重定向符 >>>

  • > 将左侧命令的结果覆盖写入到符号右侧指定的文件中
  • >> 将左侧命令的结果追加写入到符号右侧指定的文件中
2.2.8.13 tail 命令

使用 tail 命令可以查看文件尾部内容,跟踪文件的最新更改

tail [-f -num] Linux路径

  • -f 表示持续跟踪
  • -num 表示查看尾部多少行,不填默认 10 行
2.2.8.14 echo 命令

可以使用 echo 命令在命令行内输出指定内容

echo 输出的内容

2.2.8.15 反引号符

被反引号包围的内容,会被作为命令执行而非普通字符

2.2.8.16 vi/vim 编辑器

第 3 章 Linux 用户和权限

3.1 root 用户

无论是 Windows、MacOS、Linux 均采用多用户的管理模式进行权限管理

  • 在 Linux 系统中,拥有最大权限的账户名为:root(超级管理员)

普通用户的权限一般在其 home 目录内是不受限的,一旦出了 home 目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

3.1.1 su 和 sudo 和 exit 命令

sudo 命令:

为普通用户配置 sudo 认证:

3.2 用户和用户组

Linux 系统中可以:

  • 配置多个用户
  • 配置多个用户组
  • 用户可以加入多个用户组中

Linux 中关于权限的管控级别有 2 个级别,分别是:

  • 针对用户的权限控制
  • 针对用户组的权限控制

比如,针对某个文件,可以控制用户的权限,也可以控制用户组的权限

3.2.1 用户组管理

以下命令需要 root 用户执行:

  • 创建用户组 groupadd 用户组名
  • 删除用户组 groupdel 用户组名

3.2.2 用户管理

以下命令需要 root 用户执行:

创建用户:

useradd [-g -d] 用户名

  • -g 指定用户的组,不指定 -g 会创建同名组并自动加入,指定 -g 需要组已经存在,如已存在同名组,必须使用 -g
  • -d 指定用户 home 路径,不指定 home 目录默认在 /home/用户名

删除用户:

userdel [-r] 用户名

  • -r 表示删除用户的 home 目录,不使用 -r 表示删除用户时 home 目录保留

查看用户所属组:

id [用户名]

  • 用户名 表示要查看的用户,如果不提供则查看自身

修改用户所属组:

usermod -aG 用户组 用户名

3.3 权限控制

3.3.1 认识权限信息

3.3.2 修改权限命令 chmod

3.3.3 修改权限命令 chown

第 4 章 Linux 实用操作

4.1 各类快捷键

ctrl + c 强制退出

ctrl + d 退出或登出

history 查看历史输入过的命令

ctrl + a 跳到命令开头

ctrl + e 跳到命令结尾

ctrl + 键盘左键 向左跳一个单词

ctrl + 键盘右键 向右跳一个单词

ctrl + lclear 清空终端内容

4.2 软件安装命令

4.2.1 yum 命令

yum 是 RPM(CentOS Linux 软件安装包格式,类似于 Windows 下的 .exe 文件)包软件管理器(包软件管理器就相当于 Windows 下的应用商店),用于自动化安装配置 Linux 软件,并可以自动解决依赖问题

yum [-y] [install | remove | search] 软件名称

  • -y 自动确认,无需手动确认安装或卸载过程
  • install 安装
  • remove 卸载
  • search 搜索

4.2.2 apt 命令

软件安装的命令 CentOS 系统和 Ubuntu 系统是使用不同的包管理器,CentOS 系统软件安装包格式是 .rpm,使用 yum 管理器;Ubuntu 系统软件安装包格式是 .deb,使用 apt 管理器

apt [-y] [install | remove | search] 软件名称

4.3 systemctl 命令

Linux 系统很多软件(内置软件或第三方软件)均支持使用 systemctl 命令控制:启动、停止、开机自启

能够被 systemctl 管理的软件一般称之为服务

systemctl start | stop | status | enable | disable 服务名

  • start 启动
  • stop 关闭
  • status 查看状态
  • enable 开启开机自启
  • disable 关闭开机自启

系统内置的服务比较多,比如:

  • NetworkManager:主网络服务
  • network:副网络服务
  • firewalld:防火墙服务
  • sshd:ssh 服务(远程连接需要使用这个服务)

部分软件安装后没有自动集成到 systemctl 中,我们可以手动添加

4.4 软链接

在系统中创建软链接,可以将文件、文件夹链接到其它位置,类似 Windows 系统中的快捷方式

ln -s 参数1 参数2

  • -s 创建软链接
  • 参数1 被链接的文件或文件夹
  • 参数2 要链接去的目的地

4.5 日期和时区

4.6 IP 地址和主机名

4.6.1 IP 地址

每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯,IP 地址主要有 2 个版本,V4 版本和 V6 版本,IPv4 版本的地址格式是 a.b.c.d 其中 abcd 表示 0~255 的数字,如 192.168.88.101 就是一个标准的 IP 地址

可以通过命令 ifconfig 查看本机的 ip 地址

除了标准的 ip 地址以外,还有几个特殊的 ip 地址需要我们了解:

  • 127.0.0.1 这个 ip 地址用于指代本机
  • 0.0.0.0 特殊 ip 地址
    • 可以用于指代本机
    • 可以在端口绑定中用来确定绑定关系
    • 在一些 ip 地址限制中,表示所有 ip 的意思,如放行规则设置为 0.0.0.0 表示允许任意 ip 访问

4.6.2 主机名

每一台电脑除了对外联络地址(IP 地址)以外,也可以有一个名字,称之为主机名,无论是 Windows 或 Linux 系统,都可以给系统设置主机名

可以使用命令 hostname 查看主机名

可以使用命令 hostnamectl set-hostname 主机名 修改主机名

4.6.3 域名解析

IP 地址实在是难以记忆,有没有什么办法可以通过主机名或替代的字符地址去替代数字化的 IP 地址呢?

实际上我们一直都是通过字符化的地址去访问服务器,很少指定 IP 地址,比如我们在浏览器内打开 www.baidu.com 会打开百度的网址,其中 www.baidu.com 是百度的网址,我们称之为域名

4.7 虚拟机配置固定 IP

4.8 网络传输

4.8.1 下载和网络请求

4.8.1.1 ping 命令

可以通过 ping 命令检查指定的网络服务器是否是可联通的状态

ping [-c num] ip或主机名

  • -c 检查的次数,如果不使用 -c 选项,将无限次数持续检查
4.8.1.2 wget 命令

wget 是非交互式的文件下载器,可以在命令行内下载网络文件

wget [-b] url

  • -b 后台下载,会将日志写入到当前工作目录的 wget-log 文件
4.8.1.3 curl 命令

curl 命令可以发送 http 网络请求,可用于下载文件、获取信息等

curl [-O] url

  • -O 用于下载文件,当 url 是下载链接时,可以使用此选项保存文件

4.8.2 端口

端口是设备与外界通讯交流的出入口,端口可以分为物理端口和虚拟端口两类

  • 物理端口又称之为接口,是可见的端口,如 USB 接口、RJ45 网口、HDMI 端口等
  • 虚拟端口指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的

计算机程序之间的通讯,通过 IP 只能锁定计算机,但是无法锁定具体的程序,通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通

4.9 进程管理

程序运行在操作系统中是被操作系统所管理的,为管理运行的程序,每一个程序在运行的时候便被操作系统注册为系统中的一个进程,并会为每一个进程都分配一个独有的进程 ID

4.10 主机状态监控

4.11 环境变量

在学习 which 命令的时候,我们知道使用的一系列命令其实本质上就是一个一个的可执行程序,比如 cd 命令的本体就是 /usr/bin/cd 这个程序文件

那为何无论当前工作目录在哪里都能执行 /usr/bin/cd 这个程序呢?这就是环境变量的作用

环境变量是操作系统在运行的时候记录的一些关键性信息用于辅助系统运行,在 Linux 系统中执行 env 命令即可查看当前系统中记录的环境变量

环境变量是一种 Key-Value 型结构,即名称和值,如下图:

无论当前工作目录是什么都能执行 /usr/bin/cd 这个程序,这个就是借助环境变量中 PATH 这个项目的值来做到的

4.12 压缩和解压

Released under the MIT License.

本站访客数 人次 本站总访问量