Linux学习笔记

VMware WorkStation安装

课程选用VMware WorkStation软件来提供虚拟机。 下载地址: https://www.vmware.com/cn/products/workstation-pro.html

安照安装步骤 完成安装

软件安装完成后,验证一下网络适配器是否正常配置。

在VMware上安装Linux

下载CentOS操作系统

首先,我们需要下载操作系统的安装文件,本次使用CentOS7.6版本进行学习: https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的/不要漏掉)

或者直接使用如下链接下载: https://vault.centos.org/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

按照步骤创建虚拟机:

点击完成后,即开启了CentOS系统的安装,耐心等待安装完成即可,后续都是自动化的(大概10-20分钟)。

完成后:

使用命令行学习Linux系统

尽管图形化是大多数人使用计算机的第一选择,但是在Linux操作系统上,这个选择被反转了。 无论是企业开发亦或是个人开发,使用Linux操作系统,多数都是使用的:命令行。 这是因为: Linux从诞生至今,在图形化页面的优化上,并未重点发力。所以Linux操作系统的图形化页面:不好用、不稳定。 在开发中,使用命令行形式,效率更高,更加直观,并且资源占用低,程序运行更稳定。

FinalShell

既然决定使用命令行去学习Linux操作系统,那么就必须丰富一下工具的使用。 我们使用VMware可以得到Linux虚拟机,但是在VMware中操作Linux的命令行页面不太方便,主要是:

内容的复制、粘贴跨越VMware不方便

文件的上传、下载跨越VMware不方便

也就是和Linux系统的各类交互,跨越VMware不方便

我们可以通过第三方软件,FinalShell,远程连接到Linux操作系统之上。

并通过FinalShell去操作Linux系统。

这样各类操作都会十分的方便。

FinalShell的下载地址

Windows:

http://www.hostbuf.com/downloads/finalshell_install.exe

Mac:

http://www.hostbuf.com/downloads/finalshell_install.pkg

下载完成后双击打开安装。

按照提示一直下一步即可安装完成。

打开下载的pkg文件,按照提示下一步即可安装成功

首先,先查询到Linux系统的IP地址

打开Finshell软件,配置到Linux系统的连接

按图示配置连接,并点击确定

打开连接管理器

双击刚刚配置好的连接

点击接受并保存

如图连接成功

注意: Linux虚拟机如果重启,有可能,发生IP改变 如果改变IP需要在FinalShell中修改连接的IP地址 后面我们会讲解如何固定IP地址不发生改变

WSL(Windows Subsystem for Linux)

Linux有很多发行版本,我们之前使用vm虚拟机构建了CentOS版本,接下来我们通过win10系统自带的WSL来构建ubuntu版本环境。

为什么要用WSL

WSL作为Windows10系统带来的全新特性,正在逐步颠覆开发人员既有的选择。

传统方式获取Linux操作系统环境,是安装完整的虚拟机,如VMware

使用WSL,可以以非常轻量化的方式,得到Linux系统环境

开发人员都在用,大家都用的,我们也要学习

实在是太方便了,简单、好用、轻量化、省内存

什么是WSL

WSL:Windows Subsystem for Linux,是用于Windows系统之上的Linux子系统。 作用很简单,可以在Windows系统中获得Linux系统环境,并完全直连计算机硬件,无需通过虚拟机虚拟硬件。

简而言之: Windows10的WSL功能,可以无需单独虚拟一套硬件设备 就可以直接使用主机的物理硬件,构建Linux操作系统 并不会影响Windows系统本身的运行.

WSL部署

WSL是Windows10自带功能,需要开启,无需下载

点击确定后会进行部署 最后重启即可。

打开Windows应用商店

搜索Ubuntu

点击获取并安装

点击启动

输入用户名用以创建一个用户:

输入两次密码确认(注意,输入密码没有反馈,不用理会,正常输入即可)

至此,得到了一个可用的Ubuntu操作系统环境

安装Windows Terminal软件

Ubuntu自带的终端窗口软件不太好用,我们可以使用微软推出的:Windows Terminal软件 在应用商店中搜索terminal关键字,找到Windows Terminal软件下载并安装

再次打开Windows Terminal软件,即默认使用Ubuntu系统了(WSL)

在VMware Workstation Pro中制作并还原快照

快照制作需要虚拟机关机状态下(不关机也可以,但是比较慢,建议关机)

快照有什么作用? 快照可以保存虚拟机的状态, 当虚拟机出现问题的时候, 可以通过预先制作的快照恢复到制作时候的状态, 用作备份用。

Linux基础命令

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

Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘

Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面

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

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

Linux命令基础格式

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

command: 命令本身

-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节

parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等

语法中的[],表示可选的意思

ls命令

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

-a -l -h 是可选的选项

Linux路径是此命令可选的参数

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

直接输入ls命令,表示列出当前工作目录下的内容,当前工作目录是?

Linux系统的命令行终端,在启动的时候,默认会加载:

当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容

HOME目录:每个Linux操作用户在Linux系统的个人账户目录,路径在:/home/用户名

如图中的Linux用户是itheima,其HOME目录是:/home/itheima

Windows系统和Linux系统,均设有用户的HOME目录,如图:

刚刚展示了,直接使用ls命令,并未使用选项和参数。

那么ls的选项和参数具体有什么作用呢?

首先我们先来看参数。 当ls不使用参数,表示列出:当前工作目录的内容,即用户的HOME目录

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

如:

通过ls / 列出了根目录的内容,我们可以打开VMware,在Linux的图形化中对照一下

对照一下命令行的结果和图形化查看的结果

ls 命令的 -a选项

如下语法,ls命令是可以使用选项的

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

可以看到,ls -a 对比 ls 列出的内容更多了。

图中以.开头的,表示是Linux系统的隐藏文件/文件夹(只要以.开头,就能自动隐藏)

只有通过-a选项,才能看到这些隐藏的文件/文件夹

ls命令的 -l选项

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

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

ls命令选项的组合使用

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

ls -l -a

ls -la

ls -al

上述三种写法,都是一样的,表示同时应用-l和-a的功能

除了选项本身可以组合以外,选项和参数也可以一起使用。

ls 命令的 -h选项

-h 表示以易于阅读的形式,列出文件大小,如K、M、G

-h选项必须要搭配 -l 一起使用

cd 切换工作目录

当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录

我们可以通过cd命令,更改当前所在的工作目录。

cd命令来自英文:Change Directory

语法:

cd命令无需选项,只有参数,表示要切换到哪个目录下

cd命令直接执行,不写参数,表示回到用户的HOME目录

pwd 查看当前工作目录

通过ls来验证当前的工作目录,其实是不恰当的。

我们可以通过pwd命令,来查看当前所在的工作目录。

pwd命令来自:Print Work Directory

语法:

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

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

如图,通过pwd得知当前所在是HOME目录:/home/itheima

现在想要通过cd命令,切换工作目录到Desktop文件夹中去。

那么,cd命令的参数(Linux路径)如何写呢?

cd /home/itheima/Desktop

cd Desktop

上述两种写法,都可以正确的切换目录到指定的Desktop中

cd /home/itheima/Desktop 绝对路径写法

cd Desktop 相对路径写法

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

特殊路径符

如图,当前工作目录处于:/home/itheima/Desktop

现在想要,向上回退一级,切换目录到/home/itheima中,如何做?

可以直接通过cd,即可回到HOME目录

也可以通过特殊路径符来完成。

特殊路径符:

. 表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致

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

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

创建目录命令(mkdir)

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

mkdir来自英文:Make Directory

语法:

参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可

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

如果想要一次性创建多个层级的目录,如下图

会报错,因为上级目录itcast和good并不存在,所以无法创建666目录 可以通过

-p选项,将一整个链条都创建完成。

注意:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作 涉及到权限问题,HOME外无法成功 后续我们会讲解权限管控的知识

文件操作命令part1(touch、cat、more)

touch 创建文件

可以通过touch命令创建文件

语法:

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

cat命令 查看文件内容

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

不过,现在我们还未学习vi编辑器,无法向文件内编辑内容,所以,暂时,我们先通过图形化

在图形化中,手动向文件内添加内容,以测试cat命令

准备好文件内容后,可以通过cat查看内容。

语法:

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

more命令查看文件内容

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

cat是直接将内容全部显示出来

more支持翻页,如果文件内容过多,可以一页页的展示

语法:

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

Linux系统内置有一个文件,路径为:/etc/services,可以使用more命令查看

more /etc/services

在查看的过程中,通过空格翻页

通过q退出查看

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

cp命令复制文件文件夹

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

cp命令来自英文单词:copy

语法 :

-r选项,可选,用于复制文件夹使用,表示递归

参数1,Linux路径,表示被复制的文件或文件夹

参数2,Linux路径,表示要复制去的地方

复制文件

复制文件夹

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

mv移动文件或文件夹

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

mv命令来自英文单词:move

语法:

参数1,Linux路径,表示被移动的文件或文件夹

参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

rm删除文件、文件夹

rm命令可用于删除文件、文件夹

rm命令来自英文单词:remove

语法:

同cp命令一样,-r选项用于删除文件夹

-f表示force,强制删除(不会弹出提示确认信息)

普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示

所以一般普通用户用不到-f选项

参数1、参数2、......、参数N 表示要删除的文件或文件夹路径,按照空格隔开

删除文件

删除多个文件

删除文件夹,如下图,必须使用-r选项才可以

演示强制删除,-f选项

可以通过 su - root,并输入密码123456(和普通用户默认一样)临时切换到root用户体验

通过输入exit命令,退回普通用户。(临时用root,用完记得退出,不要一直用,关于root我们后面会讲解)

rm删除文件、文件夹 - 通配符

rm命令支持通配符 *,

用来做模糊匹配 符号* 表示通配符,即匹配任意内容(包含空),示例:

test*,表示匹配任何以test开头的内容

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

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

演示:

删除所有以test开头的文件或文件夹

rm是一个危险的命令,特别是在处于root(超级管理员)用户的时候。 请谨慎使用。

如下命令,请千万千万不要在root管理员用户下执行:

rm -rf /

rm -rf /*

效果等同于在Windows上执行C盘格式化。

查找命令(which、find)

which命令

我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。

和Windows系统中的.exe文件,是一个意思。

我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里

语法:

find命令 - 按文件名查找文件

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

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

语法:

为了确保后续演示,拥有最大的权限,可以在整个系统完成搜索

我们可以切换到root用户以获得管理员权限

执行命令: su - root

输入密码:123456(和你普通用户的密码一样)

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

基于语法,

可以有命令: find / -name "test"

find命令 - 通配符

根据语法:

被查找文件名,支持使用通配符 * 来做模糊查询。

符号* 表示通配符,即匹配任意内容(包含空),示例:

test*,表示匹配任何以test开头的内容

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

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

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

find命令 - 按文件大小查找文件

语法:

+、- 表示大于和小于

n表示大小数字

kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB

示例:

查找小于10KB的文件: find / -size -10k

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

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

grep、wc和管道符

grep命令

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

语法:

选项-n,可选,表示在结果中显示匹配的行的行号。

参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用""将关键字包围起来

参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口

现在,通过touch命令在HOME目录创建itheima.txt,并通过图形化页面编辑并保存如下内容:

过滤itheima关键字

过滤itcast关键字

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

wc命令做数量统计

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

语法:

选项,-c,统计bytes数量

选项,-m,统计字符数量

选项,-l,统计行数

选项,-w,统计单词数量

参数,文件路径,被统计的文件,可作为内容输入端口

不带选项,统计文件

管道符

学习了grep命令后,我们在来学习一个新的特殊符号,管道符:|

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

如上图:

cat itheima.txt的输出结果(文件内容)

作为右边grep命令的输入(被过滤文件)

管道符的应用非常多

ls | grep Desktop,过滤ls的结果

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

cat itheima.txt | grep itcast | grep itheima,可以嵌套使用哦

cat itheima.txt的结果给 grep itcast 使用

cat itheima.txt | grep itcast 的结果给 grep itheima使用

echo、tail和重定向符

echo命令

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

语法:

无需选项,只有一个参数,表示要输出的内容,复杂内容可以用""包围

演示:

在终端上显示:Hello Linux

带有空格或\等特殊符号,建议使用双引号包围

因为不包围的话,空格后很容易被识别为参数2,尽管echo不受影响,但是要养成习惯哦

反引号

看一下如下命令:echo pwd

本意是想,输出当前的工作路径,但是pwd被作为普通字符输出了。

我们可以通过将命令用反引号(通常也称之为飘号)`将其包围

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

重定向符

我们再来学习两个特殊符号,重定向符:>和>>

>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中

>>,将左侧命令的结果,追加写入到符号右侧指定的文件中

tail命令

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

参数,Linux路径,表示被跟踪的文件路径

选项,-f,表示持续跟踪

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

查看/var/log/vmware-network.log文件的尾部10行:tail /var/log/vmware-network.log

查看/var/log/vmware-network.log文件的尾部3行:tail -3 /var/log/vmware-network.log

tail持续跟踪文件更改

使用-f选项,可以持续跟踪文件更改

复制一个新的FinalShell的标签

在第一个标签中,执行:touch test.txt,创建一个test.txt文件

在第一个标签中,执行:tail -f test.txt,持续跟踪文件更改

在第二个标签中,多次执行:echo "内容" >> test.txt,向文件追加内容

观察第一个标签的变化

vi\vim编辑器

vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器

同图形化界面中的 文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。

vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

vi\vim编辑器的三种工作模式

命令模式(Command mode)

命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。

此模型下,不能自由进行文本编辑。

输入模式(Insert mode)

也就是所谓的编辑模式、插入模式。

此模式下,可以对文件内容进行自由编辑。

底线命令模式(Last line mode)

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

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

vim兼容全部的vi功能,后续全部使用vim命令

如果文件路径表示的文件不存在,那么此命令会用于编辑新文件

如果文件路径表示的文件存在,那么此命令用于编辑已有文件

通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口就是:命令模式窗口 命令模式是vi编辑器的入口和出口,如右图

进入vi编辑器会进入命令模式

通过命令模式输入键盘指令,可以进入输入模式

输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式

命令模式快捷键

经过刚刚的快速体验,想必同学们对于3种模式的切换有了一定的了解。 现在我们来看一下,在命令模式下的一些常见快捷键。

底线命令模式

编辑模式没有什么特殊的,进入编辑模式后,任何快捷键都没有作用,就是正常输入文本而已。

唯一大家需要记住的,就是:通过esc,可以退回到命令模式中即可。

在命令模式内,输入: ,即可进入底线命令模式,支持如下命令:

Linux用户和权限

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

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

root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。

普通用户的权限,一般在其HOME目录内是不受限的

一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

su和exit命令

su命令就是用于账户切换的系统命令,其来源英文单词:Switch User

语法:

  • 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上

参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root

切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d

使用普通用户,切换到其它用户需要输入密码,如切换到root用户

使用root用户切换到其它用户,无需密码,可以直接切换

sudo命令

在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。

但是我们不建议长期使用root用户,避免带来系统损坏。 我们可以使用sudo命令,为普通的命令授权,临时以root身份执行。

语法:

在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权

但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

为普通用户配置sudo认证

切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers

在文件的最后添加:

用户、用户组

Linux系统中可以:

配置多个用户

配置多个用户组

用户可以加入多个用户组中

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

针对用户的权限控制

针对用户组的权限控制

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

所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。

用户组管理

以下命令需root用户执行

创建用户组 groupadd 用户组名

删除用户组 groupdel 用户组名

用户管理

以下命令需root用户执行

创建用户

选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g

选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名

删除用户

选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留

查看用户所属组

参数:用户名,被查看的用户,如果不提供则查看自身

修改用户所属组

usermod -aG 用户组 用户名

将指定用户加入指定用户组

getent

使用getent命令,可以查看当前系统中有哪些用户

语法: getent passwd

共有7份信息,分别是:

用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

使用getent命令,同样可以查看当前系统中有哪些用户组

语法:getent group

包含3份信息,组名称:组认证(显示为x):组ID

查看权限控制

认知权限信息

通过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

rwx

那么,rwx到底代表什么呢?

r表示读权限

w表示写权限

x表示执行权限

针对文件、文件夹的不同,rwx的含义有细微差别:

r,针对文件可以查看文件内容

针对文件夹,可以查看文件夹内容,如ls命令

w,针对文件表示可以修改此文件

针对文件夹,可以在文件夹内:创建、删除、改名等操作

x,针对文件表示可以将文件作为程序执行

针对文件夹,表示可以更改工作目录到此文件夹,即cd进入

案例

当前用户itheima,非文件所属用户和用户组,锁定最后三位权限为:---,无读取权限

修改权限控制 - 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

那么问题来了,751表示什么意思呢?

权限的数字序号

权限可以用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

修改权限控制 - 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并对文件夹内全部内容应用同样规则

各类小技巧(快捷键)

  1. ctrl + c 强制停止

  2. ctrl + d 退出登出

  3. history 查看历史命令

  4. !命令前缀,自动匹配上一个命令

  5. ctrl + r,搜索历史命令

  6. ctrl + a | e,光标移动到命令开始或结束

  7. ctrl + ← | →,左右跳单词

  8. ctrl + l 或 clear命令 清屏

Linux系统的应用商店

操作系统安装软件有许多种方式,一般分为:

下载安装包自行安装

如win系统使用exe文件、msi文件等

如mac系统使用dmg文件、pkg文件等

系统的应用商店内安装

如win系统有Microsoft Store商店

如mac系统有AppStore商店

Linux系统同样支持这两种方式,我们首先,先来学习使用:Linux命令行内的"应用商店",yum命令安装软件

yum命令

yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。

语法:

选项:-y,自动确认,无需手动确认安装或卸载过程

install:安装

remove:卸载

search:搜索

yum命令需要root权限哦,可以su切换到root,或使用sudo提权。 yum命令需要联网

apt命令 - 扩展

前面学习的各类Linux命令,都是通用的。 但是软件安装,

CentOS系统和Ubuntu是使用不同的包管理器。

CentOS使用yum管理器,Ubuntu使用apt管理器

通过前面学习的WSL环境,我们可以得到Ubuntu运行环境。

语法:

用法和yum一致,同样需要root权限

apt install wget,安装wget

apt remove wget,移除wget

apt search wget,搜索wget

systemctl

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

语法:

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

NetworkManager,主网络服务

network,副网络服务

firewalld,防火墙服务

sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)

现在可以使用systemctl去尝试一下,控制这些服务的启动、关闭、自启动啦

除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。

yum install -y ntp,安装ntp软件

可以通过ntpd服务名,配合systemctl进行控制

yum install -y httpd,安装apache服务器软件

可以通过httpd服务名,配合systemctl进行控制

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

ln命令创建软连接

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

语法:

-s选项,创建软连接

参数1:被链接的文件或文件夹

参数2:要链接去的目的地

实例:

ln -s /etc/yum.conf ~/yum.conf

ln -s /etc/yum ~/yum

日期、时区

date命令

通过date命令可以在命令行中查看系统的时间

语法:

-d 按照给定的字符串显示日期,一般用于日期计算

格式化字符串:通过特定的字符串标记,来控制显示的日期格式

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

可以看到这个格式非常的不习惯。我们可以通过格式化字符串自定义显示格式

按照2022-01-01的格式显示日期

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

如上,由于中间带有空格,所以使用双引号包围格式化字符串,作为整体。

date命令进行日期加减

-d选项,可以按照给定的字符串显示日期,一般用于日期计算

其中支持的时间标记为:

-d选项可以和 格式化字符串配合一起使用哦

修改Linux时区

细心的同学可能会发现,通过date查看的日期时间是不准确的,这是因为:系统默认时区非中国的东八区。

使用root权限,执行如下命令,修改时区为东八区时区

将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可

ntp程序

我们可以通过ntp程序自动校准系统时间

安装ntp:yum -y install ntp

启动并设置开机自启:

systemctl start ntpd

systemctl enable ntpd

当ntpd启动后会定期的帮助我们联网校准系统的时间

也可以手动校准(需root权限):ntpdate -u ntp.aliyun.com

通过阿里云提供的服务网址配合ntpdate(安装ntp后会附带这个命令)命令自动校准

IP地址、主机名

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访问

主机名

每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名

无论是Windows或Linux系统,都可以给系统设置主机名

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

可以使用命令:hostnamectl set-hostname 主机名,修改主机名(需root)

重新登录FinalShell即可看到主机名已经正确显示

域名解析

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

实际上,我们一直都是通过字符化的地址去访问服务器,很少指定IP地址

比如,我们在浏览器内打开:www.baidu.com,会打开百度的网址

其中,www.baidu.com,是百度的网址,我们称之为:域名

访问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文件中配置记录即可

虚拟机配置固定IP

为什么需要固定IP

当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。

DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更

原因1:办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统,如果IP地址经常变化我们就要频繁修改适配很麻烦

原因2:在刚刚我们配置了虚拟机IP地址和主机名的映射,如果IP频繁更改,我们也需要频繁更新映射关系

综上所述,我们需要IP地址固定下来,不要变化了。

在VMware Workstation中配置固定IP

配置固定IP需要2个大步骤:

1.在VMware Workstation(或Fusion)中配置IP地址网关和网段(IP地址的范围)

2.在Linux系统中手动修改配置文件,固定IP 首先让我们,先进行第一步,跟随图片进行操作

现在进行第二步,在Linux系统中修改固定IP

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

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

网络传输

ping命令

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

语法:

选项:-c,检查的次数,不使用-c选项,将无限次数持续检查

参数:ip或主机名,被检查的服务器的ip地址或主机名地址

示例: 检查到baidu.com是否联通

结果表示联通,延迟8ms左右

wget命令

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

语法:

选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件

参数:url,下载链接

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

curl命令

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

语法:

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

参数:url,要发起请求的网络地址

端口

端口,是设备与外界通讯交流的出入口。端口可以分为:

物理端口和虚拟端口两类

物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等

虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的

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

IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址

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

语法:

可以通过netstat命令,查看指定端口的占用情况

语法:netstat -anp | grep 端口号,

安装netstat:yum -y install net-tools

进程管理

进程

程序运行在操作系统中,是被操作系统所管理的。

为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程

并会为每一个进程都分配一个独有的:进程ID(进程号)

查看进程

可以通过ps命令查看Linux系统中的进程信息

语法:

选项:-e,显示出全部的进程

选项:-f,以完全格式化的形式展示信息(展示全部信息)

一般来说,固定用法就是: ps -ef 列出全部进程的全部信息

查看指定进程

在FinalShell中,执行命令:tail,可以看到,此命令一直阻塞在那里

在FinalShell中,复制一个标签页,执行:ps -ef 找出tail这个程序的进程信息

问题:是否会发现,列出的信息太多,无法准确的找到或很麻烦怎么办?

我们可以使用管道符配合grep来进行过滤,如:

ps -ef | grep tail,即可准确的找到tail命令的信息

过滤不仅仅过滤名称,进程号,用户ID等等,都可以被grep过滤哦

如:ps -ef | grep 30001,过滤带有30001关键字的进程信息(一般指代过滤30001进程号)

关闭进程

在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。

同样,在Linux中,可以通过kill命令关闭进程。

语法:

选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。

主机状态

查看系统资源占用

可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器

默认每5秒刷新一次,

语法:直接输入top即可,按q或ctrl + c退出

top命令内容详解

top命令选项

top命令也支持选项:

top交互式选项

磁盘信息监控

使用df命令,可以查看硬盘的使用情况

语法:

选项:-h,以更加人性化的单位显示

可以使用iostat查看CPU、磁盘的相关信息

语法:

选项:-x,显示更多信息 num1:数字,刷新间隔,

num2:数字,刷新几次

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

网络状态监控

可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)

语法:

选项:-n,查看网络,DEV表示查看网络接口

num1:刷新间隔(不填就查看一次结束),

num2:查看次数(不填无限次数)

相关推荐
小生不才yz3 分钟前
shell编程 - 数据流指南
linux
vortex53 分钟前
深度字典攻击(实操笔记·红笔思考)
前端·chrome·笔记
闪闪发亮的小星星5 分钟前
主旋参数(四元数)与欧拉参数
笔记·其他
lisanmengmeng8 分钟前
添加ceph节点
linux·服务器·ceph
Tinyundg12 分钟前
Linux系统分区
linux·运维·服务器
修己xj16 分钟前
一月存档,二月加载
学习
江畔何人初19 分钟前
service发现
linux·运维·云原生
life码农26 分钟前
Linux系统清空文件内容的几种方法
linux·运维·chrome
蒸蒸yyyyzwd30 分钟前
c网络编程学习笔记
c语言·网络·学习
zbguolei31 分钟前
虚拟机安装Ubuntu后无法登录
linux·运维·ubuntu