虚拟机

  1. 什么是虚拟机?
    通过虚拟化技术,在电脑内,虚拟出计算机硬件,并给虚拟的硬件安装操作系统,即可得到一台虚拟的电脑,称之为虚拟机。
  2. 为什么要使用虚拟机?
    学习Linux系统,需要有Linux系统环境。
    我们不能给自己电脑重装系统为Linux,所以通过虚拟机的形式,得到可以用的Linux系统环境,供后续学习使用。

安装虚拟化软件VMware WorkStation

官方网址:https://www.vmware.com/products/desktop-hypervisor.html
建议内存不足的选择自定义安装位置

安装完成后检查网络适配器是否正常:
(如win11系统)设置->网络和Internet->相关设置->更多网络适配器选项
(通用步骤)win+r->输入ncpa.cpl
确保打开后能看到:VMnet1和VMnet8,如果没有是有问题的,后续虚拟机会上不了网
解决教程参照:https://blog.csdn.net/Chasingyq/article/details/140215553


使用VMware安装Linux虚拟机

下载CentOS操作系统
首先,我们需要下载操作系统的安装文件,
使用CentOS7.6版本:https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的/不要漏掉)
选择这个=>>CentOS-7-x86_64-DVD-1810.iso 2018-11-25 23:55 4.3G

进入安装的VMware->选择创建新的虚拟机->初学选经典->安装程序光盘映像文件(即下载的CentOS)->设置安装位置
安装完后设置硬盘大小->40G足够->勾选创建后打开虚拟机->完成后设置用户名还有密码

注意使用完虚拟机后请正常关闭,否则下次打开会导致出现如下报错:
该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
解决办法:找到CentOS安装目录,找到.lck结尾的文件,删除即可


FinalShell

我们使用VMware可以得到Linux虚拟机,但是在VMware中操作Linux的命令行页面不太方便,主要是:

  • 内容的复制、粘贴跨越VMware不方便。
  • 文件的上传、下载跨越VMware不方便。
  • 也就是和Linux系统的各类交互,跨越VMware不方便

我们可以通过第三方软件,FinalShell,远程连接到Linux操作系统之上,并通过FinalShell去操作Linux系统,这样各类操作都会十分的方便。

FinalShell的下载地址为:
Windows:
http://www.hostbuf.com/downloads/finalshell_install.exe

安装时自定义喜欢的安装位置即,安装过程中弹出要安装依赖插件点击确认即可。

连接Linux步骤:

  • 在linux桌面中右键,Open Terminal输入 ifconfig
  • 在输出的ens33中,有ip地址如192.168.88.128
  • 打开FinalShell,点击左上角文件夹->再点击左上角,选择添加SSH连接(Linux)
  • 在输入IP地址,以及输入Linux的用户名和密码->点击右下角确定即可->之后双击这个保存就可以连接
  • 验证: 分别在Linux和FinalShell中输入ls来对比输出即可
  • 之后虚拟机的窗口可以最小化,使用FinalShell来输入命令操作

WSL-Ubuntu

上述虚拟机等方法需要下载大量文件和配置安装步骤,windows系统现在自带WSL可以在系统里再虚拟一个linux系统。使用Ubuntu就可以只需要在windows自带的应用商店(MIcrosoft Store)下载Ubuntu即可

  • 在下载之前需要(win11)在控制面板,打开程序,选择启用或关闭WIN功能
  • 往下划有一个适用于Linux的Windows子系统,勾选它按提示操作即可

之后进入Ubuntu配置好用户名密码等配置信息即可
之后怎么找到Ubuntu?在开始菜单中搜索即可

与虚拟机Linux的区别:Ubnutu纯命令行,无图形化界面


虚拟机快照

用来将当前虚拟机的状态保存下来,在以后通过快照恢复虚拟机到保存的状态
步骤:

  1. 关机你的虚拟机(不关机快照速度很慢)
  2. 右键左侧菜单中的虚拟机,选择快照
  3. 选择快照管理器,里面可以拍摄快照(存档),点击拍摄即可
  4. 选择拍摄的快照,点击转到(读档),即可回到快照时虚拟机的状态

Linux目录结构

不同于Windows(C盘D盘…),Linux只有一个根路径
Linux的根目录为/ 如/user/local/hello.txt,第一个/表示根目录,后续/为层级关系
在Linux系统中,路径之间的层级关系,使用:/ 来表示
在Windows系统中,路径之间的层级关系,使用:\ 来表

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

当前工作目录
Linux命令行在执行命令的时候,需要一个工作目录, 打开命令行程序 (终端)默认设置工作目录在用户的HOME目录


Linux 基础命令

命令通用格式: command [-options] [paramter]
command: 命令本身
-options: 可选选项,控制命令的行为细节
命令的选项可以组合使用,如:ls -lah 等同于ls -a -l -h
paramter: 可选参数,控制命令的指向目标

列出目录下的内容—ls

ls: 以平铺形式,列出当前工作目录(默认HOME目录)下的内容(文件和文件夹)
可选选项:-a,-l,-h

  • -a选项,表示:all的意思,即列出全部文件(包含隐藏的文件/文件夹)
  • -l选项,表示:以列表(竖向排列)的形式展示内容,并展示更多信息(权限+用户+用户组+大小+创建时间+文件名)
  • -h 表示以易于阅读的形式,列出文件大小,如K、M、G。该命令必须搭配-l使用
    参数: Linux路径

举例:以列表形式查看根目录全部文件:ls -al /

切换工作目录—cd

语法:cd [Linux路径]

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

展示当前工作目录—pwd

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

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

绝对路径和相对路径

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

如当前工作目录/home/xusir 下有Desktop文件夹
相对路径写法:cd Desktop
绝对路径写法:cd /home/xusir/Desktop

特殊路径符

当前工作目录位于:/home/xusir/Desktop
特殊路径符:

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

创建文件夹—mkdir

语法:mkdir [-p] Linux路径

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

举例(当前工作目录:/home/xusir):
在当前目录创建test文件夹:mkdir ./testmkdir /home/xusir/test
创建/home/xusir/Demo/Test/hello(注:/Demo/Test/目录不存在): mkdir -p ./Demo/Test/hello

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

创建文件—touch

语法:touch Linux路径

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

分辨文件夹和文件:使用ls -l 每行第一个符号’d’表示文件夹’-‘表示文件

查看文件内容—cat和more

cat是直接将内容全部显示出来
语法:cat Linux路径

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

more支持翻页,如果文件内容过多,可以一页页的展示:按空格翻页,b上一页,q退出
语法:more Linux路径

  • more没有选项,只有必填参数,参数表示:被查看的文件路径。

如test.txt中写了helloworld:cat test.txt输出helloworld

复制文件或文件夹—cp

语法:cp [-r] 参数1 参数2

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

如将当前工作目录下的test.txt复制一份命名为test2.txt到当前目录:cp test.txt test2.txt
当前目录下的文件夹game复制一份到当前目录下:cp -r game game2

移动文件或文件夹—mv

语法: mv 参数1 参数2

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

如当前目录/home/xusir/Desktop下的文件test.txt移动到/home/xusir/Demo
命令:mv test.txt ../Desktop
如果想把test.txt文件移动当前目录下改名为test3.txt
命令:mv test.txt test3.txt

删除文件或文件夹—rm

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

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

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

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

如删除所有以test开头的文件或文件夹:rm -r test*

查找命令—which和find

which是针对命令的查找,比如which cd会查找cd命令的程序文件在哪里
find命令来搜索指定的文件:

  1. 文件名查找文件
    语法:find 起始路径 -name "被查找文件名"
    查找的文件名支持模糊匹配
    如果想再整个系统完成搜索,可以切换到root用户以获得管理员权限
  • 执行命令:su - root
  • 输入密码:123456(和你普通用户的密码一样)
  1. 文件大小查找文件
    语法:find 起始路径 -size +|-n[kMG]
  • +、-表示大于和小于
  • n表示大小数字
  • kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
  • 查找过程中按Ctrl+c 可以停止

示例:

  • 查找小于10KB的文件:find / -size -10k
  • 查找大于100MB的文件:find / -size +100M
  • 查找大于1GB的文件:find / -size +1G

过滤文件内容—grep

可以通过grep命令,从文件中通过关键字过滤文件行。
语法:grep [-n] 关键字 文件路径

  • 选项:-n,可选,表示在结果中显示匹配的行的行号。
  • 参数:关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
  • 参数:文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
  • 查找后匹配到的关键字会高光显示

例如home目录下有个test.txt内容如下:
hnit is a university
university school grade of 2
输入命令:grep -n "hnit" test.txt
输出结果:
1:hnit is a university
输入命令:grep "university" test.txt
输出结果:
hnit is a university
university school grade of 2

统计内容数量—wc

可以通过WC命令统计文件的行数、单词数量等
语法:wc [-c -m -l -w] 文件路径

  • 选项,-c,统计bytes数量
  • 选项,-m,统计字符数量
  • 选项,-l,统计行数
  • 选项,-w,统计单词数量
  • 参数,文件路径,被统计的文件,可作为内容输入端口

如果直接输入wc test.txt
输出:2 9 50 test.txt 分别是:行数,单词数,字节大小

管道符的概念和应用

管道符:|,含义是:将管道符左边命令的结果,作为右边命令的输入
举例:
test.txt内容如下:
hnit is a university
university school grade of 2
输入:cat test.txt | grep hnit
输出:hnit is a university
解释:cat test.txt的输出结果(文件内容),作为右边grep命令的输入(被过滤文件)

管道符还可以嵌套如:
统计test.txt文件夹内带university关键字的有多少行:cat test.txt | grep unversity | wc -l

还有:ls | grep test 输出test.txt
还有:ls -l /user/bin | wc -l可以达到统计文件夹内有多少文件的作用

输出内容—echo

可以使用echo命令在命令行内输出指定内容。语法:echo 输出的内容

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

举例:在终端上显示:Hello Linux

1
2
[xusir@localhost ~]$ echo "Hello Linux"
Hello Linux

带有空格或\等特殊符号,建议使用双引号包围
因为不包围的话,空格后很容易被识别为参数2

反引号包围的内容会被作为命令执行

看一下如下命令:echo pwd

1
2
[xusir@localhost ~]$ echo pwd 
pwd

本意是想,输出当前的工作路径,但是pwd被作为普通字符输出了。
我们可以通过将命令用反引号(通常也称之为飘号)`将其包围
`包围的内容,会被作为命令执行,而非普通字符
1
2
[xusir@localhost ~]$ echo `pwd` 
/home/itheima

重定向符号—>和>>

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

1
2
3
4
5
6
7
8
9
10
11
12
[xusir@localhost ~]$ echo "Hello Linux" > test.txt
[xusir@localhost ~]$ cat test.txt
Hello Linux
//echo "Hello xusir" > test.txt,再次执行,覆盖新内容
[xusir@localhost ~]$ echo "Hello xusir"> test.txt
[xusir@localhost ~]$ cat test.txt
Hello xusir
//echo "Hello cctv">> test.txt,再次执行,使用>>追加新内容
[xusir@localhost ~]$ echo "Hello cctv">> test.txt
[xusir@localhost ~]$ cat test.txt
Hello xusir
Hello cctv

举例:输出我当前的工作目录并覆写到work.txt文件中

1
2
3
[xusir@localhost ~]$ echo 我当前的工作目录是`pwd`>work.txt
[xusir@localhost ~]$ cat work.txt
我当前的工作目录是/home/xusir

跟踪文件更改—tail

使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改。
语法:tail [-f -num] Linux路径

  • 参数,Linux路径,表示被跟踪的文件路径
  • 选项,-f,表示持续跟踪。按Ctrl+C停止跟踪
  • 选项,-num,表示,查看尾部多少行,不填默认10行

编辑器—vi/vim

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

  2. 基础命令
    vi 文件路径vim 文件路径

  • 如果文件路径表示的文件不存在,此命令会用于编辑新文件(创建新文件)
  • 如果文件路径表示的文件存在,此命令用于编辑已有文件(编辑已有文件)

运行模式:
命令模式,默认的模式,可以通过键盘快捷键控制文件内容
输入模式,通过命令模式进入,可以输入内容进行编辑,按esc退回命令模式
底线命令模式,通过命令模式进入,可以对文件进行保存、关闭等操作

输入vi filename进入命令模式
命令模式输入iao进入输入模式
命令模式输入:进入底线命令模式
命令模式输入:wq保存并退出
输入模式按ESC键回到命令模式
底线命令模式输入命令以回车结束运行回到命令模式

在命令模式下的一些常见快捷键。

模式 命令 描述
命令模式 i 在当前光标位置进入 输入模式
命令模式 a 在当前光标位置之后进入 输入模式
命令模式 I 在当前行的开头,进入 输入模式
命令模式 A 在当前行的结尾,进入 输入模式
命令模式 o 在当前光标下一行进入 输入模式
命令模式 O 在当前光标上一行进入 输入模式
输入模式 Esc 任何情况下输入esc都能回到命令模式
命令模式 键盘上、键盘k 向上移动光标
命令模式 键盘下、键盘j 向下移动光标
命令模式 键盘左、键盘h 向左移动光标
命令模式 键盘右、键盘l 向后移动光标
命令模式 θ 移动光标到当前行的开头
命令模式 $ 移动光标到当前行的结尾
命令模式 pageup(PgUp) 向上翻页
命令模式 pangdown(PgDn) 向下翻页
命令模式 / 进入搜索模式
命令模式 n 向下继续搜索
命令模式 N 向上继续搜索
命令模式 dd 删除光标所在行的内容
命令模式 ndd n是数字,表示删除当前光标向下n行
命令模式 yy 复制当前行
命令模式 nyy n是数字,复制当前行和下面的n行
命令模式 p 粘贴复制的内容
命令模式 u 撤销修改
命令模式 ctrl +r 反向撤销修改
命令模式 gg 跳到首行
命令模式 G 跳到行尾
命令模式 dG 从当前行开始,向下全部删除
命令模式 dgg 从当前行开始,向上全部删除
命令模式 d$ 从当前光标开始,删除到本行的结尾
命令模式 d0 从当前光标开始,删除到本行的开头

超级管理员—root用户

切换用户
语法:Su [-] [用户名]

  • -符号是可选的,表示是否在切换用户后加载环境变量,建议带上
  • 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
  • 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d
  • 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
  • 使用root用户切换到其它用户,无需密码,可以直接切换如su - xusir

授权命令—sudo
使用root用户可能会失误给系统带来损害,而sudo命令能为普通命令授权,临时以root身份执行。
语法:sudo 其他命令

  • 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
  • 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

为普通用户配置sudo认证

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

用户和用户组

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

创建用户:useradd [-g -d] 用户名

  • 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
  • 例如创建一个xyz用户位于hnit组中,home目录为/home/test111:useradd xyz -g hnit -d /home/test111
  • 一个用户可以有多个组,一个组可以有多个用户

注意:在Linux中创建用户时,默认是没有密码的。
当使用useradd命令创建一个新用户时,如果不指定密码选项,则该用户在创建后没有密码,并且无法登录系统。
要为用户username设置密码,可以使用这个命令sudo passwd username

删除用户:userdel [-r] 用户名

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

查看用户所属组:id [用户名]

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

修改用户所属组:usermod -aG 用户组 用户名,将来指定用户加入指定用户组

  • 如:修改xusir用户到hnit组:usermod -aG hnit xusir

查看当前系统中有哪些用户:getent passwd

  • 查出来有7份信息:用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

权限信息

认知权限信息
权限细节总共分为10个槽位

  1. 第一个槽位:-或d或I
    -表示文件d表示文件夹I表示软链接

  2. 第2~4个槽位为所属用户权限:r或- w或- x或-

  3. 第5~7个槽位为所属用户组权限:r或- w或- x或-

  4. 第8~10个槽位为其它用户权限:r或- w或- x或-

  5. 举例:drwxr-xr-x,表示:
    这是一个文件夹,首字母d表示
    所属用户的权限是:有r有w有x,rwx
    所属用户组的权限是:有r无w有x, r-x(-表示无此权限)
    其它用户的权限是:有r无w有x,r-x

rwx
r 表示读权限,w 表示写权限,x 表示执行权限
针对文件、文件夹的不同,rwx的含义有细微差别:
r,针对文件可以查看文件内容,针对文件夹,可以查看文件夹内容,如1s命令
w,针对文件表示可以修改此文件,针对文件夹,可以在文件夹内:创建、删除、改名等操作
x, 针对文件表示可以将文件作为程序执行,针对文件夹,表示可以更改工作目录到此文件夹,即cd进入


修改权限—chmod命令

可以使用chmod命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。
语法:chmod [-R] 权限 文件或文件夹

  • 选项:-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

权限的数字序号
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限
数字的细节如下:r记为4,w记为2,x记为1,可以有:
0:无任何权限,即 —-
1:仅有x权限, 即 —X
2:仅有w权限 即-W-
3:有w和x权限即-wX
4:仅有r权限 即 r—
5:有r和×权限 即r-X
6:有r和w权限 即rw-
7:有全部权限 即rwx
举例:chmod 751 test.txt.751表示:rwx(7)r-x(5)—×(1)


修改文件文件夹所属—chown命令

使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
语法:chown [-R] [用户][:][用户组] 文件或文件夹

  • 选项, -R, 同chmod, 对文件夹内全部内容应用相同规则
  • 选项, 用户,修改所属用户
  • 选项,用户组,修改所属用户组

示例:

  • chown root hello.txt, 将hello.txt所属用户修改为root
  • chown :root hello.txt,将hello.txt所属用户组修改为root
  • chown root:hnit hello.txt, 将hello.txt所属用户修改为root, 用户组修改为hnit
  • chown -R root test, 将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则

快捷键

  1. Ctrl+c 强制停止
    某些程序想要强制停止它
    命令输入错误 ,退出当前状态

  2. Ctrl+d 退出或登出
    退出账号登录,如退出root账号
    退出一些程序的专属页面,如python编辑环境
    注: 不能用于退出vi/vim

  3. history
    可以查看历史输入过的命令
    历史命令搜索,通过:!命令前缀,自动执行上一次匹配前缀的命令
    也可以:Ctrl+r,输入内容去匹配历史命令
    如果搜索到的内容为需要的:回车键直接执行,键盘左右键,可以得到此命令(不执行)

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

  5. 清屏
    Ctrl+l或输入clear,清空终端内容

  6. 命令补全:Tab


软件安装

CentOS的软件安装包为.rpm的文件,安装命令为yum
Ubunut的软件安装包为.deb的文件,安装命令为apt

yum命令

yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法:yum [-y] [install | remove | search] 软件名称

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

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

举例安装wget

  • yum install wget,通过yum命令安装wget程序
  • yum remove wget,通过yum命令卸载wget命令
  • yum search wget,通过yum命令,搜索是否有wget安装包

apt命令

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

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

控制软件软件的启动和关闭—systemctl命令

Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启
能够被systemctl管理的软件,一般也称之为:服务
第三方软件,如果自动注册了可以被systemctl控制,如果没有自动注册,可以手动注册。
语法:systemctl start | stop | status | enable | disable 服务名

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

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

  • NetworkManager,主网络服务
  • network,副网络服务
  • firewalld,防火墙服务
  • sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)

软连接—ln命令

系统中创建软链接,可以将文件,文件夹链接到其它位置(像快捷方式)
语法 ln -s 参数1 参数2

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

实例:
ln -s /etc/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum


日期和时间

date命令

通过date命令可以在命令行中查看系统的时间
语法:date [-d] [+格式化字符串]

  • -d 按照给定的字符串显示日期,一般用于日期计算
    • 其支持的时间标记为:
    • year年
    • month月
    • day天
    • hour小时
    • minute分钟
    • second秒
  • 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
    • %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:00UTC 到现在的秒数

如:按照2024-08-29 10:00:00格式显示日期:date "+%Y-%m-%d %H:%M:%S"
如:显示今天的日期+一天:date -d "+1 day"

修改Linux时区

通过date查看的日期时间是不准确的,因为系统默认时区非中国的东八区.
使用root权限,执行如下命令,修改时区为东八区时区

1
2
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

将系统自带的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地址、主机名

  1. 查看本机IP地址:ifconfig
    如果无法使用该命令可安装:yum -y install net-tools来解决

  2. 特殊IP地址
    127.0.0.1:指代本机
    0.0.0.0:指代本机,或在放行规则里代表允许任意IP访问

  3. 查看本机名:输入hostname

  4. 修改主机名:hostnamectl set-hostname 主机名

配置域名解析(主机名映射)

通过主机名找到对应计算机的IP地址,这就是主机名映射(域名解析)
先从系统本地的记录中去查找,如果找不到就去公开的DNS服务器去查找

本机的记录(私人地址本)

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • Linux: /etc/hosts

在VMware Workstation中配置Linux系统固定IP地址(用于Windows系统)

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

    • 打开VMware Workstation的编辑里的虚拟网络编辑器(需要管理员模式运行)
    • 在VMnet8 配置子网Ip(192.168.88.00)和子网掩码(255.255.255.0)
    • 点击NAT设置,将网关设置为(192.168.88.2)
  2. 在Linux系统中手动修改配置文件,固定IP

    • 使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件
    • BOOTPROTO=”dhcp” 将dhcp改为static
    • 在文档末尾新增如下内容之后保存退出
1
2
3
4
IPADDR="192.168.88.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
  • IPADDR为IP地址
  • NETMASK为子网掩码固定:255.255.255.0
  • GATEWAY网关和VMware虚拟网络编辑器中设置的一致
  • DNS1设置为网关即可
  • 关闭网卡systemctl stop network
  • 重启网卡systemctl start network
  • 查看IP地址ifconfig 可以看到今后固定的IP地址
  • 去finalshell重写配置一下IP连接就可以了。

网络请求和下载

检查网络—ping命令

可以通过ping命令,检查指定的网络服务器是否是可联通状态
语法:ping [-c num] ip或主机名

  • 选项:-C,检查的次数,不使用-C选项,将无限次数持续检查
  • 参数:ip或主机名,被检查的服务器的ip地址或主机名地址

如检查到baidu.com是否联通:ping baidu.com

下载网络文件—wget命令

wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url

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

监控后台下载进度tail -f wget-log
注意:无论下载是否完成,都会生成要下载的文件,如果下载未完成,及时清理

发送http网络请求—curl命令

curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-O] url

  • 选项:-O, 用于下载文件,当url是下载链接时,可以使用此选项保存文件
  • 参数:url, 要发起请求的网络地址

如:curl cip.cc可以获取自己的公网地址


端口

计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。
通过端口可以锁定计算机上具体的程序, 确保程序之间进行沟通
IP地址相当于小区地址,在小区内可以有许多住户(程序)而门牌号(端口)就是各个住户(程序)的联系地址

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

查看端口占用

  1. 可以通过nmap命令去查看指定IP的对外暴露端口
    使用nmap命令,安装nmap:yum -y install nmap
    语法:nmap 被查看的IP地址

  2. 可以通过netstat命令,查看本机指定端口的占用情况
    安装netstat: yum -y install net-tools
    语法:netstat -anp | grep 端口号,就可以知道当前系统xx端口被程序(进程号xxx)占用


进程

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

查看进程—ps

linux可以可以通过ps命令查看Linux系统中的进程信息
语法:ps[-e -f]

  • 选项:-e, 显示出全部的进程
  • 选项:-f, 以完全格式化的形式展示信息(展示全部信息)
    一般来说,固定用法就是:ps -ef 列出全部进程的全部信息

UID:进程所属的用户ID
PD:进程的进程号D
PPID:进程的父ID(启动此进程的其它进程)
C:此进程的CPU占用率(百分比)
STIME:进程的启动时间
TTY:启动此进程的终端序号,如显示?,表示非终端启动
TIME:进程占用CPU的时间
CMD:进程对应的名称或启动路径或启动命令

如果想要准确的找到想要的指定进程可以用管道符来过滤ps -ef | grep 关键字
如:ps -ef | grep 进程名或启动时间或PID

关闭进程—kill

在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。
同样,在Linux中,可以通过kill命令关闭进程。
语法:kill [-9] 进程ID

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

主机状态监控

查看系统资源占用—top

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

top命令也支持选项:
选项 功能
-p 只显示某个进程的信息
-d 设置刷新时间,默认是5s
-C 显示产生进程的完整命令,默认是进程名
-n 指定刷新次数,比如 top -n 3,刷新输出3次后退出
-b 以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i 不显示任何闲置(idle)或无用(zombie)的进程
-u 查找特定用户启动的进程

磁盘信息监控—df和iostat

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

  2. 可以使用iostat查看CPU、磁盘的相关信息
    需要安装软件:yum install sysstat
    语法:iostat [-x] [num1] [num2]

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

网络状态监控—sar

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

rxKB/s :每秒钟接受的数据包大小,单位为KB
txKB/s :每秒钟发送的数据包大小,单位为KB


环境变量

执行env即可查看当前系统环境变量(KeyValue型结构)

设置环境变量

设置临时环境变量,语法:export 变量名=值。如export MYNAME=xnj,取出来:echo $MYNAME

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

环境变量PATH这个项目里面记录了系统执行命令的搜索路径。这些搜索路径我们也可以自行添加到PATH中去。
测试:
在当前HOME目录内创建文件夹,myenv, 在文件夹内创建文件mkhaha
通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行

修改PATH的值
临时修改PATH: export PATH=$PATH:/home/xusir/myenv,再次执行mkhaha, 无论在哪里都能执行了
或将export PATH=$PATH:/home/xusir/myenv,填入用户环境变量文件或系统环境变量文件中去
语法export PATH=$PATH:自定义路径


上传、下载

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

当然,除了通过FinalShell的下方窗体进行文件的传输以外,也可以通过rz、SZ命令进行文件传输。
rz、sz命令需要安装,可以通过:yum -y install lrzsz, 即可安装。
rz命令,进行上传,语法:直接输入rz即可
sz命令进行下载,语法:sz要下载的文件
文件会自动下载到桌面的:fsdownload文件夹中


压缩解压

tar命令

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

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

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

zip命令压缩文件

可以使用zip命令,压缩文件为zip压缩包
语法:zip [-r] 参数1 参数2 ... 参数N
-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 xusir a.txt
将test、xusir两个文件夹和a.txt文件,压缩到test.zip文件内

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