一、认识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 列表,列出。
-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 ~]# lstest1 test2 test20250103 test3 test4[root@VM-8-12-centos ~]# cd test4[root@VM-8-12-centos test4]# lsgood[root@VM-8-12-centos test4]# cd good[root@VM-8-12-centos good]# lsnb666
复制代码 注意: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<UP,BROADCAST,RUNNING,MULTICAST> 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<link>
- 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<UP,LOOPBACK,RUNNING> mtu 65536
- inet 127.0.0.1 netmask 255.0.0.0
- inet6 ::1 prefixlen 128 scopeid 0x10<host>
- 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-ubuntuubuntu@VM-8-12-ubuntu:~$ sudo su - rootroot@VM-8-12-ubuntu:~# hostnamectl set-hostname studylinuxroot@VM-8-12-ubuntu:~# hostnamestudylinux
复制代码 6.4 什么是DNS域名解析(主机名映射)
域名解析原理(相当于电话薄)https://blog.csdn.net/weixin_45806267/article/details/143451905
Windows看:C:\Windows\System32\drivers\etc\hosts
Linux看:/etc/hosts
- 再联网去DNS服务器(如114.114.114.114,8.8.8.8等)扣问
6.5 配置主机名映射
好比,我们Xshell、FinalShell、mobaXterm是通过IP地点连接到的Linux服务器,那有没有可能通过域名(主机名)连接呢? 可以,我们只需要在Windows系统的:C:\Windows\System32\drivers\etc\hosts
文件中配置记录即可。
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 变量名=变量值
- 永久见效
- 针对当前用户见效,配置在当前用户的: ~/.bashrc文件中,通过vi ~/.bashrc编辑
- 针对所有用户见效,配置在系统的: /etc/profile文件中,通过vi /etc/profile编辑
- 并通过语法: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种压缩格式,后缀名分别是:
- .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格式。-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模式
注意:
- -z选项如果使用的话,一样平常处于选项位第一个
- -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)
注意:
- -f选项,必须在选项组合体的末了一位
- -z选项,发起在开头位置
- -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)
常用基础下令到此竣事,后续会更新实际工作中遇到的问题~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |