Linux操作系统

1.目录结构

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

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

2.Linux命令

什么是命令,命令行?

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

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

2.1命令基础格式

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

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

示例:

ls -l/home/itsds,ls是命令本身, -l是选项,/home/itsds是参数

意思是以列表的形式,显示/home/itsds里的内容。

2.2 ls命令

ls 命令的作用是以平铺的形式,展示当前工作目录(默认HOME目录)下的内容,语法细节如下:


• -a -l -h 是可选的选项
• Linux 路径是此命令可选的参数
当不使用选项和参数,直接使用 ls 命令本体,表示:以平铺形式,列出当前工作目录下的内容

HOME目录和工作目录

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

·如,图中的Linux用户是itheima,其HOME目录是:/home/itheima
· Windows系统和Linux系统,均设有用户的HOME目录,如图:

ls命令的参数和选项

当ls不使用参数,表示列出:当前工作目录的内容,及用户的HOME目录。

当使用参数,ls的命令的参数表示:指定一个Linux路径,列出指定路径的内容

如:

通过ls /列出了根目录的内容。

ls命令的 -a选项

如下语法:

• -a 选项,表示: all 的意思,即列出全部文件(包含隐藏的文件 / 文件夹)

VM:

FinaShell:

可以看到, ls -a 对比 ls 列出的内容更多了。
• 图中以 . 开头的,表示是 Linux 系统的隐藏文件 / 文件夹(只要以 . 开头,就能自动隐藏)
• 只有通过 -a 选项,才能看到这些隐藏的文件 / 文件夹

ls命令的 -l选项

• -l 选项,表示:以列表(竖向排列)的形式展示内容,并展示更多信息

-l 选项其实和图形化中,文件夹以列表形式排列是一个意思

ls命令选项的组合使用

语法中的选项是可以组合使用的,比如学习的 -a 和 -l 可以组合应用。
写法:
• ls -l -a
• ls -la
• ls -al

上面三种命令选项组合结果是一样的。

ls命令中的 -h选项

• -h 表示以易于阅读的形式,列出文件大小,如 K 、 M 、 G
• -h 选项必须要搭配 -l 一起使用

2.3 目录切换相关目录(cd/pwd)

1.cd切换工作目录

当 Linux 终端(命令行)打开的时候,会默认以用户的 HOME 目录作为当前的工作目录
我们可以通过 cd 命令,更改当前所在的工作目录。
cd 命令来自英文: Change Directory
语法:cd [Linux路径]
• cd 命令无需选项,只有参数,表示要切换到哪个目录下
• cd 命令直接执行,不写参数,表示回到用户的 HOME 目录

2.pwd查看当前工作目录

通过 ls 来验证当前的工作目录,其实是不恰当的。
我们可以通过 pwd 命令,来查看当前所在的工作目录。
pwd 命令来自: Print Work Directory
语法:
• pwd 命令,无选项,无参数,直接输入 pwd 即可

2.4相对路径和绝对路径

如图,通过 pwd 得知当前所在是 HOME 目录: /home/user
现在想要通过 cd 命令,切换工作目录到 桌面 文件夹中去。
那么, cd 命令的参数( Linux 路径)如何写呢?

• cd /home/user/桌面   绝对路径写法


• cd 桌面 相对路径写法

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

特殊路径符

如图,当前工作目录处于: /home/user/桌面
现在想要,向上回退一级,切换目录到 /home/user 中,如何做?
• 可以直接通过 cd ,即可回到 HOME 目录
• 也可以通过特殊路径符来完成。

特殊路径符:
• . 表示当前目录,比如 cd ./桌面 表示切换到当前目录下的 桌面 目录内,和 cd 桌面 效果一致


• .. 表示上一级目录,比如: cd .. 即可切换到上一级目录, cd ../.. 切换到上二级的目录


• ~ 表示 HOME 目录,比如: cd ~ 即可切换到 HOME 目录或 cd ~/桌面,切换到 HOME 内的

桌面 目录。

2.5创建目录命令(mkdir)

通过 mkdir 命令可以创建新的目录(文件夹)
mkdir 来自英文: Make Directory
语法:mkdir [-p]  Linux 路径
• 参数必填,表示 Linux 路径,即要创建的文件夹的路径,相对路径或绝对路径均可

• -p 选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

mkdir -p 选项
如果想要一次性创建多个层级的目录,如下图


会报错,因为上级目录 user 和 good 并不存在,所以无法创建 666 目录
可以通过 -p 选项,将一整个链条都创建完成。

-p 作用:可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录


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

2.6文件操作命令1(touch,cat,more)

1. touch创建文件

可以通过 touch 命令创建文件
语法:touch Linux路径
• touch 命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用

2.cat 命令 查看文件内容
有了文件后,我们可以通过 cat 命令查看文件的内容。
不过,现在我们还未学习 vi 编辑器,无法向文件内编辑内容,所以,暂时,我们先通过图形化
在图形化中,手动向文件内添加内容,以测试 cat 命令

准备好文件内容后,可以通过 cat 查看内容。
语法:cat Linux路径
• cat 同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用

3.more命令查看文件内容

more 命令同样可以查看文件内容,同 cat 不同的是:
• cat 是直接将内容全部显示出来
• more 支持翻页,如果文件内容过多,可以一页页的展示
语法:more Linux路径
• 同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用
Linux 系统内置有一个文件,路径为: /etc/services ,可以使用 more 命令查看
more /etc/services
• 在查看的过程中,通过空格翻页
• 通过 q 退出查看

2.7文件操作命令2(cp 、 mv 、 rm)

1.cp命令复制文件文件夹

cp 命令可以用于复制文件 \ 文件夹, cp 命令来自英文单词: copy
语法: cp [-r]  参数1 参数2 
• -r 选项,可选,用于复制文件夹使用,表示递归
• 参数 1 , Linux 路径,表示被复制的文件或文件夹
• 参数 2 , Linux 路径,表示要复制去的地方

复制文件

复制文件夹

注意:复制文件夹,必须使用 -r 选项,否则不会生效

2.mv移动文件夹

mv 命令可以用于移动文件 \ 文件夹, mv 命令来自英文单词: move
语法:mv  参数1 参数2
• 参数 1 , Linux 路径,表示被移动的文件或文件夹
• 参数 2 , Linux 路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

将text.tst文件移动到桌面目录下:

还有类似于改名的方法,如下:

3.rm命令删除文件,文件夹

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

删除文件:

删除文件夹:

演示强制删除, -f 选项
• 可以通过 su - root ,并输入密码 123456 (和普通用户默认一样)临时切换到 root 用户体验
• 通过输入 exit 命令,退回普通用户。

通配符:

rm 命令支持通配符 * ,用来做模糊匹配
• 符号 * 表示通配符,即匹配任意内容(包含空),示例:
• test* ,表示匹配任何以 test 开头的内容
• *test ,表示匹配任何以 test 结尾的内容
• *test* ,表示匹配任何包含 test 的内容
演示:
• 删除所有以 test 开头的文件或文件夹

删除以test结尾的文件:

删除test在中间的文件:

注意:

rm 是一个危险的命令,特别是在处于 root (超级管理员)用户的时候。
请谨慎使用。
如下命令,请千万千万不要在 root 管理员用户下执行:
rm -rf /
rm -rf /*
效果等同于在 Windows 上执行 C 盘格式化。

2.8 查找命令(which,find)

1.which命令

我们在前面学习的 Linux 命令,其实它们的本体就是一个个的二进制可执行程序。
和 Windows 系统中的 .exe 文件,是一个意思。
我们可以通过 which 命令,查看所使用的一系列命令的程序文件存放在哪里
语法:which   要查找的命令

2.find 命令 

(1)按文件名查找文件

在图形化中,我们可以方便的通过系统提供的搜索功能,搜索指定的文件。

同样,在 Linux 系统中,我们可以通过 find 命令去搜索指定的文件。
语法:

查找文件名叫做: test 的文件,从根目录开始搜索

基于语法,命令为:

find / -name “test”

(2)通配符

根据语法:
被查找文件名,支持使用通配符 * 来做模糊查询。
• 符号 * 表示通配符,即匹配任意内容(包含空),示例:
• test* ,表示匹配任何以 test 开头的内容


• *test ,表示匹配任何以 test 结尾的内容


• *test* ,表示匹配任何包含 test 的内容


基于通配符的含义,可以结合 find 命令做文件的模糊查询。

(3)按文件大小查找文件

语法:
• + 、 - 表示大于和小于
• n 表示大小数字
• kMG 表示大小单位, k( 小写字母 ) 表示 kb , M 表示 MB , G 表示 GB
示例:
• 查找小于 10KB 的文件: find / -size -10k


• 查找大于 100MB 的文件: find / -size +100M


• 查找大于 1GB 的文件: find / -size +1G

2.9 grep、wc和管道符

1.grep命令

可以通过 grep 命令,从文件中通过关键字过滤文件行。
语法:
• 选项 -n ,可选,表示在结果中显示匹配的行的行号。
• 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
• 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
现在,通过 touch 命令在 HOME 目录创建 test.txt ,并通过图形化页面编辑并保存如下内容:

过滤“ITW”关键字

过滤IS关键字,并显示行号

2.wc命令做数量统计

可以通过 wc 命令统计文件的行数、单词数量等
语法:
• 选项, -c ,统计 bytes 数量
• 选项, -m ,统计字符数量
• 选项, -l ,统计行数
• 选项, -w ,统计单词数量
• 参数,文件路径,被统计的文件,可作为内容输入端口

• 不带选项,统计文件


• 统计字节数

• 统计字符数


• 统计行数


• 统计单词数

3.管道符

管道符:|

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

如下图:

cat test.txt 的输出结果(文件内容)
• 作为右边 grep 命令的输入(被过滤文件),wc命令的输入(被查找行数的文件)

应用:

过滤ls的结果:

find / -name “test” | grep “/usr/lib64”   过滤结果,只找路径带有/usr/lib64的结果

 cat test.txt  | grep ITW | grep GREAT 可以嵌套使用

• cat test.txt 的结果给 grep ITW 使用
• cat test.txt | grep ITW 的结果给 grep GREAT 使用

2.10 echo 、 tail 和重定向符

1.echo命令

可以使用 echo 命令在命令行内输出指定内容
语法:
• 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用””包围
演示:
• 在终端上显示: Hello Linux


• 带有空格或 \ 等特殊符号,建议使用双引号包围
• 因为不包围的话,空格后很容易被识别为参数 2 ,尽管 echo 不受影响,但是要养成习惯哦

2.反引导

看一下如下命令: echo pwd

意思指:输出当前的工作路径,但是 pwd 被作为普通字符输出了。
我们可以通过将命令用反引号(通常也称之为飘号) ` 将其包围
被 ` 包围的内容,会被作为命令执行,而非普通字符

3.重定向符

重定向符: > 和 >>
• > ,将左侧命令的结果,覆盖写入到符号右侧指定的文件中。
• >> ,将左侧命令的结果,追加写入到符号右侧指定的文件中。

演示:
• echo “Hello Linux” > test.txt


• echo “Hello itheima” > itheima.txt ,再次执行,覆盖新内容


• echo “Hello itcast” >> itheima.txt ,再次执行,使用 >> 追加新内容

3.tail命令

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


• 参数, Linux 路径,表示被跟踪的文件路径
• 选项, -f ,表示持续跟踪

使用 -f 选项,可以持续跟踪文件更改
• 复制一个新的 FinalShell 的标签
• 在第一个标签中,执行: touch test.txt ,创建一个 test.txt 文件
• 在第一个标签中,执行: tail -f test.txt ,持续跟踪文件更改
• 在第二个标签中,多次执行: echo “ 内容” >> test.txt ,向文件追加内容
• 观察第一个标签的变化


• 选项 , -num ,表示,查看尾部多少行,不填默认 10 行

2.11 vi \vim编辑器

vi\vim 是 visual interface 的简称 , 是 Linux 中最经典的文本编辑器
同图形化界面中的 文本编辑器一样, vi 是命令行下对文本文件进行编辑的绝佳选择。
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

1.vi\vim 编辑器的三种工作模式
命令模式( Command mode )
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。
此模型下,不能自由进行文本编辑。
输入模式( Insert mode )
也就是所谓的编辑模式、插入模式。
此模式下,可以对文件内容进行自由编辑。
底线命令模式( Last line mode )

以:开始,通常用于文件的保存、退出。

(1)命令模式

命令模式
如果需要通过 vi/vim 编辑器编辑文件,请通过如下命令:


vim 兼容全部的 vi 功能,后续全部使用 vim 命令
• 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
• 如果文件路径表示的文件存在,那么此命令用于编辑已有文件

vi 编辑器的快速体验
通过 vi/vim 命令编辑文件,会打开一个新的窗口,此时这个窗口就是:命令模式窗口
命令模式是 vi 编辑器的入口和出口,如右图
• 进入 vi 编辑器会进入命令模式
• 通过命令模式输入键盘指令,可以进入输入模式
• 输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式
快速体验
1. 使用: vim hello.txt ,编辑一个新文件,执行后进入的是命令模式
2. 在命令模式内,按键盘 i ,进入输入模式
3. 在输入模式内输入: itheima and itcast.
4. 输入完成后,按 esc 回退会命令模式
5. 在命令模式内,按键盘 : ,进入底线命令模式
6. 在底线命令内输入: wq ,保存文件并退出 vi 编辑器

命令模式快捷键

底线命令模式

3.用户和权限

3.1 root用户(超级管理员)

无论是 Windows 、 MacOS 、 Linux 均采用多用户的管理模式进行权限管理。
• 在 Linux 系统中,拥有最大权限的账户名为: root (超级管理员)
• 而在前期,我们一直使用的账户是普通的用户: user

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

3.2 su和exit命令

su 命令就是用于账户切换的系统命令,其来源英文单词: Switch User
语法:
• - 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
• 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到 root
• 切换用户后,可以通过 exit 命令退回上一个用户,也可以使用快捷键: ctrl + d
• 使用普通用户,切换到其它用户需要输入密码,如切换到 root 用户
• 使用 root 用户切换到其它用户,无需密码,可以直接切换

3.3 sudo命令

在我们得知 root 密码的时候,可以通过 su 命令切换到 root 得到最大权限。
但是我们不建议长期使用 root 用户,避免带来系统损坏。
我们可以使用 sudo 命令,为普通的命令授权,临时以 root 身份执行。
语法:
• 在其它命令之前,带上 sudo ,即可为这一条命令临时赋予 root 授权
• 但是并不是所有的用户,都有权利使用 sudo ,我们需要为普通用户配置 sudo 认证

为普通用户配置sudo认证

切换到 root 用户,执行 visudo 命令,会自动通过 vi 编辑器打开: /etc/sudoers
• 在文件的最后添加:user ALL=(ALL)     NOPASSWD: ALL
• 其中最后的 NOPASSWD:ALL 表示使用 sudo 命令,无需输入密码
• 最后通过 wq 保存
• 切换回普通用户
• 执行的命令,均以 root 运行

3.4 用户和用户组

Linux 系统中可以:
• 配置多个用户
• 配置多个用户组
• 用户可以加入多个用户组中
Linux 中关于权限的管控级别有 2 个级别,分别是:
• 针对用户的权限控制
• 针对用户组的权限控制
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。

3.4.1 用户组管理

以下命令需 root 用户执行
• 创建用户组
groupadd 用户组名
• 删除用户组
groupdel 用户组名

3.4.2 用户管理
以下命令需 root 用户执行
• 创建用户
useradd [-g -d] 用户名
• 选项: -g 指定用户的组,不指定 -g ,会创建同名组并自动加入,指定 -g 需要组已经存在,如已存在同名组,必须使用 -g
• 选项: -d 指定用户 HOME 路径,不指定, HOME 目录默认在: /home/ 用户名
• 删除用户
userdel [-r] 用户名
• 选项: -r ,删除用户的 HOME 目录,不使用 -r ,删除用户时, HOME 目录保留
• 查看用户所属组
id [ 用户名 ]
• 参数:用户名,被查看的用户,如果不提供则查看自身
• 修改用户所属组
usermod -aG 用户组   用户名,将指定用户加入指定用户组

3.4.3 getent
1.使用 getent 命令,可以查看当前系统中有哪些用户
语法: getent passwd


共有 7 份信息,分别是:
用户名 : 密码 (x): 用户 ID: 组 ID: 描述信息 ( 无用 ):HOME 目录 : 执行终端 ( 默认 bash)

2.使用 getent 命令,同样可以查看当前系统中有哪些用户组
语法: getent group

3.5 查看权限控制

3.5.1 认知权限信息

通过 ls -l 可以以列表形式查看内容,并显示权限细节

序号 1 ,表示文件、文件夹的权限控制信息
• 序号 2 ,表示文件、文件夹所属用户
• 序号 3 ,表示文件、文件夹所属用户组

序号 1 ,权限细节
权限细节总共分为 10 个槽位

举例: drwxr-xr-x ,表示:
• 这是一个文件夹,首字母 d 表示
• 所属用户 ( 右上角图序号 2) 的权限是:有 r 有 w 有 x , rwx
• 所属用户组 ( 右上角图序号 3) 的权限是:有 r 无 w 有 x , r-x ( - 表示无此权限)
• 其它用户的权限是:有 r 无 w 有 x , r-x

3.6 修改权限控制

1. chmod命令

(1)chmod命令

我们可以使用 chmod 命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或 root 用户可以修改。
语法:
• 选项: -R ,对文件夹内的全部内容应用同样的操作
示例:
• chmod u=rwx, g=rx, o=x  hello.txt ,将文件权限修改为: rwxr-x--x
• 其中: u 表示 user 所属用户权限, g 表示 group 组权限, o 表示 other 其它用户权限
• chmod -R u=rwx,g=rx,o=x test ,将文件夹 test 以及文件夹内全部内容权限设置为: rwxr-x--x
除此之外,还有快捷写法: chmod 751 hello.txt
将 hello.txt 的权限修改为 751

(2)权限的数字序号

权限可以用 3 位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
数字的细节如下: r 记为 4 , w 记为 2 , x 记为 1 ,可以有:
• 0 :无任何权限, 即 ---
• 1 :仅有 x 权限, 即 --x
• 2 :仅有 w 权限 即 -w-
• 3 :有 w 和 x 权限 即 -wx
• 4 :仅有 r 权限 即 r--
• 5 :有 r 和 x 权限 即 r-x
• 6 :有 r 和 w 权限 即 rw-
• 7 :有全部权限 即 rwx
所以 751 表示: rwx(7) r-x(5) --x(1)

2. chown命令

使用 chown 命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于 root 用户执行
语法:
• 选项, -R ,同 chmod ,对文件夹内全部内容应用相同规则
• 选项,用户,修改所属用户
• 选项,用户组,修改所属用户组
• : 用于分隔用户和用户组
示例:
• chown root hello.txt ,将 hello.txt 所属用户修改为 root
• chown :root hello.txt ,将 hello.txt 所属用户组修改为 root
• chown root:itheima hello.txt ,将 hello.txt 所属用户修改为 root ,用户组修改为 itheima
• chown -R root test ,将文件夹 test 的所属用户修改为 root 并对文件夹内全部内容应用同样规则

4.Linux实用操作

4.1 快捷键

(1)ctrl + c 强制停止

• Linux 某些程序的运行,如果想要强制停止它,可以使用快捷键 ctrl + c

• 命令输入错误,也可以通过快捷键 ctrl + c ,退出当前输入,重新输入

(2)ctrl + d 退出或登出
• 可以通过快捷键: ctrl + d ,退出账户的登录
• 或者退出某些特定程序的专属页面

(3)历史命令搜索
• 可以通过 history 命令,查看历史输入过的命令

• 可以通过: ! 命令前缀,自动执行上一次匹配前缀的命令

• 可以通过快捷键: ctrl + r ,输入内容去匹配历史命令

如果搜索到的内容是你需要的,那么:
• 回车键可以直接执行
• 键盘左右键,可以得到此命令(不执行)

(4)光标移动快捷键
• ctrl + a ,跳到命令开头
• ctrl + e ,跳到命令结尾
• ctrl + 键盘左键,向左跳一个单词
• ctrl + 键盘右键,向右跳一个单词

(5)清屏
• 通过快捷键 ctrl + l ,可以清空终端内容
• 或通过命令 clear 得到同样效果

4.2 软件安装

(1)Linux 系统的应用商店
操作系统安装软件有许多种方式,一般分为:
• 下载安装包自行安装
• 如 win 系统使用 exe 文件、 msi 文件等
• 如 mac 系统使用 dmg 文件、 pkg 文件等
• 系统的应用商店内安装
• 如 win 系统有 Microsoft Store 商店
• 如 mac 系统有 AppStore 商店

(2)yum命令

yum : RPM 包软件管理器,用于自动化安装配置 Linux 软件,并可以自动解决依赖问题。
语法:
• 选项: -y ,自动确认,无需手动确认安装或卸载过程
• install :安装
• remove :卸载
• search :搜索
yum 命令需要 root 权限哦,可以 su 切换到 root ,或使用 sudo 提权。
yum 命令需要联网

• yum [-y] install wget , 通过 yum 命令安装 wget 程序


• yum [-y] remove wget ,通过 yum 命令卸载 wget 命令


• yum search wget ,通过 yum 命令,搜索是否有 wget 安装包

(3)apt命令

前面学习的各类 Linux 命令,都是通用的。 但是软件安装, CentOS 系统和 Ubuntu 是使用不同的包管理器。
CentOS 使用 yum 管理器, Ubuntu 使用 apt 管理器
通过前面学习的 WSL 环境,我们可以得到 Ubuntu 运行环境。
语法:
用法和 yum 一致,同样需要 root 权限
• apt install wget ,安装 wget
• apt remove wget ,移除 wget
• apt search wget ,搜索 wget

4.3 systemctl命令

(1)systemctl命令

Linux 系统很多软件(内置或第三方)均支持使用 systemctl 命令控制:启动、停止、开机自启
能够被 systemctl 管理的软件,一般也称之为:服务
语法:

• start 启动
• stop 关闭
• status 查看状态
• enable 开启开机自启
• disable 关闭开机自启
系统内置的服务比较多,比如:
• NetworkManager ,主网络服务
• network ,副网络服务
• firewalld ,防火墙服务
• sshd , ssh 服务( FinalShell 远程登录 Linux 使用的就是这个服务)

除了内置的服务以外,部分第三方软件安装后也可以以 systemctl 进行控制。
• yum install -y ntp ,安装 ntp 软件
可以通过 ntpd 服务名,配合 systemctl 进行控制
• yum install -y httpd ,安装 apache 服务器软件
可以通过 httpd 服务名,配合 systemctl 进行控制

4.4 软链接

(1)ln命令创建软链接

在系统中创建软链接,可以将文件、文件夹链接到其它位置。
类似 Windows 系统中的《快捷方式》
语法:
• -s 选项,创建软连接
• 参数 1 :被链接的文件或文件夹
• 参数 2 :要链接去的目的地
实例:
• ln -s /etc/yum.conf ~/yum.conf
• ln -s /etc/yum ~/yum

4.5 日期和时区

(1)date命令

通过 date 命令可以在命令行中查看系统的时间
语法:
• -d 按照给定的字符串显示日期,一般用于日期计算
• 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
• %Y 年
• %y 年份后两位数字 (00..99)
• %m 月份 (01..12)
• %d 日 (01..31)
• %H 小时 (00..23)
• %M 分钟 (00..59)
• %S 秒 (00..60)
• %s 自 1970-01-01 00:00:00 UTC 到现在的秒数

• 使用 date 命令本体,无选项,直接查看时间


可以看到这个格式非常的不习惯。我们可以通过格式化字符串自定义显示格式
• 按照 2022-04-02 的格式显示日期


• 按照 2022-01-01 10:00:00 的格式显示日期

date 命令进行日期加减
• -d 选项,可以按照给定的字符串显示日期,一般用于日期计算
• 其中支持的时间标记为:


• year  年
• month  月
• day  天
• hour  小时
• minute  分钟
• second  秒
• -d 选项可以和 格式化字符串配合一起使用哦

ntp程序

我们可以通过 ntp 程序自动校准系统时间
安装 ntp : yum -y install ntp
启动并设置开机自启:
• systemctl start ntpd
• systemctl enable ntpd
当 ntpd 启动后会定期的帮助我们联网校准系统的时间
• 也可以手动校准(需 root 权限): ntpdate -u ntp.aliyun.com
通过阿里云提供的服务网址配合 ntpdate (安装 ntp 后会附带这个命令)命令自动校准

4.6  IP地址,主机名

(1)IP地址
每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯
IP 地址主要有 2 个版本, V4 版本和 V6 版本( V6 很少用,课程暂不涉及)
IPv4 版本的地址格式是: a.b.c.d ,其中 abcd 表示 0~255 的数字,如 192.168.88.101 就是一个标准的 IP 地址
可以通过命令: ifconfig ,查看本机的 ip 地址,如无法使用 ifconfig 命令,可以安装: yum -y install net-tools

特殊 IP 地址
除了标准的 IP 地址以外,还有几个特殊的 IP 地址需要我们了解:
• 127.0.0.1 ,这个 IP 地址用于指代本机


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

(2)主机名

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


• Linux 系统主机名

在 Linux 中修改主机名
• 可以使用命令: hostname 查看主机名
• 可以使用命令: hostnamectl set-hostname 主机名,修改主机名(需 root )
• 重新登录 FinalShell 即可看到主机名已经正确显示。

域名解析

访问 www.baidu.com 的流程如下:

即:
• 先查看本机的记录(私人地址本)
• Windows 看: C:\Windows\System32\drivers\etc\hosts
• Linux 看: /etc/hosts

• 再联网去 DNS 服务器(如 114.114.114.114 , 8.8.8.8 等)询问

配置主机名映射
比如,我们 FinalShell 是通过 IP 地址连接到的 Linux 服务器,那有没有可能通过域名(主机名)连接呢?
可以,我们只需要在 Windows 系统的: C:\Windows\System32\drivers\etc\hosts 文件中配置记录即可

(3)虚拟机配置固定 IP

1>为什么需要固定 IP
当前我们虚拟机的 Linux 操作系统,其 IP 地址是通过 DHCP 服务获取的。
DHCP :动态获取 IP 地址,即每次重启设备后都会获取一次,可能导致 IP 地址频繁变更
原因 1 :办公电脑 IP 地址变化无所谓,但是我们要远程连接到 Linux 系统,如果 IP 地址经常变化我们就要频繁修改
适配很麻烦
原因 2 :在刚刚我们配置了虚拟机 IP 地址和主机名的映射,如果 IP 频繁更改,我们也需要频繁更新映射关系

2>在VMware Workstation中配置固定IP

配置固定 IP 需要 2 个大步骤:
1. 在 VMware Workstation (或 Fusion )中配置 IP 地址网关和网段( IP 地址的范围)


2. 在 Linux 系统中手动修改配置文件,固定 IP

使用 vim 编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件,填入如下内容

• 执行: systemctl restart network 重启网卡,执行 ifconfig 即可看到 ip 地址固定192.168.88.130 了

4.7 网络传输

(1)ping 命令

可以通过 ping 命令,检查指定的网络服务器是否是可联通状态
语法:
• 选项: -c ,检查的次数,不使用 -c 选项,将无限次数持续检查
• 参数: ip 或主机名,被检查的服务器的 ip 地址或主机名地址
示例:
• 检查到 baidu.com 是否联通


结果表示联通,延迟 17ms 左右
• 检查到 39.156.66.10 是否联通,并检查 3 次

(2)wget命令

wget 是非交互式的文件下载器,可以在命令行内下载网络文件
语法:
• 选项: -b ,可选,后台下载,会将日志写入到当前工作目录的 wget-log 文件
• 参数: url ,下载链接
示例:
• 下载 apache-hadoop 3.3.0 版本: wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
• 在后台下载: wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
• 通过 tail 命令可以监控后台下载进度: tail -f wget-log

注意:无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。

(3)curl命令

curl 可以发送 http 网络请求,可用于:下载文件、获取信息等
语法:
• 选项: -O ,用于下载文件,当 url 是下载链接时,可以使用此选项保存文件
• 参数: url ,要发起请求的网络地址

示例:
• 向 cip.cc 发起网络请求: curl cip.cc


• 向 python.itheima.com 发起网络请求: curl python.itheima.com


• 通过 curl 下载 hadoop-3.3.0 安装包: curl -O http://archive.apache.org/dist/hadoop/common/hadoop-
3.3.0/hadoop-3.3.0.tar.gz

(4)端口

端口,是设备与外界通讯交流的出入口。端口可以分为:物理端口和虚拟端口两类
• 物理端口:又可称之为接口,是可见的端口,如 USB 接口, RJ45 网口, HDMI 端口等
• 虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的

Linux 系统是一个超大号小区,可以支持 65535 个端口,这 6 万多个端口分为 3 类进行使用:
• 公认端口: 1~1023 ,通常用于一些系统内置或知名程序的预留使用,如 SSH 服务的 22 端口, HTTPS 服务的
443 端口
非特殊需要,不要占用这个范围的端口
• 注册端口: 1024~49151 ,通常可以随意使用,用于松散的绑定一些程序 \ 服务
• 动态端口: 49152~65535 ,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。

当程序对外进行网络链接时,用于临时使用。
如图中,计算机 A 的微信连接计算机 B 的微信, A 使用的 50001 即动态端口,临时找一个端口作为出口
计算机 B 的微信使用端口 5678 ,即注册端口,长期绑定此端口等待别人连接

查看端口占用

可以通过 Linux 命令去查看端口的占用情况
• 使用 nmap 命令,安装 nmap : yum -y install nmap
语法: nmap 被查看的 IP 地址


可以看到,本机( 127.0.0.1 )上有 4 个端口现在被程序占用了。
其中:
• 22 端口,一般是 SSH 服务使用,即 FinalShell 远程连接 Linux 所使用的端口

• 可以通过 netstat 命令,查看指定端口的占用情况
语法: netstat -anp | grep 端口号,安装 netstat : yum -y install net-tools

如图,可以看到当前系统 6000 端口被程序(进程号 894 )占用了

可以看到,当前系统 12345 端口,无人使用哦。

4.8 进程管理

(1)进程

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

                                     Linux系统查看进程

(2)查看进程
可以通过 ps 命令查看 Linux 系统中的进程信息
语法:
选项: -e ,显示出全部的进程
选项: -f ,以完全格式化的形式展示信息(展示全部信息)
一般来说,固定用法就是: ps -ef 列出全部进程的全部信息

(3)查看指定进程

• 在 FinalShell 中,执行命令: tail ,可以看到,此命令一直阻塞在那里
• 在 FinalShell 中,复制一个标签页,执行: ps -ef 找出 tail 这个程序的进程信息
• 问题:是否会发现,列出的信息太多,无法准确的找到或很麻烦怎么办?
我们可以使用管道符配合 grep 来进行过滤,如:
ps -ef | grep tail ,即可准确的找到 tail 命令的信息


• 过滤不仅仅过滤名称,进程号,用户 ID 等等,都可以被 grep 过滤哦
• 如: ps -ef | grep 30001 ,过滤带有 30001 关键字的进程信息(一般指代过滤 30001 进程号)

(4)关闭进程
在 Windows 系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。
同样,在 Linux 中,可以通过 kill 命令关闭进程。
语法:
选项: -9 ,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。

4.9 主机状态

查看系统资源占用
• 可以通过 top 命令查看 CPU 、内存使用情况,类似 Windows 的任务管理器
默认每 5 秒刷新一次,语法:直接输入 top 即可,按 q 或 ctrl + c 退出

top 命令内容详解
• 第一行:
top :命令名称,17:18:04当前系统时间, up 1 min27s :启动了 1分钟27s, 3 users : 3 个用户登录, load : 10、 6 、 5 分钟负载
• 第二行:
Tasks : 175 个进程, 1 running : 1 个进程子在运行, 174 sleeping : 174 个进程睡眠, 0 个停止进程, 0 个僵尸进程
• 第三行:
%Cpu(s) : CPU 使用率, us :用户 CPU 使用率, sy :系统 CPU 使用率, ni :高优先级进程占用 CPU 时间百分比, id :空闲 CPU 率, wa : IO 等待
CPU 占用率, hi : CPU 硬件中断率, si : CPU 软件中断率, st :强制等待占用 CPU 率
• 第四、五行:
Kib Mem :物理内存, total :总量, free :空闲, used :使用, buff/cache : buff 和 cache 占用
KibSwap :虚拟内存(交换空间), total :总量, free :空闲, used :使用, buff/cache : buff 和 cache 占用

• PID :进程 id
• USER :进程所属用户
• PR :进程优先级,越小越高
• NI :负值表示高优先级,正表示低优先级
• VIRT :进程使用虚拟内存,单位 KB
• RES :进程使用物理内存,单位 KB
• SHR :进程使用共享内存,单位 KB
• S :进程状态( S 休眠, R 运行, Z 僵死状态, N 负数优先级, I 空闲状态)
• %CPU :进程占用 CPU 率
• %MEM :进程占用内存率
• TIME+ :进程使用 CPU 时间总计,单位 10 毫秒
• COMMAND :进程的命令或名称或程序文件路径

top 命令选项
top 命令也支持选项:

top 交互式选项
当 top 以交互式运行(非 -b 选项启动),可以用以下交互式命令进行控制

磁盘信息监控
• 使用 df 命令,可以查看硬盘的使用情况
语法: df [-h]
选项: -h ,以更加人性化的单位显示

磁盘信息监控
• 可以使用 iostat 查看 CPU 、磁盘的相关信息
语法: iostat [-x] [num1] [num2]
• 选项: -x ,显示更多信息
• num1 :数字,刷新间隔, num2 :数字,刷新几次

tps :该设备每秒的传输次数( Indicate the number of transfers per second that were issued to thedevice. )。 " 一次传输 " 意思是 " 一次 I/O 请求 " 。多个逻辑请求可能会被合并为 " 一次 I/O 请求 " 。 " 一次传输 " 请求的大小是未知的。

磁盘信息监控
• 使用 iostat 的 -x 选项,可以显示更多信息


rrqm/s : 每秒这个设备相关的读取请求有多少被 Merge 了(当系统调用需要读取数据的时候, VFS 将请求发到各个 FS ,如果 FS 发现不同的读取请求读取的是相同 Block 的数据,
FS 会将这个请求合并 Merge, 提高 IO 利用率 , 避免重复调用);
wrqm/s : 每秒这个设备相关的写入请求有多少被 Merge 了。
rsec/s : 每秒读取的扇区数; sectors
wsec/ : 每秒写入的扇区数。
rKB/s : 每秒发送到设备的读取请求数
wKB/s : 每秒发送到设备的写入请求数
avgrq-sz 平均请求扇区的大小
avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
await : 每一个 IO 请求的处理的平均时间(单位是微秒毫秒)。
svctm 表示平均每次设备 I/O 操作的服务时间(以毫秒为单位)
%util : 磁盘利用率

网络状态监控
• 可以使用 sar 命令查看网络的相关统计( sar 命令非常复杂,这里仅简单用于统计网络)
语法: sar -n DEV num1 num2
选项: -n ,查看网络, DEV 表示查看网络接口
num1 :刷新间隔(不填就查看一次结束), num2 :查看次数(不填无限次数)

4.10 环境变量

环境变量是操作系统( Windows 、 Linux 、 Mac )在运行的时候,记录的一些关键性信息,用以辅助系统运行。
在 Linux 系统中执行: env 命令即可查看当前系统中记录的环境变量
环境变量是一种 KeyValue 型结构,即名称和值,如下图:

环境变量: PATH

在前面提出的问题中,我们说无论当前工作目录是什么,都能执行 /usr/bin/cd 这个程序,这个就是借助环境变量中:
PATH 这个项目的值来做到的。


PATH 记录了系统执行任何命令的搜索路径,如上图记录了(路径之间以 : 隔开):
• /usr/local/sbin
• /usr/bin
• /usr/local/bin
• /usr/sbin
• /root/bin
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
比如执行 cd 命令,就从第二个目录 /usr/bin 中搜索到了 cd 命令,并执行

$ 符号
在 Linux 系统中, $ 符号被用于取”变量”的值。
环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。
取得环境变量的值就可以通过语法: $ 环境变量名 来取得
比如: echo $PATH
就可以取得 PATH 这个环境变量的值,并通过 echo 语句输出出来。


又或者: echo ${PATH}ABC

当和其它内容混合在一起的时候,可以通过 {} 来标注取的变量是谁

自行设置环境变量
Linux 环境变量可以用户自行设置,其中分为:
• 临时设置,语法: export 变量名 = 变量值


• 永久生效
• 针对当前用户生效,配置在当前用户的: ~/.bashrc 文件中
• 针对所有用户生效,配置在系统的: /etc/profile 文件中
• 并通过语法: source 配置文件,进行立刻生效,或重新登录 FinalShell 生效

自定义环境变量 PATH
环境变量 PATH 这个项目里面记录了系统执行命令的搜索路径。
这些搜索路径我们也可以自行添加到 PATH 中去。
测试:
• 在当前 HOME 目录内创建文件夹, myenv ,在文件夹内创建文件 mkhaha
• 通过 vim 编辑器,在 mkhaha 文件内填入: echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行 mkhaha 命令尝试一下,会发现无法执行
• 修改 PATH 的值
临时修改 PATH : export PATH=$PATH:/home/itheima/myenv ,再次执行 mkhaha ,无论在哪里都能执行了
或将 export PATH=$PATH:/home/itheima/myenv ,填入用户环境变量文件或系统环境变量文件中去

在vim编译器中的最后一行添加如下图的语句

4.11 上传和下载

上传、下载
我们可以通过 FinalShell 工具,方便的和虚拟机进行数据交换。
在 FinalShell 软件的下方窗体中,提供了 Linux 的文件系统视图,可以方便的:
• 浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
• 浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到 Linux 中

rz 、 sz 命令
当然,除了通过 FinalShell 的下方窗体进行文件的传输以外,也可以通过 rz 、 sz 命令进行文件传输。
rz 、 sz 命令需要安装,可以通过: yum -y install lrzsz ,即可安装。
• rz 命令,进行上传,语法:直接输入 rz 即可

注意, rz 、 sz 命令需要终端软件支持才可正常运行
FinalShell 、 SecureCRT 、 XShell 等常用终端软件均支持此操作

4.12 压缩,解压

压缩格式
市面上有非常多的压缩格式
• zip 格式: Linux 、 Windows 、 MacOS ,常用
• 7zip : Windows 系统常用
• rar : Windows 系统常用
• tar : Linux 、 MacOS 常用
• gzip : Linux 、 MacOS 常用
在 Windows 系统中常用的软件如: winrar 、 bandizip 等软件,都支持各类常见的压缩格式。

tar 命令
Linux 和 Mac 系统常用有 2 种压缩格式,后缀名分别是:
• .tar ,称之为 tarball ,归档文件,即简单的将文件组装到一个 .tar 的文件内,并没有太多文件体积的减少,仅仅
是简单的封装
• .gz ,也常见为 .tar.gz , gzip 格式压缩文件,即使用 gzip 压缩算法将文件压缩到一个文件内,可以极大的减少压
缩后的体积
针对这两种格式,使用 tar 命令均可以进行压缩和解压缩的操作
语法:
• -c ,创建压缩文件,用于压缩模式
• -v ,显示压缩、解压过程,用于查看进度
• -x ,解压模式
• -f ,要创建的文件,或要解压的文件, -f 选项必须在所有选项中位置处于最后一个
• -z , gzip 模式,不使用 -z 就是普通的 tarball 格式
• -C ,选择解压的目的地,用于解压模式

tar 命令压缩
tar 的常用组合为:
• tar -cvf test.tar 1.txt 2.txt 3.txt
将 1.txt 2.txt 3.txt 压缩到 test.tar 文件内
• tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将 1.txt 2.txt 3.txt 压缩到 test.tar.gz 文件内,使用 gzip 模式
注意:
• -z 选项如果使用的话,一般处于选项位第一个
• -f 选项,必须在选项位最后一个

tar 解压
常用的 tar 解压组合有
• tar -xvf test.tar
解压 test.tar ,将文件解压至当前目录
• tar -xvf test.tar -C /home/itheima
解压 test.tar ,将文件解压至指定目录( /home/itheima )
• tar -zxvf test.tar.gz -C /home/itheima
以 Gzip 模式解压 test.tar.gz ,将文件解压至指定目录( /home/itheima )
注意:
• -f 选项,必须在选项组合体的最后一位
• -z 选项,建议在开头位置
• -C 选项单独使用,和解压所需的其它参数分开

zip 命令压缩文件
可以使用 zip 命令,压缩文件为 zip 压缩包
语法:
• -r ,被压缩的包含文件夹的时候,需要使用 -r 选项,和 rm 、 cp 等命令的 -r 效果一致
示例:
• zip test.zip a.txt b.txt c.txt
将 a.txt b.txt c.txt 压缩到 test.zip 文件内
• zip -r test.zip test itheima a.txt
将 test 、 itheima 两个文件夹和 a.txt 文件,压缩到 test.zip 文件内

unzip 命令解压文件
使用 unzip 命令,可以方便的解压 zip 压缩包
语法:
• -d ,指定要解压去的位置,同 tar 的 -C 选项
• 参数,被解压的 zip 压缩包文件
示例:
• unzip test.zip ,将 test.zip 解压到当前目录
• unzip test.zip -d /home/itheima ,将 test.zip 解压到指定文件夹内( /home/itheima )

  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值