最新资讯

  • 从0到1快速学会Linux操作系统,这一篇就够了!

从0到1快速学会Linux操作系统,这一篇就够了!

2025-04-28 05:00:09 0 阅读

 一、认识Linux

1.1什么是操作系统? 软件的一种,用户和计算机硬件之间的桥梁。

操作系统是计算机软件的一种,它主要负责: 作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作。 而计算机,如果没有操作系统,就是一堆无法使用的垃圾而已。

用户控制操作系统,操作系统安排硬件干活。不管是PC操作系统还是移动操作系统其功能都是:调度硬件进行工作,充当用户和硬件之间的桥梁。

1.2 什么是linux?保护模式下的操作系统

创始人 : 林纳斯 托瓦兹,Linux 诞生于 1991 年,作者上大学期间。因为创始人在上大学期间经常需要浏览新闻和处理邮件,发现现有的操作系统不好用 , 于是他决心自己写一个保护模式下的操作系统,这就是 Linux 的原型, 当时他 21 岁,后来经过全世界网友的支持 , 现在能够兼容多种硬件,成为最为流行的服务器操作系统之一。

1.3 什么是Linux内核?毛坯房

内核是 Linux 操作系统的核心系统级应用程序只是锦上添花。内核提供了 Linux 系统的主要功能,如硬件调度管理的能力。Linux 内核是免费开源的,任何人都可以查看内核的源代码,甚至是贡献源代码。可以通过:Linux内核官网下载地址https://www.kernel.org去下载 Linux 内核 。

内核无法被用户直接使用,需要配合应用程序才能被用户使用。 在内核之上,封装系统级应用程序,组合在一起就称之为Linux发行版。

1.4 什么是Linux 发行版?精装房

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

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

1.5 Linux的优势有哪些?稳定+安全+高性能

1.    开源免费:无需购买许可证,节约成本。
2.    稳定可靠:可长期运行,无需频繁重启,适合高可用性需求。
3.    高安全性:强大的权限管理和快速漏洞修复,防御能力更强。
4.    资源占用低:高效利用硬件,适用于老旧设备或性能要求高的环境。
5.    灵活性强:支持多种发行版、脚本语言和工具,可定制化程度高。
6.    社区支持:全球开发者提供丰富文档和技术支持。

二、个人学习Linux的三种方式 

方式1:在虚拟机VMware上安装Linux,再通过第三方软件(例如Xshell、MobaXterm)远程连接到Linux服务器操作系统。

本文主要是记录如何从0学习Linux命令行,相关软件的安装及连接请参考其他博客的安装教程,这里我把所有的相关软件的官网地址都放在下面了,安装过程太过繁琐就不予演示了,谢谢理解。

1.VMware WorkStation官网下载地址:https://www.vmware.com/
1.1虚拟机安装请点击此链接查看这篇博客:https://blog.csdn.net/weixin_45806267/article/details/143982891
2.Ubuntu官网下载地址:https://ubuntu.com/download/desktop
2.1Ubuntu安装请点击该链接查看这篇博客:https://blog.csdn.net/weixin_45806267/article/details/143994126
3.CentOS官网下载地址:https://vault.centos.org/

方式2:在个人电脑上使用WSL获得Ubuntu系统环境

 (1)什么是WSL?

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

(2)为什么要用WSL?

WSL作为Windows10系统带来的全新特性,正在逐步颠覆开发人员既有的选择。 传统方式获取Linux操作系统环境,是安装完整的虚拟机,如VMware。

实在是太方便了,简单、好用、轻量化、省内存,使用WSL,可以以非常轻量化的方式,得到Linux系统环境。

(3)怎么得到WSL?

方式3:通过阿里云、腾讯云、华为云等购买Linux云服务器进行学习

三、常见的Linux连接方法 

方法1:直接连接

你要连接的电脑和该服务器处于同一局域网(信息科连接机房内的Linux),此时可以直接连接,可以通过直接通过管理平台或者远程桌面到对应服务器上就行登录。

方法2:通过虚拟机连接

安装了虚拟机,通过虚拟机部署了Linux,此时您就也可以通过虚拟机进入Linux。

方法2:Windows cmd命令行连接

该方法必须确保Linux服务器的SSH服务端口22已经开启。

方法4:通过第三方软件(类似于通过navicat来高效管理数据库)

该方法必须确保Linux服务器的SSH服务端口22已经开启。

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

主要是: 内容的复制、粘贴跨越VMware不方便文件的上传、下载跨越VMware不方便。因此我们可以通过第三方软件(利用SSH安全外壳协议),远程连接登录控制操作Linux操作系统, 这样各类操作都会十分的方便。

以下是远程连接Linux常用的第三方软件(SSH远程连接工具)官网下载地址:
1.MobaXterm:https://mobaxterm.mobatek.net/
2.FinalShell:https://www.hostbuf.com/
3.Tabby:https://tabby.sh/
4.xshell:https://www.xshell.com/zh/
5.xshell:https://www.xshell.com/zh/free-for-home-school/

(2)如何查看Linux的IP地址并远程连接呢?
① 在Linux操作系统中,桌面空白右键点击:open in terminal
② 输入ifconfig,即可看到IP地址
② 在以上某一软件中配置好IP地址,以及Linux的账号密码后即可连接成功 

知识补充:什么是SSH?常用来作为远程登录Linux的安全协议

secure shell(SSH):安全外壳协议(安全的shell),是一个计算机网络协议(默认端口号为22), 是一种远程加密传输协议。通过SSH协议,可以在客户端安全(提供身份认证、信息加密)的远程连接LInux服务器或其他设备。

个人理解:是一个远程工具。利用SSH机制,可以在我们的办公PC终端和Linux之间建立一条安全的通道,我们通过这个通道可以远程访问连接操作Linux。

四、Linux 的目录结构

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

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

五、Linux 命令通用格式

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

command   [-options]   [parameter ]                          语法中的 [],表示可选的意思 。

  • command 命令本体,即命令本身
  • [-options] 可选选项,控制命令的行为细节
  • [parameter ]可选参数,控制命令的指向目标 

六、Linux命令学习(通用格式: 命令+[选项]+[参数]

1 ls命令(list):列出当前目录下的内容

ls命令来自英文:list 列表,列出。

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

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

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

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

1.1 ls -a 列出当前目录下的全部文件 

 1.2 ls -l 以列表的形式展示当前目录下的内容 

 1.3 ls -l -h 以列表的形式展示当前目录下的内容以及它们的大小

2  cd命令(Change Directory):切换当前工作目录

cd  [linux路径]  切换当前所在的工作目录

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

cd命令来自英文:Change Directory:切换工作目录。

语法:cd  [linux路径]

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

 3 pwd命令(Print Work Directory):查看当前工作目录

通过ls来验证当前的工作目录,其实是不恰当的。 我们可以通过pwd命令,来查看当前所在的工作目录。

pwd命令来自:Print Work Directory:打印当前工作目录。

语法: pwd命令,无选项,无参数,直接输入pwd即可。

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

4.1 绝对路径(具体路径):以根目录/为起点

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

4.2 相对路径:以当前所在目录为起点【更加简洁】

当前所在目录为起点,描述路径的一种写法,路径描述无需以/开头。

 4.3 特殊路径符

.  一个点表示当前目录,比如cd . 或 cd ./Desktop

..  两给点表示上一级目录,比如:回退到上一级cd ..  或回退到上一级的上一级 cd ../..

~ 一个波浪线表示用户的HOME目录,比如:cd ~ 或 cd ~/Desktop

4.4 练习 

1.当前工作目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径。 test/hello.txt

2.在当前工作目录的上级目录有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的相对路径。

../test/hello.txt

3.在HOME目录内有一个test文件夹,文件夹内有一个文件hello.txt,请描述文件的路径,需要使用符号~ 。

~/test/hello.txt

5 mkdir命令(Make Directory):创建新的目录(文件夹)

mkdir来自英文:Make Directory

语法:mkdir [-P] [Linux路径] 

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

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

mkdir -p 选项:如果想要一次性创建多个层级的目录,如下图(不加-p报错如下:)

[root@VM-8-12-centos ~]# mkdir test4/good/nb666
mkdir: cannot create directory ‘test4/good/nb666’: No such file or directory

会报错,因为上级目录test4和good并不存在,所以无法创建nb666目录。

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

[root@VM-8-12-centos ~]# mkdir test4/good/nb666
mkdir: cannot create directory ‘test4/good/nb666’: No such file or directory

[root@VM-8-12-centos ~]# mkdir -p test4/good/nb666  --可以通过-p选项,将一整个链条都创建完成。

[root@VM-8-12-centos ~]# ls
test1  test2  test20250103  test3  test4

[root@VM-8-12-centos ~]# cd test4
[root@VM-8-12-centos test4]# ls
good

[root@VM-8-12-centos test4]# cd good
[root@VM-8-12-centos good]# ls
nb666

注意:mkdir创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作。

涉及到权限问题,HOME外无法成功。

6 touch命令:创建文件

touch命令是“Globally search a Regular Expression and Print”的缩写。

语法:touch Linux路径 

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

[root@VM-8-12-centos ~]# pwd
/root
[root@VM-8-12-centos ~]# ls
test0  test1  test2  test20250103  test3  test4

[root@VM-8-12-centos ~]# touch text.txt
[root@VM-8-12-centos ~]# ls
test0  test1  test2  test20250103  test3  test4  text.txt

-rw-r--r--   1 root root    0 Jan  3 19:59 text.txt
[root@VM-8-12-centos ~]# ls -l
total 24
drwxr-xr-x 2 root root 4096 Jan  3 19:47 test0
drwxr-xr-x 5 root root 4096 Jan  3 19:29 test1
drwxr-xr-x 2 root root 4096 Jan  3 19:27 test2
drwxr-xr-x 2 root root 4096 Jan  3 19:18 test20250103
drwxr-xr-x 2 root root 4096 Jan  3 19:31 test3
drwxr-xr-x 3 root root 4096 Jan  3 19:38 test4
-rw-r--r-- 1 root root    0 Jan  3 19:59 text.txt

 7 cat命令:查看文件内容

cat命令是“concatenate”的缩写。

语法:cat Linux路径

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

8 more命令:分页查看文件内容(内容过多时支持翻页展示)

more命令同样可以查看文件内容,同cat不同的是: cat是直接将内容全部显示出来,more支持翻页,如果文件内容过多,可以一页页的展示。

语法:more Linux路径

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

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

more /etc/services

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

通过按q 即可退出查看

 9 -r(recursive)和-f(force)代表什么?

9.1 -r 来自英文单词recursive:递归的。

在Linux命令中,`-r`选项用于:递归地处理目录及其内容。在Linux操作系统中,cp复制和rm删除文件夹时需要使用`-r`(递归)选项,这是因为这些操作不仅涉及到文件夹本身,还涉及到其包含的所有子文件夹和文件。

9.2 -f 来自英文单词force:强制

在使用`rm`命令删除文件或目录时,加上`-f`(force)选项可以强制删除文件或目录不会提示确认。这对于批量删除文件非常有用,经常与`-r`(递归)选项一起使用,特别是在删除非空目录时。

10 cp命令(copy):复制文件、加-r复制文件夹

cp命令来自英文单词:copy

语法: cp -r 参数1 参数2   --复制文件夹,必须使用-r选项,否则不会生效

  • -r选项,可选,用于复制文件夹使用,表示递归。
  • 参数1,Linux路径,表示被复制的文件或文件夹。
  • 参数2,Linux路径,表示要复制到哪里。
***复制文件:
[root@VM-8-12-centos ~]# pwd
/root
[root@VM-8-12-centos ~]# ls -lh   --当前路径下有哪些文件、文件夹
total 24K
drwxr-xr-x 2 root root 4.0K Jan  4 10:00 test0
drwxr-xr-x 5 root root 4.0K Jan  3 19:29 test1
drwxr-xr-x 2 root root 4.0K Jan  3 19:27 test2
drwxr-xr-x 2 root root 4.0K Jan  3 19:18 test20250103
drwxr-xr-x 2 root root 4.0K Jan  3 19:31 test3
drwxr-xr-x 3 root root 4.0K Jan  3 19:38 test4
-rw-r--r-- 1 root root    0 Jan  4 09:59 text0
-rw-r--r-- 1 root root    0 Jan  3 19:59 text.txt

[root@VM-8-12-centos ~]# cp text.txt text1.txt  --复制text.txt为当前路径下的text1.txt

[root@VM-8-12-centos ~]# cp text.txt ./text2.txt  --复制text.txt为当前路径下的text2.txt

[root@VM-8-12-centos ~]# cp text.txt  /root/text3.txt --复制text.txt为当前路径下的text3.txt
 
[root@VM-8-12-centos ~]# ls -l   --以上三个操作后当前路径下有哪些文件、文件夹
total 24
drwxr-xr-x 2 root root 4096 Jan  4 10:00 test0
drwxr-xr-x 5 root root 4096 Jan  3 19:29 test1
drwxr-xr-x 2 root root 4096 Jan  3 19:27 test2
drwxr-xr-x 2 root root 4096 Jan  3 19:18 test20250103
drwxr-xr-x 2 root root 4096 Jan  3 19:31 test3
drwxr-xr-x 3 root root 4096 Jan  3 19:38 test4
-rw-r--r-- 1 root root    0 Jan  4 09:59 text0
-rw-r--r-- 1 root root    0 Jan  4 10:03 text1.txt
-rw-r--r-- 1 root root    0 Jan  4 10:03 text2.txt
-rw-r--r-- 1 root root    0 Jan  4 10:05 text3.txt
-rw-r--r-- 1 root root    0 Jan  3 19:59 text.txt

***复制文件夹加选项-r
[root@VM-8-12-centos ~]# ls    --当前路径下有哪些文件、文件夹
study02.txt  test0  test2         test3  text0      text2.txt  text.txt
studytest    test1  test20250103  test4  text1.txt  text3.txt

[root@VM-8-12-centos ~]# cp studytest studytest1   --复制文件夹不加-r报错
cp: omitting directory ‘studytest’

[root@VM-8-12-centos ~]# cp -r studytest studytest1 --复制studytest为当前路径下studytest1

[root@VM-8-12-centos ~]# cp -r  studytest /root/test0/studytest2 
--复制studytest为/root/test0/路径下studytest1

[root@VM-8-12-centos ~]# ls  ----以上两个文件夹复制完成后,当前路径下有哪些文件、文件夹
study02.txt  studytest1  test1  test20250103  test4  text1.txt  text3.txt
studytest    test0       test2  test3         text0  text2.txt  text.txt

 11 mv命令(move):移动文件或文件夹+重命名文件夹

 mv命令来自英文单词:move

语法:mv 参数1 参数2

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

参数2,Linux路径,表示要移到哪里,如果目标不存在,则进行改名,确保目标存在。

***mv 移动
[root@VM-8-12-centos ~]# ls  --移动之前,当前路径下有哪些文件、文件夹
study02.txt  studytest1  test1  test20250103  test4  text1.txt  text3.txt
studytest    test0       test2  test3         text0  text2.txt  text.txt

[root@VM-8-12-centos ~]# mv studytest1 test1  --把studytest1文件夹移动到test1路径下
[root@VM-8-12-centos ~]# mv text.txt ./test1  --把text.txt文件移动到test1路径下
[root@VM-8-12-centos ~]# mv text1.txt ./test1   --把text1.txt文件移动到test1路径下

[root@VM-8-12-centos ~]# ls --移动之后,当前路径下有哪些文件、文件夹
study02.txt  test0  test2         test3  text0      text3.txt
studytest    test1  test20250103  test4  text2.txt

***mv 改名
[root@VM-8-12-centos ~]# ls  --移动之前,当前路径下有哪些文件、文件夹
study02.txt  test0  test2         test3  text0      text3.txt
studytest    test1  test20250103  test4  text2.txt

[root@VM-8-12-centos ~]# mv text0 text1  
--text1目标不存在,但是为了确保移动成功,把text0改名成text1

[root@VM-8-12-centos ~]# ls --移动之后,当前路径下有哪些文件、文件夹
study02.txt  test0  test2         test3  text1      text3.txt
studytest    test1  test20250103  test4  text2.txt

12 rm命令(remove):删除文件、加-r删除文件夹 ;-f表示强制删除

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

12.2 rm命令来自英文单词:remove

语法: rm [ -r  -f]  参数1 参数2 ……参数n

同cp命令一样,-r(递归的)选项用于删除文件夹。

-f表示force,强制删除(不会弹出提示确认信息)普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示,所以一般普通用户用不到-f选项。

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

[root@VM-8-12-centos ~]# pwd
/root
[root@VM-8-12-centos ~]# ls --查看当前路径下有哪些文件、文件夹
study02.txt  test0  test2         test3  text1      text3.txt
studytest    test1  test20250103  test4  text2.txt

[root@VM-8-12-centos ~]# rm study02.txt  --删除study02.txt文件
rm: remove regular empty file ‘study02.txt’? y --确认删除

[root@VM-8-12-centos ~]# rm studytest  --删除studytest文件夹
rm: cannot remove ‘studytest’: Is a directory  --报错“studytest是一个目录”

[root@VM-8-12-centos ~]# rm -r studytest  --加-r删除studytest文件夹
rm: remove directory ‘studytest’? y  --确认删除

[root@VM-8-12-centos ~]# ls  --查看以上两个删除操作后,当前路径下有哪些文件、文件夹
test0  test2         test3  text1      text3.txt
test1  test20250103  test4  text2.txt

[root@VM-8-12-centos ~]# ls
test0  test2         test3  text1      text3.txt
test1  test20250103  test4  text2.txt

[root@VM-8-12-centos ~]# rm text1 text2.txt
rm: remove regular empty file ‘text1’? y
rm: remove regular empty file ‘text2.txt’? y

[root@VM-8-12-centos ~]# rm -r test20250103 test4
rm: remove directory ‘test20250103’? y
rm: descend into directory ‘test4’? y
rm: descend into directory ‘test4/good’? y
rm: remove directory ‘test4/good/nb666’? y
rm: remove directory ‘test4/good’? y
rm: remove directory ‘test4’? y

[root@VM-8-12-centos ~]# ls
test0  test1  test2  test3  text3.txt

[root@VM-8-12-centos ~]# rm -f text3.txt
[root@VM-8-12-centos ~]# ls
test0  test1  test2  test3

13 通配符 *:模糊匹配任意内容包含空(搭配rm和find命令使用)

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

  • test*,表示匹配任何以test开头的内容。
  • *test,表示匹配任何以test结尾的内容。
  • *test*,表示匹配任何包含test的内容。
***rm 配合通配符*的使用(*相当于模糊匹配)
[root@VM-8-12-centos ~]# ls
test0  test1  test2  test3
[root@VM-8-12-centos ~]# ls test1 -lh   --查询test1下有哪些文件、文件夹
total 16K
drwxr-xr-x 2 root root 4.0K Jan  4 10:16 studytest1
drwxr-xr-x 2 root root 4.0K Jan  3 19:21 test1.1
drwxr-xr-x 2 root root 4.0K Jan  3 19:28 test1.2
drwxr-xr-x 2 root root 4.0K Jan  3 19:29 test1.3
-rw-r--r-- 1 root root    0 Jan  4 10:03 text1.txt
-rw-r--r-- 1 root root    0 Jan  3 19:59 text.txt

[root@VM-8-12-centos ~]# cd test1 --切换到test1目录
[root@VM-8-12-centos test1]# pwd  --查看当前目录
/root/test1

[root@VM-8-12-centos test1]# rm text*  --删除当前目录下以text开头的文件
rm: remove regular empty file ‘text1.txt’? y
rm: remove regular empty file ‘text.txt’? y

[root@VM-8-12-centos test1]# rm -r study*  --删除当前目录下以study开头的文件夹
rm: remove directory ‘studytest1’? y

[root@VM-8-12-centos test1]# ls -lh --以上两个模糊删除之后,查询test1下有哪些文件、文件夹
total 12K
drwxr-xr-x 2 root root 4.0K Jan  3 19:21 test1.1
drwxr-xr-x 2 root root 4.0K Jan  3 19:28 test1.2
drwxr-xr-x 2 root root 4.0K Jan  3 19:29 test1.3

14  which命令(查找命令):查找各命令的程序文件存放在哪个路径

我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。 和Windows系统中的.exe文件,是一个意思。

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

语法:which  要查找的命令

  • 无需选项,只需要参数表示要查找哪个命令
[root@VM-8-12-centos ~]# ls
test0  test1  test2  test3

[root@VM-8-12-centos ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls

[root@VM-8-12-centos ~]# which cd
/usr/bin/cd

[root@VM-8-12-centos ~]# which pwd
/usr/bin/pwd

[root@VM-8-12-centos ~]# which mkdir
/usr/bin/mkdir

[root@VM-8-12-centos ~]# which touch
/usr/bin/touch

[root@VM-8-12-centos ~]# which cp
alias cp='cp -i'
        /usr/bin/cp

[root@VM-8-12-centos ~]# which mv
alias mv='mv -i'
        /usr/bin/mv

[root@VM-8-12-centos ~]# which rm
alias rm='rm -i'
        /usr/bin/rm

[root@VM-8-12-centos ~]# which cat
/usr/bin/cat

[root@VM-8-12-centos ~]# which more
/usr/bin/more


[root@VM-8-12-centos ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
        /usr/bin/alias
        /usr/bin/which

15 find命令(查找文件):按文件名/文件大小,查找该文件存放在哪个路径

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

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

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

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

查找文件名叫做:test的文件,从根目录开始搜索,基于语法,可以有命令:
[root@VM-8-12-centos ~]# find / -name "test"  
--从根目录/开始查找文件名称为test的所在路径

/usr/lib/modules/3.10.0-1160.119.1.el7.x86_64/kernel/drivers/ntb/test
/usr/local/qcloud/YunJing/bin/test
/usr/local/qcloud/python/lib/python3.7/tkinter/test
/usr/local/qcloud/python/lib/python3.7/unittest/test
/usr/local/qcloud/python/lib/python3.7/ctypes/test
/usr/local/qcloud/python/lib/python3.7/test
/usr/local/qcloud/python/lib/python3.7/sqlite3/test
/usr/bin/test
/usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/lib/raid6/test
/usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/drivers/ntb/test
/usr/src/kernels/3.10.0-1160.119.1.el7.x86_64/include/config/test
/usr/lib64/python3.6/test
/usr/lib64/python2.7/unittest/test
/usr/lib64/python2.7/test
/test

15.2 find命令 - 通配符*

根据【语法:find 起始路径   -name  "被查找的文件名"】,语法中"被查找文件名",支持使用通配符 * 来做模糊查询。

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

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

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

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

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

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

语法:find 起始路径  -size  +|-   n[KMG]

解释:

① +、-表示 大于和小于。

② n表示 大小数字。

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

15.3 find命令 - 按文件大小查找文件
语法:find 起始路径  -size  +|-  n[KMG]
示例: 
从根目录/开始查找小于10KB的文件: find / -size -10k 
从根目录/开始查找大于100MB的文件:find / -size +100M 
从根目录/开始查找大于1GB的文件:find / -size +1G

16  grep命令(筛选内容):从文件中筛选出带有关键字的行及行号

grep是“Globally search a Regular Expression and Print”的缩写。

语法:grep [-n]  "关键字"  文件路径

解释:

  • 选项-n:可选,表示在结果中显示匹配的行的行号。
  • 关键字:必填,表示过滤的关键字,带有空格或其它特殊符号,使用" "将关键字包围起来。
  • 文件路径:参数,表示要过滤内容的文件路径,可作为管道符的输入。
    ubuntu@VM-8-12-ubuntu:~$ whoami
    ubuntu
    ubuntu@VM-8-12-ubuntu:~$ pwd
    /home/ubuntu
    ubuntu@VM-8-12-ubuntu:~$ ls
    studylinux0.txt
    
    ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
    此文件用于练习grep命令!
    此文件用于练习grep1命令!
    此文件用于练习grep2命令!
    此文件用于练习grep3命令!
    此文件用于练习grep4命令!
    hello linux
    hello ubuntu
    ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt
    此文件用于练习grep命令!
    此文件用于练习grep1命令!
    此文件用于练习grep2命令!
    此文件用于练习grep3命令!
    此文件用于练习grep4命令!
    hello linux
    hello ubuntu
    
    ubuntu@VM-8-12-ubuntu:~$ grep "hello" studylinux0.txt
    hello linux
    hello ubuntu
    
    ubuntu@VM-8-12-ubuntu:~$ grep "linux" studylinux0.txt
    hello linux
    
    ubuntu@VM-8-12-ubuntu:~$ grep -n "hello" studylinux0.txt
    6:hello linux
    7:hello ubuntu
    

17 wc命令(Word Count):统计行数、单词数量、字节数

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

语法解释:

  • 选项-c:统计bytes数量。
  • 选项-m:统计字符数量。
  • 选项-l:统计行数。
  • 选项-w:统计单词数量。
  • 参数文件路径:被统计的文件,可作为管道符的输入。

ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
此文件用于练习grep命令!
此文件用于练习grep1命令!
此文件用于练习grep2命令!
此文件用于练习grep3命令!
此文件用于练习grep4命令!
hello linux hello ubuntu

ubuntu@VM-8-12-ubuntu:~$ wc studylinux0.txt
  6   9 209 studylinux0.txt

ubuntu@VM-8-12-ubuntu:~$ wc -cmlw  studylinux0.txt
  6   9 109 209 studylinux0.txt

ubuntu@VM-8-12-ubuntu:~$ wc -c studylinux0.txt
209 studylinux0.txt

ubuntu@VM-8-12-ubuntu:~$ wc -m studylinux0.txt
109 studylinux0.txt

ubuntu@VM-8-12-ubuntu:~$ wc -l studylinux0.txt
6 studylinux0.txt

ubuntu@VM-8-12-ubuntu:~$ wc -w studylinux0.txt
9 studylinux0.txt

18 管道符  |  :管道符左边命令的结果,作为右边命令的输入。

管道符(可以嵌套使用)作用是:将管道符左边命令的结果作为右边命令的输入。

管道符  |  的作用是:将管道符左边命令的结果,作为右边命令的输入。
ubuntu@VM-8-12-ubuntu:~$ ls
studylinux0.txt

ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
此文件用于练习grep命令!
此文件用于练习grep1命令!
此文件用于练习grep2命令!
此文件用于练习grep3命令!
此文件用于练习grep4命令!
hello linux
hello ubuntu

ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt | grep "grep*"
此文件用于练习grep命令!
此文件用于练习grep1命令!
此文件用于练习grep2命令!
此文件用于练习grep3命令!
此文件用于练习grep4命令!

ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc
      6       9     209
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -l
6
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -m
109
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -c
209
ubuntu@VM-8-12-ubuntu:~$ more studylinux0.txt | wc -w
9

19 echo命令(输出内容):在命令行内输出指定内容

语法:echo 要输出的内容

语法解释:

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

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

(`和~是一个键,在英文状态下输入``)我们可以通过将命令用双反引号``将其包围,被``包围的内容,会被作为命令执行,而非普通字符。

21 >和>>重定向符:将左边结果覆盖/追加写入到右边文件中

  • > 将左侧命令的结果,覆盖(等价于替换内容)写入到符号右侧指定的文件中。
  • >> 将左侧命令的结果,追加(等价于新增内容)写入到符号右侧指定的文件中。
    ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
    此文件用于练习grep命令!
    此文件用于练习grep1命令!
    此文件用于练习grep2命令!
    此文件用于练习grep3命令!
    此文件用于练习grep4命令!
    hello linux
    hello ubuntu
    
    ubuntu@VM-8-12-ubuntu:~$ echo "hello,2025" >>studylinux0.txt
    
    ubuntu@VM-8-12-ubuntu:~$ cat studylinux0.txt
    此文件用于练习grep命令!
    此文件用于练习grep1命令!
    此文件用于练习grep2命令!
    此文件用于练习grep3命令!
    此文件用于练习grep4命令!
    hello linux
    hello ubuntuhello,2025

22 tail命令:查看文件尾部内容,跟踪文件的最新更改

语法:tail [-f  -num]   Linux路径 

语法解释:

  • 选项,-f表示:持续跟踪(立马检测到文件的更改)。
  • 选项, -num(具体的数值)表示:查看尾部多少行,默认10行
  • 参数,Linux路径表示:被跟踪的文件路径。

    练习1:请使用echo并配合反引号,输出内容:我当前的工作目录是:`具体的工作目录路径`
    ubuntu@VM-8-12-ubuntu:~$ echo "我当前的工作目录是:`pwd`"
    我当前的工作目录是:/home/ubuntu
    
    练习2:并结合重定向符,将输出结果追加写入stulinux.txt文件中
    ubuntu@VM-8-12-ubuntu:~$ echo "我当前的工作目录是:`pwd`" >> stulinux.txt
    
    练习3:查看是否追加成功?
    ubuntu@VM-8-12-ubuntu:~$ tail -8 stulinux.txt
    swap.img
    sys
    tmp
    usr
    var
    2025身体健康万事如意
    2025祝您行大运发大财
    我当前的工作目录是:/home/ubuntu

23 vim 文件路径:vim是Linux中最经典的文本编辑器

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

23.1 vim编辑器的三种工作模式

  • 命令模式(Command mode)在命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。 此模型下,不能自由进行文本编辑。
  • 输入模式(Insert mode)也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。
  •  底线命令模式(Last line mode)以:开始,通常用于文件的保存、退出。

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

  • 进入vi编辑器会进入命令模式。
  • 通过命令模式输入键盘指令,可以进入输入模式(编辑模式、插入模式)。
  • 输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式 。

23.2 vim 文件路径:进入命令模式(进入中转站)

语法命令:vim Linux文件路径

  • 如果文件路径表示的文件不存在,那么此命令会用于新建一个新文件并编辑内容。
  • 如果文件路径表示的文件存在,那么此命令用于打开文件编辑内容。

vim兼容全部的vi功能,所以我们全部使用vim命令。

23.3 快速体验:vim 路径进入,i进入编辑,esc返回,:wq进入底线保存退出

快速体验vim编辑器:
1、使用:vim testvim.txt,创建新文件testvim.txt并打开编辑,执行后进入的是命令模式。
2、在命令模式内,按键盘 i ,进入输入(编辑、插入模式)模式。
3、在输入模式内输入任意内容。比如输入hello,linux vim。
4、输入完成后,按esc回退到命令模式。
5、在命令模式内,按键盘 : ,进入底线命令模式。
6、在底线命令内输入:wq,按回车,保存文件并退出vim编辑器。

7、退出编辑器,通过命令查看文件以及输入的内容是否存在?

23.4 命令模式快捷键

23.5 底线命令模式快捷键

  • 编辑模式没有什么特殊的,进入编辑模式后,任何快捷键都没有作用,就是正常输入文本而已。
  • 唯一大家需要记住的,就是:通过esc,可以退回到命令模式。
  • 在命令模式内,输入:,即可进入底线命令模式,支持如下命令:

24 补充说明

24.1  通过--help选项,查看命令帮助(例如:ls --help)

我们学习的一系列Linux命令,它们所拥有的选项都是非常多的。 比如,简单的ls命令就有: -a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1 等选项,可以发现选项是极其多的。 文章中只对常见的选项进行整理, 足够满足绝大多数的学习、工作场景。如果想要对命令的其它选项进行查阅,可以通过如下方式:

24.2 通过man命令,查看命令详细手册(例如:man ls)

如果想要查看命令的详细手册,可以通过man(manual, 手册)命令查看 比如:

大多数手册都是全英文的,如果阅读吃力,可以通过重定向符:man ls > ls.txt,输出手册到文件,然后通过翻译软件翻译内容查看。

七 Linux用户和权限

1 root用户(超级管理员):拥有最大权限

无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员),而普通用户在许多地方的权限是受限的。

  • 普通用户的权限,一般在其HOME目录内是不受限的。
  • 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
    普通用户的权限,一般在其HOME目录内是不受限的。
    ubuntu@VM-8-12-ubuntu:~$ mkdir test3 
    ubuntu@VM-8-12-ubuntu:~$ ls
    ls.txt  stulinux.txt  test1  test2  test3  testvim.txt
    
    一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
    ubuntu@VM-8-12-ubuntu:/$ whoami --查看当前登录的用户
    ubuntu
    ubuntu@VM-8-12-ubuntu:/$ pwd --查看当前的工作目录
    /
    ubuntu@VM-8-12-ubuntu:/$ mkdir test --创建新文件夹
    mkdir: cannot create directory ‘test’: Permission denied  
    --权限被拒绝,没有访问文件的权限。权限不足,不能创建
    

2 su命令(Switch User):切换用户;exit命令:退回上一个用户

来源英文单词:Switch User

语法:su -  [用户名]

语法解释:

  • - 符号是可选的,表示是否在切换用户后加载环境变量,建议带上。
  • 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root。
  • 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d。
  • 使用普通用户,切换到其它用户需要输入密码,如切换到root用户。
  • 使用root用户切换到其它用户,无需密码,可以直接切换。
    root@VM-8-12-ubuntu:~# su - ubuntu  --从root切换ubuntu用户,无需输入密码
    ubuntu@VM-8-12-ubuntu:~$ whoami --查看当前用户
    ubuntu
    ubuntu@VM-8-12-ubuntu:~$ su -   --切换时不带用户名,默认切换到root用户
    Password:  --输入root密码
    root@VM-8-12-ubuntu:~# whoami --查看当前用户
    root
    root@VM-8-12-ubuntu:~# exit --退出当前用户,返回到上一个用户
    logout
    ubuntu@VM-8-12-ubuntu:~$ whoami --查看当前用户
    ubuntu
    ubuntu@VM-8-12-ubuntu:~$
    
    ubuntu@VM-8-12-ubuntu:/$ su - root
    Password:
    root@VM-8-12-ubuntu:~# pwd
    /root
    root@VM-8-12-ubuntu:~# mkdir test  利用root用户创建成功,因为root拥有最大权限
    root@VM-8-12-ubuntu:~# ls
    test

3 sudo命令:临时赋予root授权(可以让一条普通命令带有root权限)

在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。但是不建议长期使用root用户进行操作,避免带来系统损坏。可以使用sudo命令,为普通的命令授权,临时以root身份执行。

语法:sudo 其它命令

语法解释:

  • 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。
  • 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证。
    ubuntu@VM-8-12-ubuntu:~$ whoami  --查看当前用户    
    ubuntu
    ubuntu@VM-8-12-ubuntu:~$ cd /  --跳出home目录,切换到根目录/
    ubuntu@VM-8-12-ubuntu:/$ mkdir test2  --创建test2文件夹
    mkdir: cannot create directory ‘test2’: Permission denied  --权限不足,无法创建
    ubuntu@VM-8-12-ubuntu:/$ sudo mkdir test2  --开头带上sudo,获得临时的root的权限,创建成功
    

4 vi  /etc/sudoers命令:为普通用户配置sudo认证

  • 第一步:切换到root用户,执行vi  /etc/sudoers命令,会自动通过vi编辑器打开:/etc/sudoers
  • 第二步:在文件的最后添加       用户名  ALL=(ALL:ALL) NOPASSWD: ALL
    表示该用户可以使用sudo命令,无需输入密码,最后通过 :wq 保存。
  • 第三步:切换回普通用户,执行的sudo命令,就可以以临时root身份运行。

5 用户、用户组

Linux系统中可以:

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

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

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

比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。 所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。

6 用户组管理

以下命令需root用户执行。

6.1 创建用户组:groupadd 用户组名

ubuntu@VM-8-12-ubuntu:~$ whoami
ubuntu
ubuntu@VM-8-12-ubuntu:~$ su -
Password:
root@VM-8-12-ubuntu:~# whoami
root
root@VM-8-12-ubuntu:~# groupadd group1
root@VM-8-12-ubuntu:~# groupadd group666

6.2 删除用户组:groupdel 用户组名

root@VM-8-12-ubuntu:~# groupdel group1

7 用户管理

以下命令需root用户执行。

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

  • 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • 选项:-d指定用户HOME路径。不指定,HOME目录默认在:/home/用户名
    useradd admin
    
    -g:指定这个新用户属于哪个用户组;-d 指定这个新用户的home目录
    
    root@VM-8-12-ubuntu:/# useradd admin1 -g group666 -d /home/usertest
    root@VM-8-12-ubuntu:/# su - admin1
    $ pwd
    /home/usertest
    

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

  • 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
root@VM-8-12-ubuntu:/# userdel admin
root@VM-8-12-ubuntu:/# uerdel -r admin1

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

  • 参数:用户名,被查看的用户,如果不提供则查看自身
root@VM-8-12-ubuntu:/# id
uid=0(root) gid=0(root) groups=0(root)

root@VM-8-12-ubuntu:/# useradd yangyunlong -g group666

root@VM-8-12-ubuntu:/# id yangyunlong
uid=1005(yangyunlong) gid=1002(group666) groups=1002(group666)

root@VM-8-12-ubuntu:/# su - yangyunlong
$ id
uid=1005(yangyunlong) gid=1002(group666) groups=1002(group666)

7.4 修改用户所属组:usermod -aG 用户组 用户名

  • 将指定用户加入指定用户组
root@VM-8-12-ubuntu:/# groupadd group888
root@VM-8-12-ubuntu:/# usermod -aG group888 yangyunlong
root@VM-8-12-ubuntu:/# id yangyunlong
uid=1005(yangyunlong) gid=1002(group666) groups=1002(group666),1005(group888)

8 getent命令:查看当前系统中有哪些用户、有哪些用户组

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

8.2 getent group:可以查看当前系统中有哪些用户组

9 查看权限控制

9.1 认识权限信息

  • 序号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

9.2 r:读权限,w:写权限,x:执行权限

  • r 表示权限(read)
  • w 表示权限(write)
  • x 表示执行权限(execute)

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

  • r,针对文件可以查看文件内容
  • r,针对文件夹,可以查看文件夹内容,如ls命令
  • w,针对文件表示可以修改此文件
  • w,针对文件夹,可以在文件夹内:创建、删除、改名等操作
  • x,针对文件表示可以将文件作为程序执行
  • x,针对文件夹,表示可以更改工作目录到此文件夹,即cd进入

10 chmod命令:修改文件、文件夹权限信息

10.1 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

除此之外,还有快捷写法:chmod 751 hello.txt 将hello.txt的权限修改为751 那么问题来了,751表示什么意思呢?

10.2 权限的数字序号:r记为4,w记为2,x记为1

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

11 chown命令:修改文件、文件夹的所属用户和用户组

普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行。

语法:chown  [-R]  [用户] [:] [用户组]     文件或文件夹

语法解释:

  • 选项,-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并对文件夹内全部内容应用同样规则

八 Linux实用操作

1 实用快捷键

1.1 ctrl + c:强制停止

Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl + c 命令输入错误,也可以通过快捷键ctrl + c,退出当前输入,重新输入。

1.2 ctrl + d:退出(或通过命令exit得到同样效果)

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

ps:不能用于退出vi/vim。

1.3 history:搜索历史输入过的命令

可以通过history命令,查看历史输入过的命令。

1.4 history |  grep 关键字:通过关键字去过滤某些特定的命令

1.5 光标移动快捷键

  • ctrl + a,跳到命令开头
  • ctrl + e,跳到命令结尾
  • ctrl + 键盘左键,向左跳一个单词
  • ctrl + 键盘右键,向右跳一个单词

1.6 ctrl + l:清屏(或通过命令clear得到同样效果)

1.7  !命令前缀:自动执行上一次匹配前缀的命令

1.8 ctrl + r:输入内容去匹配历史命令 

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

2 软件安装、卸载、搜索

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

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

  • 下载安装包自行安装

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

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

  • 系统的应用商店内安装

如win系统有Microsoft Store商店

如mac系统有AppStore商店

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

前面学习的各类Linux命令,都是通用的。 但是软件安装,CentOS系统和Ubuntu是使用不同的包管理器。 CentOS使用yum管理器,Ubuntu使用apt管理器。 

实例:Ubuntu使用apt管理器搜索、安装、卸载wget

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

apt -y install wget, 通过此命令安装wget程序

apt -y remove wget,通过此命令卸载wget命令

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

Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启 能够被systemctl管理的软件,一般也称之为:服务。系统内置的服务比较多,比如: NetworkManager,主网络服务 network,副网络服务 firewalld,防火墙服务 sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)。现在可以使用systemctl去尝试一下,控制这些服务的启动、关闭、自启动啦。

语法:systemctl start |  stop | status |  enable | disable 服务名

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

可以控制软件(服务)的启动、关闭、开机自启动。

  • linux系统内置服务均可被systemctl控制
  • 第三方软件,如果自动注册了可以被systemctl控制
  • 第三方软件,如果没有自动注册,可以手动注册(后续学习)

4 ln命令:创建软连接 (类似于快捷方式)

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

语法:ln   -s  参数1~参数2

语法解释:

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

5 日期、时区 

5.1 date命令:查看日期时间

语法:date   [-d]  [+格式化字符串]

  • -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 到现在的秒数

ubuntu@VM-8-12-ubuntu:~$ date
Thu Jan  9 06:48:31 PM CST 2025

ubuntu@VM-8-12-ubuntu:~$ date +%Y-%m-%d
2025-01-09

ubuntu@VM-8-12-ubuntu:~$ date "+%Y-%m-%d %H:%M:%S"
2025-01-09 18:50:16

5.2 修改Linux系统的时区

系统默认时区非中国的东八区。 使用root权限,执行如下命令,修改时区为东八区时区,将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可。

ubuntu@VM-8-12-ubuntu:~$ sudo su - root

root@VM-8-12-ubuntu:~# rm -f /ect/localtime

root@VM-8-12-ubuntu:~# ln -s /usr/share/zoneinfo/Asia/shanghai~/etc/localtime 
--修改为亚洲上海的时区

root@VM-8-12-ubuntu:~# date
Thu Jan  9 07:00:48 PM CST 2025

5.3 使用ntp程序自动校准系统时间(需要联网)

安装ntp:apt -y install ntp

启动并设置开机自启:

systemctl start ntpd

systemctl enable ntpd

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

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

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

6 IP地址、主机名 

6.1 ifconfig:查看IP地址

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

ubuntu@VM-8-12-ubuntu:~$ sudo su - root

root@VM-8-12-ubuntu:~# apt -y install net-tools

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
net-tools is already the newest version (2.10-0.1ubuntu4).
The following packages were automatically installed and are no longer required:
  eatmydata libeatmydata1 python3-json-pointer python3-jsonpatch
  python3-jsonschema python3-pyrsistent tzdata-legacy
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 213 not upgraded.

root@VM-8-12-ubuntu:~# ifconfig
eth0: flags=4163  mtu 1500
        inet 10.2.8.12  netmask 255.255.252.0  broadcast 10.2.11.255
        inet6 fe80::5054:ff:fef9:da45  prefixlen 64  scopeid 0x20
        ether 52:54:00:f9:da:45  txqueuelen 1000  (Ethernet)
        RX packets 3192678  bytes 991769640 (991.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2940681  bytes 469840734 (469.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 48042  bytes 4137128 (4.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 48042  bytes 4137128 (4.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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

127.0.0.1,这个IP地址用于指代本机。

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

6.2 hostname:查看主机名

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

ubuntu@VM-8-12-ubuntu:~$ hostname
VM-8-12-ubuntu

6.3 hostnamectl set-hostname 主机名:修改主机名(需root)

ubuntu@VM-8-12-ubuntu:~$ hostname
VM-8-12-ubuntu

ubuntu@VM-8-12-ubuntu:~$ sudo su - root

root@VM-8-12-ubuntu:~# hostnamectl set-hostname studylinux

root@VM-8-12-ubuntu:~# hostname
studylinux

6.4 什么是DNS域名解析(主机名映射)

域名解析原理(相当于电话薄)https://blog.csdn.net/weixin_45806267/article/details/143451905

  • 先查看本机的hosts记录(私人地址本)

Windows看:C:WindowsSystem32driversetchosts

Linux看:/etc/hosts

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

6.5 配置主机名映射

比如,我们Xshell、FinalShell、mobaXterm是通过IP地址连接到的Linux服务器,那有没有可能通过域名(主机名)连接呢? 可以,我们只需要在Windows系统的:C:WindowsSystem32driversetchosts

文件中配置记录即可。

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

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

第一步:在VMware Workstation(或Fusion)中配置IP地址网关和网段(IP地址的范围)。

第二步:在Linux系统中手动修改配置文件,固定IP 首先让我们,先进行第一步,跟随图片进行操作。现在进行第二步,在Linux系统中修改固定IP 使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,填入如下内容 执行:systemctl restart network 重启网卡,执行ifconfig即可看到ip地址固定为192.168.88.130了。

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

语法:ping  [-c    num]  ip或主机名

语法解释:

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

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

 8 wget命令:可以进行网络文件下载

语法:wget [-b]  url

语法解释:

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

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

语法:curl [-0] url

语法解释:

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

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

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

10 端口:通过端口可以锁定计算机上具体的程序

10.1 端口的概念以及划分

计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。

通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通。

MAC地址相当于我们每个人的身份证。IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址。

Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:

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

举例:如上图中,计算机A的微信连接计算机B的微信,A使用的50001即动态端口,临时找一个端口作为出口 计算机B的微信使用端口5678,即注册端口,长期绑定此端口等待别人连接。

10.2 nmap IP地址:查看指定IP的对外暴露端口

可以通过Linux命令去查看端口的占用情况使用nmap命令,安装nmap:apt -y install nmap

ubuntu@studylinux:~$ apt -y install nmap
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

ubuntu@studylinux:~$ sudo su - root

root@studylinux:~# apt -y install nmap
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  eatmydata libeatmydata1 python3-json-pointer python3-jsonpatch
  python3-jsonschema python3-pyrsistent tzdata-legacy
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  libblas3 liblinear4 liblua5.4-0 libssh2-1t64 nmap-common
Suggested packages:
  liblinear-tools liblinear-dev ncat ndiff zenmap
The following NEW packages will be installed:
  libblas3 liblinear4 liblua5.4-0 libssh2-1t64 nmap nmap-common
0 upgraded, 6 newly installed, 0 to remove and 213 not upgraded.
Need to get 6,452 kB of archives.

语法:nmap 被查看的IP地址


root@studylinux:~# nmap 127.0.0.1
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-13 12:21 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000030s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

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

10.3 netstat -anp | grep 端口号:查看指定端口的占用情况

安装netstat:apt -y install net-tools

语法:netstat -anp | grep 端口号

 如图,可以看到当前系统6000端口被程序(进程号7174)占用了 其中,0.0.0.0:6000,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问。

11 进程管理

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

11.1 ps命令:查看Linux系统中的进程信息

语法:ps [-e  -f]

语法解释:

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

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

我们可以使用管道符配合grep来进行过滤,如: ps -ef | grep tail,即可准确的找到tail命令的信息。 过滤不仅仅过滤名称,进程号,用户ID等等,都可以被grep过滤哦 如:ps -ef | grep 30001,过滤带有30001关键字的进程信息(一般指代过滤30001进程号)。

11.2 kill [-9] 进程ID:关闭进程

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

12 top命令:查看系统资源占用 

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

第一行: top:命令名称,14:39:58:当前系统时间,up 6 min:启动了6分钟,2 users:2个用户登录,load:1、5、15分钟负载

第二行: 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占用 

13 df -h: 查看硬盘的使用情况

语法:df [-h]

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

14  iostat命令:查看CPU、磁盘的相关信息

语法:iostat [-x] [num1] [num2]

选项:-x,显示更多信息

num1:数字,刷新间隔

num2:数字,刷新几次

 15 sar命令:查看网络的相关统计

语法:sar -n DEV num1 num2

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

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

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

 16 环境变量

在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。 比如,cd命令的本体就是:/usr/bin/cd 这个程序文件。我们是否会有疑问,为何无论当前工作目录在哪里,都能执行:/usr/bin/cd这个程序呢? 这就是环境变量的作用啦。环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。

16.1 env命令:查看当前系统中记录的环境变量

16.2 什么是PATH,作用是?

环境变量PATH会记录一组目录,目录之间用:隔开。

这里记录的是命令的搜索路径,当执行命令会从记录中记录的目录中挨个搜索要执行的命令并执行。

可以通过修改这个项目的值,加入自定义的命令搜索路径。 如export PATH=$PATH:自定义路径。 

16.3 $符号:可以取出环境变量的

16.4 自行设置环境变量

Linux环境变量可以用户自行设置,其中分为:

  • 临时设置,语法:export 变量名=变量值
  • 永久生效
  1. 针对当前用户生效,配置在当前用户的:    ~/.bashrc文件中,通过vi ~/.bashrc编辑
  2. 针对所有用户生效,配置在系统的:    /etc/profile文件中,通过vi /etc/profile编辑
  3. 并通过语法:source /etc/profile,进行立刻生效,或重新登录FinalShell生效

环境变量PATH这个项目里面记录了系统执行命令的搜索路径。 这些搜索路径我们也可以自行添加到PATH中去。

测试:
在当前HOME目录内创建文件夹,myenv,在文件夹内创建文件mkhaha
通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行

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

17 文件上传、下载

17.1 方法一:通过第三方SSH工具上传、下载

我们可以通过第三方SSH工具,例如Xshell、FinalShell、mobaxterm等,方便的和虚拟机进行数据交换。 这些软件提供了Linux的文件系统视图,可以方便的:

  • 浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
  • 浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到Linux中

17.2 方法二:通过rz、sz命令进行文件传输

rz、sz命令需要安装,可以通过:apt -y install lrzsz,即可安装。注意,rz、sz命令需要终端软件支持才可正常运行 FinalShell、SecureCRT、XShell等常用终端软件均支持此操作。

  • rz命令,进行上传,语法:直接输入rz即可,选择对应文件上传

  • sz命令进行下载,语法:sz 要下载的文件,文件会自动下载到桌面的:fsdownload文件夹中。

18 压缩、解压

市面上有非常多的压缩格式

zip格式:Linux、Windows、MacOS,常用

7zip:Windows系统常用 rar:Windows系统常用

tar:Linux、MacOS常用

gzip:Linux、MacOS常用

如何在Linux系统中操作:tar、gzip、zip这三种压缩格式完成文件的压缩、解压操作。

Linux和Mac系统常用有2种压缩格式,后缀名分别是:

  1. .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装。
  2. .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积。
  3. 针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作。

语法:tar [-c -v -x -f -z -C] 参数1 参数2 ...参数n

语法解释:

  • -c,创建压缩文件,用于压缩模式
  • -v,显示压缩、解压过程,用于查看进度
  • -x,解压模式
  • -f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
  • -z,gzip模式,不使用-z就是普通的tarball格式。-z选项如果使用的话,一般处于选项位第一个
  • -C,选择解压的目的地,用于解压模式

18.1 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模式

注意:

  1. -z选项如果使用的话,一般处于选项位第一个
  2. -f选项,必须在选项位最后一个

18.2 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)

注意:

  1. -f选项,必须在选项组合体的最后一位
  2. -z选项,建议在开头位置
  3. -C选项单独使用,和解压所需的其它参数分开

18.3 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 itheima a.txt

将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内

18.4 unzip 命令解压文件

使用unzip命令,可以方便的解压zip压缩包

语法:unzip [-d] 参数

  • -d,指定要解压去的位置,同tar的-C选项
  • 参数,被解压的zip压缩包文件

示例:

unzip test.zip,将test.zip解压到当前目录

unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)

常用基础命令到此结束,后续会更新实际工作中遇到的问题~

本文地址:https://www.vps345.com/4293.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge deepseek Ollama 模型联网 API CherryStudio 进程 操作系统 进程控制 Ubuntu python MCP llama 算法 opencv 自然语言处理 神经网络 语言模型 ssh harmonyos 华为 开发语言 typescript 计算机网络 ubuntu 数据库 centos oracle 关系型 安全 分布式 阿里云 网络 网络安全 网络协议 flutter Hyper-V WinRM TrustedHosts RTSP xop RTP RTSPServer 推流 视频 Dell R750XS react.js 前端面试题 node.js 持续部署 rust http java ollama ai 人工智能 llm 科技 个人开发 udp unity tcp/ip fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse pycharm ide pytorch github 创意 社区 adb nginx 监控 自动化运维 django flask web3.py macos numpy 笔记 C 环境变量 进程地址空间 golang 后端 rabbitmq Flask FastAPI Waitress Gunicorn uWSGI Uvicorn prometheus windows mysql离线安装 ubuntu22.04 mysql8.0 websocket kvm 无桌面 命令行 YOLOv8 NPU Atlas800 A300I pro asi_bench android docker apache c语言 自动化 Deepseek vscode mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 chatgpt 大模型 llama3 Chatglm 开源大模型 ansible playbook YOLO 目标检测 计算机视觉 深度学习 YOLOv12 IIS .net core Hosting Bundle .NET Framework vs2022 es jvm AI编程 容器 智能路由器 dell服务器 php html 经验分享 sql KingBase 博客 c++ ssl oceanbase rc.local 开机自启 systemd 麒麟 ecm bpm ddos 机器学习 spring c# 深度优先 图论 并集查找 换根法 树上倍增 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 面试 性能优化 jdk intellij-idea 架构 vim spring boot zotero WebDAV 同步失败 代理模式 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 java-ee Qwen2.5-coder 离线部署 nuxt3 vue3 .netcore bash uni-app 蓝耘科技 元生代平台工作流 ComfyUI 银河麒麟 kylin v10 麒麟 v10 前端框架 conda 低代码 tomcat ESP32 LDAP 实时音视频 maven intellij idea 腾讯云 dubbo elasticsearch jenkins json html5 firefox 运维开发 .net AI 爬虫 数据集 openEuler android studio 交互 gitlab filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 代码调试 ipdb springsecurity6 oauth2 授权服务器 token sas 多线程服务器 Linux网络编程 pillow live555 rtsp rtp 统信 国产操作系统 虚拟机安装 串口服务器 web安全 Kali Linux 黑客 渗透测试 信息收集 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 matlab Docker Compose docker compose docker-compose 搜索引擎 kubernetes 学习方法 程序人生 DeepSeek-R1 API接口 redis netty 开源 电脑 go rsyslog qt ceph 毕设 jar 编辑器 直播推流 Linux PID mysql 软件工程 云原生 ci/cd rpc 远程过程调用 Windows环境 ffmpeg midjourney AI写作 VMware安装Ubuntu Ubuntu安装k8s k8s aws 中间件 嵌入式硬件 单片机 状态管理的 UDP 服务器 Arduino RTOS C语言 驱动开发 硬件工程 嵌入式实习 ipython dify 深度求索 私域 知识库 svn mcu 僵尸进程 FTP服务器 kylin 大数据 v10 镜像源 软件 FunASR ASR 佛山戴尔服务器维修 佛山三水服务器维修 计算机 bootstrap hive Hive环境搭建 hive3环境 Hive远程模式 ecmascript nextjs react reactjs 软考 fpga开发 https 流式接口 gitee DeepSeek gpu算力 css 干货分享 黑客工具 密码爆破 服务器繁忙 flash-attention 报错 矩阵 线性代数 电商平台 SysBench 基准测试 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 缓存 mybatis 压力测试 spring cloud 学习 职场和发展 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 cursor transformer JAVA Java 游戏服务器 Minecraft 远程工作 课程设计 MCP server C/S LLM windows日志 数据挖掘 Ubuntu Server Ubuntu 22.04.5 Linux 物联网 负载均衡 unix 鸿蒙 系统安全 媒体 微信 命名管道 客户端与服务端通信 gaussdb 飞牛NAS 飞牛OS MacBook Pro 音视频 信息与通信 debian PVE 软件需求 ESXi Dell HPE 联想 浪潮 iDRAC R720xd agi AIGC QQ 聊天室 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 温湿度数据上传到服务器 Arduino HTTP XFS xfs文件系统损坏 I_O error 命令 多进程 1024程序员节 Reactor 设计模式 C++ shell 磁盘监控 iot 前后端分离 jupyter 向日葵 华为云 muduo git gitea X11 Xming 微信公众平台 arm tcpdump eureka file server http server web server 集成学习 集成测试 服务器配置 生物信息学 Agent Wi-Fi 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 Spring Security microsoft 游戏程序 企业微信 Linux24.04 deepin 工业4.0 minio Invalid Host allowedHosts vue 远程连接 rdp 实验 云电竞 云电脑 todesk jetty undertow 远程登录 telnet UOS 统信操作系统 yum ISO镜像作为本地源 机器人 stm32项目 stm32 MNN Qwen ui SSH 音乐服务器 Navidrome 音流 express p2p ip MacOS录屏软件 hugo Netty 即时通信 NIO 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 pip Samba SWAT 配置文件 服务管理 网络共享 H3C HTTP 服务器控制 ESP32 DeepSeek CPU 内存 主板 电源 网卡 pppoe radius xss arm开发 部署 远程桌面 IIS服务器 IIS性能 日志监控 云服务 kind 思科模拟器 思科 Cisco next.js 部署next.js ocr AI agent 硬件架构 系统架构 TCP服务器 qt项目 qt项目实战 qt教程 模拟退火算法 Dify 田俊楠 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP ollama下载加速 googlecloud MQTT mosquitto 消息队列 r语言 数据可视化 数据分析 医疗APP开发 app开发 firewalld 小程序 程序员 其他 银河麒麟服务器操作系统 系统激活 sqlite windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 银河麒麟高级服务器 外接硬盘 Kylin 国产化 clickhouse 社交电子 mongodb webrtc 权限 交换机 硬件 设备 GPU PCI-Express 安全威胁分析 W5500 OLED u8g2 vscode 1.86 chfs ubuntu 16.04 prompt easyui AI大模型 langchain virtualenv 火绒安全 Nuxt.js 智能手机 NAS Termux ruoyi 银河麒麟桌面操作系统 Kylin OS DeepSeek行业应用 Heroku 网站部署 uniapp 游戏机 备选 网站 api 调用 示例 致远OA OA服务器 服务器磁盘扩容 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 jmeter 软件测试 策略模式 单例模式 计算机外设 mac vasp安装 边缘计算 智能硬件 AutoDL echarts kafka wsl2 wsl word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 外网访问 内网穿透 端口映射 测试工具 openssl 密码学 ios XCC Lenovo 华为od code-server 安全架构 AISphereButler 根服务器 embedding sqlserver 数据库系统 selete 高级IO EMQX 通信协议 hibernate list 数据结构 skynet kamailio sip VoIP Docker Hub docker pull daemon.json 微服务 漏洞 LORA 大语言模型 NLP 宝塔面板 同步 备份 建站 ukui 麒麟kylinos openeuler 微信分享 Image wxopensdk laravel 大模型入门 大模型教程 remote-ssh WebUI DeepSeek V3 junit minicom 串口调试工具 URL 需求分析 规格说明书 豆瓣 追剧助手 迅雷 nas web 微信小程序 unity3d springboot 云服务器 VPS Xterminal 恒源云 big data 交叉编译 嵌入式 opensearch helm 服务器主板 AI芯片 AD域 vSphere vCenter 软件定义数据中心 sddc MI300x 反向代理 WebRTC gpt excel tcp ux 多线程 okhttp CORS 跨域 zabbix 雨云 NPS 飞书 孤岛惊魂4 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 asm 传统数据库升级 银行 LLMs 单一职责原则 opcua opcda KEPServer安装 sysctl.conf vm.nr_hugepages HCIE 数通 oneapi 大模型微调 open webui Python 网络编程 聊天服务器 套接字 TCP 客户端 Socket Headless Linux 雨云服务器 HarmonyOS Next 崖山数据库 YashanDB 华为认证 网络工程师 移动云 MS Materials NFS redhat asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 群晖 文件分享 iis 输入法 raid5数据恢复 磁盘阵列数据恢复 av1 电视盒子 机顶盒ROM 魔百盒刷机 SSL 域名 银河麒麟操作系统 3d 数学建模 网络结构图 zookeeper 服务器部署ai模型 Anolis nginx安装 环境安装 linux插件下载 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 Windsurf visualstudio 7z Trae IDE AI 原生集成开发环境 Trae AI 三级等保 服务器审计日志备份 npm 框架搭建 远程 执行 sshpass 操作 WSL win11 无法解析服务器的名称或地址 c risc-v armbian u-boot EasyConnect 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 Cline 架构与原理 联想开天P90Z装win10 RustDesk自建服务器 rustdesk服务器 docker rustdesk 黑客技术 本地部署 ftp pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 tailscale derp derper 中转 openwrt Cursor 网工 vscode1.86 1.86版本 ssh远程连接 SSE 重启 排查 系统重启 日志 原因 open Euler dde 统信UOS RTMP 应用层 camera Arduino 电子信息 LLM Web APP Streamlit hadoop IDEA bonding 链路聚合 ssrf 失效的访问控制 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap TrinityCore 魔兽世界 开发环境 SSL证书 5G 3GPP 卫星通信 adobe WSL2 Unity Dedicated Server Host Client 无头主机 监控k8s集群 集群内prometheus 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 xrdp idm 语法 TRAE 视频编解码 源码剖析 rtsp实现步骤 流媒体开发 自动化测试 性能测试 功能测试 Ubuntu 24.04.1 轻量级服务器 能力提升 面试宝典 技术 IT信息化 pdf pygame 小游戏 五子棋 VSCode odoo 服务器动作 Server action FTP 服务器 LInux proxy模式 知识图谱 alias unalias 别名 相差8小时 UTC 时间 RAGFlow 本地知识库部署 DeepSeek R1 模型 DevEco Studio 虚拟局域网 cpu 实时 使用 cuda cudnn nvidia 网络攻击模型 sentinel prometheus数据采集 prometheus数据模型 prometheus特点 postgresql visual studio code devops 相机 具身智能 强化学习 僵尸世界大战 游戏服务器搭建 政务 分布式系统 监控运维 Prometheus Grafana Python基础 Python教程 Python技巧 Kali 虚拟机 bug GIS 遥感 WebGIS 源码 毕业设计 cd 目录切换 gpt-3 文心一言 环境配置 混合开发 JDK regedit 开机启动 Claude eNSP 网络规划 VLAN 企业网络 显卡驱动 AnythingLLM AnythingLLM安装 Kylin-Server 服务器安装 多个客户端访问 IO多路复用 回显服务器 TCP相关API AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 基础入门 编程 腾讯云大模型知识引擎 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 实战案例 序列化反序列化 webgl 加解密 Yakit yaklang 主从复制 mariadb centos-root /dev/mapper yum clean all df -h / du -sh 匿名管道 考研 onlyoffice 在线office 京东云 技术共享 网络用户购物行为分析可视化平台 大数据毕业设计 流量运营 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 私有化 can 线程池 网卡的名称修改 eth0 ens33 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 elk eclipse BMC IPMI 带外管理 ruby 压测 ECS 蓝桥杯 虚幻 游戏引擎 线程 执法记录仪 智能安全帽 smarteye ssh远程登录 防火墙 NAT转发 NAT Server P2P HDLC MySql linux上传下载 鲲鹏 昇腾 npu QT 5.12.12 QT开发环境 Ubuntu18.04 健康医疗 互联网医院 HarmonyOS 双系统 GRUB引导 Linux技巧 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos Erlang OTP gen_server 热代码交换 事务语义 epoll springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 USB网络共享 Playwright win服务器架设 windows server vmware 卡死 freebsd RAID RAID技术 磁盘 存储 迁移指南 图像处理 uv 移动魔百盒 USB转串口 CH340 ssh漏洞 ssh9.9p2 CVE-2025-23419 技能大赛 harmonyOS面试题 llama.cpp cnn 邮件APP 免费软件 常用命令 文本命令 目录命令 程序 性能分析 rclone AList webdav fnOS Unity插件 iventoy VmWare OpenEuler AI代码编辑器 GCC Linux环境 etl wps 安卓 测试用例 .net mvc断点续传 css3 yaml Ultralytics 可视化 AI作画 deepseek r1 OpenSSH matplotlib Linux的基础指令 状态模式 linux安装配置 rocketmq 服务器管理 配置教程 网站管理 链表 rnn 剧本 iphone 王者荣耀 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK iftop 网络流量监控 safari Mac 系统 DNS jina 历史版本 下载 安装 我的世界 我的世界联机 数码 make命令 makefile文件 etcd 数据安全 RBAC wireshark linux驱动开发 视觉检测 frp Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 perf 金融 seatunnel 我的世界服务器搭建 ue4 着色器 ue5 AD 域管理 网站搭建 serv00 鸿蒙系统 微信开放平台 微信公众号配置 TCP协议 IMX317 MIPI H265 VCU composer 游戏开发 rag ragflow ragflow 源码启动 hexo 产测工具框架 IMX6ULL 管理框架 iperf3 带宽测试 镜像 显示管理器 lightdm gdm 小智AI服务端 xiaozhi TTS Logstash 日志采集 无人机 ROS 自动驾驶 开发 anaconda milvus mamba Vmamba 裸金属服务器 弹性裸金属服务器 ip命令 新增网卡 新增IP 启动网卡 navicat ping++ 文件系统 路径解析 fd 文件描述符 dns是什么 如何设置电脑dns dns应该如何设置 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 lio-sam SLAM 用户缓冲区 glibc 模拟实现 less 毕昇JDK 远程控制 rustdesk 信号处理 半虚拟化 硬件虚拟化 Hypervisor RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 HiCar CarLife+ CarPlay QT RK3588 micropython esp32 mqtt yolov8 CLion 实时互动 Node-Red 编程工具 流编程 cocoapods xcode threejs 3D 串口驱动 CH341 uart 485 ubuntu24.04.1 语音识别 SenseVoice 模拟器 教程 pgpool 可信计算技术 fast 业界资讯 curl wget 端口测试 大模型应用 端口 查看 ss n8n 工作流 workflow 个人博客 算力 bcompare Beyond Compare linux 命令 sed 命令 ABAP Windows IPv4 子网掩码 公网IP 私有IP outlook SSH 密钥生成 SSH 公钥 私钥 生成 edge浏览器 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 trea idea EMUI 回退 降级 升级 Jellyfin 直流充电桩 充电桩 ShenTong TrueLicense 自动化任务管理 开机自启动 企业网络规划 华为eNSP 阻塞队列 生产者消费者模型 服务器崩坏原因 SEO Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 kali 共享文件夹 grafana 代理 网络穿透 飞牛nas fnos 超融合 apt 中兴光猫 换光猫 网络桥接 自己换光猫 yum源切换 更换国内yum源 springcloud ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS Linux find grep OD机试真题 华为OD机试真题 服务器能耗统计 vr 单元测试 selenium dns 键盘 灵办AI mq 代理服务器 查询数据库服务IP地址 SQL Server AI-native Docker Desktop 元服务 应用上架 图形化界面 换源 国内源 Debian 智能音箱 智能家居 CDN SVN Server tortoise svn 办公自动化 自动化生成 pdf教程 tensorflow dba bat trae Radius crosstool-ng 繁忙 解决办法 替代网站 汇总推荐 AI推理 deekseek 物联网开发 gcc g++ g++13 影刀 #影刀RPA# 大数据平台 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 wsgiref Web 服务器网关接口 flink 多层架构 解耦 nfs arcgis HAProxy Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 IM即时通讯 剪切板对通 HTML FORMAT rust腐蚀 SSH 服务 SSH Server OpenSSH Server ai工具 java-rocketmq 阿里云ECS ardunio BLE 分析解读 pyautogui Typore 做raid 装系统 软链接 硬链接 大大通 第三代半导体 碳化硅 项目部署到linux服务器 项目部署过程 DenseNet CrewAI log4j bot Docker efficientVIT YOLOv8替换主干网络 TOLOv8 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 信号 cpp-httplib MacMini 迷你主机 mini Apple Xinference Google pay Apple pay autodl 宠物 免费学习 宠物领养 宠物平台 小艺 Pura X web3 GoogLeNet IPMITOOL 硬件管理 ubuntu24 vivado24 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 程序员创富 xpath定位元素 db VMware创建虚拟机 VR手套 数据手套 动捕手套 动捕数据手套 k8s集群资源管理 云原生开发 tidb GLIBC Open WebUI Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 烟花代码 烟花 元旦 信息可视化 网页设计 华为机试 远程看看 远程协助 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 sqlite3 自定义客户端 SAS ros2 moveit 机器人运动 xml wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 ldap linux环境变量 实习 keepalived Ark-TS语言 sonoma 自动更新 UDP的API使用 大模型面经 大模型学习 dity make webstorm gradle h.264 ArcTS 登录 ArcUI GridItem C# MQTTS 双向认证 emqx arkUI rime 内网环境 CVE-2024-7347 cmos 流水线 脚本式流水线 chrome devtools chromedriver ros 抗锯齿 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 合成模型 扩散模型 图像生成 宕机切换 服务器宕机 VMware安装mocOS VMware macOS系统安装 firewall KylinV10 麒麟操作系统 Vmware 金仓数据库 2025 征文 数据库平替用金仓 iBMC UltraISO lua vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 OpenHarmony 真机调试 nac 802.1 portal DOIT 四博智联 aarch64 编译安装 HPC EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 IMM 音乐库 飞牛 实用教程 图形渲染 python3.11 dash 正则表达式 浏览器开发 AI浏览器 黑苹果 树莓派 VNC thingsboard sdkman sequoiaDB docker run 数据卷挂载 交互模式 环境迁移 域名服务 DHCP 符号链接 配置 捆绑 链接 谷歌浏览器 youtube google gmail IO ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 dock 加速 本地部署AI大模型 基础环境 CentOS Stream CentOS ubuntu20.04 开机黑屏 本地化部署 Qwen2.5-VL vllm 人工智能生成内容 沙盒 word 拓扑图 多路转接 openstack Xen 玩机技巧 软件分享 软件图标 Redis Desktop 项目部署 IO模型 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 DBeaver 数据仓库 kerberos UOS1070e VS Code UDP 粘包问题 seleium grub 版本升级 扩容 目标跟踪 OpenVINO 推理应用 服务器时间 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 visual studio minecraft Attention PX4 系统开发 binder 车载系统 framework 源码环境 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 软负载 分布式训练 网络建设与运维 渗透 AI Agent 字节智能运维 Cookie 离线部署dify kernel 产品经理 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 gnu 存储维护 NetApp存储 EMC存储 rpa nlp 嵌入式Linux IPC 大模型推理 x64 SIGSEGV xmm0 西门子PLC 通讯 免费域名 域名解析 热榜 嵌入式系统开发 李心怡 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 Linux的权限 conda配置 conda镜像源 docker部署Python MDK 嵌入式开发工具 论文笔记 sublime text 远程服务 大模型部署 运维监控 leetcode 推荐算法 qemu libvirt 风扇控制软件 figma 网络爬虫 内网服务器 内网代理 内网通信 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR DocFlow 虚幻引擎 wpf 论文阅读 自动化编程 信创 信创终端 中科方德 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 搭建个人相关服务器 deep learning swoole xshell termius iterm2 hosts neo4j 数据库开发 database 网络搭建 神州数码 神州数码云平台 云平台 searxng 网络药理学 生信 PPI String Cytoscape CytoHubba 服务网格 istio js triton 模型分析 SRS 流媒体 直播 docker命令大全 Ubuntu共享文件夹 共享目录 Linux共享文件夹 鸿蒙开发 移动开发 Deepseek-R1 私有化部署 推理模型 欧标 OCPP spark HistoryServer Spark YARN jobhistory MVS 海康威视相机 聚类