这是去年暑假快结束时看视频学习做的笔记,当时看了一半开学了后来就再也没看过,但是也足够应付日常学习使用了,现在基本也已经忘得差不多了😆等以后腾出时间了再看后面的
学习架构:
一、Linux基础
1.1 Linux介绍
1.1.1 Linux简介
Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发非常强悍,现在很多的企业级的项目都部署到Linux/unix服务器运行
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统
Linux 能运行主要的UNIX工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统
目前主要的操作系统有:Windows、Android、Linux、IOS、MacOS、车载系统等
1.1.2 Linux发行版
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包
Linux主要的发行版:Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain(蝶变)、Fedora、SuSE、OpenSUSE
1.1.3 Linux应用领域
现如今各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合
1.1.4 Linux与Unix的关系
1.UNIX的来历
2.Linux的来历
3.UNIX和Linux的关系
1.1.5 Linux和Windows的比较
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权 | 大部分软件都可以自由获取,同样功能的软件选择较少 |
安全性 | 三天两头打补丁安装系统安全更新,还是会中病毒木马 | 要说Linux没有安全问题,那当然是不可能的,这―点仁者见仁智者见智,相对来说肯定比Windows平台要更加安全 |
可定制性 | 封闭的,系统可定制性很差 | 开源,可定制化非常强 |
应用场景 | 桌面操作系统主要使用的是windows | 支撑百度,谷歌,淘宝等应用软件和服务的,是后台成千上方的Linux服务器主机。世界上大部分软件和服务都是运行在Linux之上的 |
1.2 Linux安装
学习Linux需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个Centos系统来学习
- 先安装virtual machine ,vm12
- 再安装Linux (CentOS 6.8)
- 原理示意图
1.2.1 VM安装(Virtual Machine16)
下载链接:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
安装步骤参考博客:https://blog.csdn.net/qq_40950957/article/details/80467513
1.2.2 CentOS(8.4)安装
- 创建虚拟机
- 开始安装系统(CentOS)
1.创建虚拟机
点击完成后,出现此页面
2.编辑虚拟机配置
①设置内存
②设置处理器
③设置网络适配器
说明:
网络连接类型的选择,网络连接类型一共有桥接、NAT、仅主机和不联网四种。
桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上
NAT:NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信
仅主机:虚拟机与宿主机直接连起来
3.开始安装CentOS
①在虚拟机设置中选择下载好的镜像文件,然后启动虚拟机
②启动后会出现此页面,利用“↑和↓键”选择第一项,然后Enter
③等待一段时间后,出现下方界面,然后搜索”chinese”,点击中文,选择简体中文,然后点击继续
④然后在出现的此界面进行相应设置
首先,设置时区和日期
然后,设置要安装的软件
然后,设置安装目标位置
然后会弹出一个页面,在此页面中设置分区大小
注:linux分区介绍
然后,设置KDUMP
然后,设置网络和主机名
然后,安全策略可以不用管,显示为没有找到内容
然后,设置Root密码,类似windows的密码,用于登录系统
然后,创建用户
最后,确认所有设置无误后,点击开始安装
⑤安装完成,重启系统
⑥重启成功后,接收许可证信息,完成配置
⑦选择用户,输入密码,登录系统
⑧进入系统,进行使用配置
⑨安装完成
1.3 虚拟机系统管理
1.3.1 虚拟机克隆
方式1:直接拷贝一份安装好的虚拟机文件
首先,找到已有的虚拟机文件夹,点击复制粘贴到想复制存放的位置
然后,打开VMware Workstation,点击选项卡中的文件,点击打开
最后,在弹窗中找到复制的文件夹,选择.vmx
文件,点击打开即可
方式2:使用VMware的克隆操作
注意:克隆时,需要先关闭linux系统
首先,打开VMware,右键单击将被克隆的虚拟机,在管理项点击克隆
然后,点击下一页
然后,再点击下一页
然后,选择创建完整克隆,再点击下一页
最后,输入新虚拟机名称,选择存放位置,点击完成即可
1.3.2 虚拟机快照
如果你在使用虚拟机系统的时候(比如Linux),你想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,VMware也提供了这样的功能,就叫快照管理
应用实例:
- 安装好系统以后,先做一个快照A
- 进入到系统。创建一个文件夹,再保存一个快照B
- 回到系统刚刚安装好的状态,即快照A
- 试试看,是否还能再次回到快照B
具体操作:
首先,右键单击需要被快照的虚拟机,选择快照,点击拍摄快照
然后,在弹出的窗口给快照命名,添加描述,再点击拍摄快照
然后,拍摄好的快照可在快照管理器中看到
最后,如果我们要回到到某个快照的状态,只需要在快照管理器中点击要回到的快照状态,然后点击转到即可
1.3.3 虚拟机迁移和删除
虚拟系统安装好后,它的本质就是文件(放在文件夹的)
因此虚拟系统的迁移很方便,可以把安装好的虚拟系统这个文件夹整体拷贝或者剪切到另外位置使用
删除也很简单,用VMware进行移除,再点击菜单->从磁盘删除即可,或者直接手动删除虚拟系统对应的文件夹即可
1.3.4 vmtools安装
参考链接:https://www.pianshen.com/article/81381979583/
1.vmtools的作用
vmtools安装后,可以让我们在windows下更好的管理vm虚拟机
可以设置windows和centos的共享文件夹
设置共享文件夹的具体步骤:(为了方便,可以设置一个共享文件夹,比如d:/myshare)
菜单->vm->setting,如图设置即可注意:设置选项为always enable,这样可以读写了
windows和centos可共享d:/myshare目录可以读写文件了
共享文件夹在centos的/mnt/hgfs/下
注意事项和细节说明:
- windows和contos就可以共享文件了,但是在实际开发中,文件的上传下载是需要使用远程方式完成的
- 远程方式登录,后面会具体讲解
2.安装vmtools的步骤
注:CentOS8.X版本已经自带vmtools,不用自己安装
进入centos
点击vm菜单的->install vmware tools
centos会出现一个vm的安装包,xx.tar.gz
拷贝到/opt
使用解压命令tar,得到一个安装文件(在终端使用命令 cd /opt 进入到opt文件夹,ls查看这个文件夹中的文件,tar -zxvf解压文件夹)
进入该vm解压的目录,/opt目录下
安装./vmware-install.pl
全部使用默认设置即可,就可以安装成功(安装过程中全部回车即可)
注意:安装vmtools需要有gcc
进行完上述操作之后,还需要重启下虚拟机才行。这里可以测试一下是否安装成功,在本机复制一个文件,然后在虚拟机中粘贴,若粘贴成功就表明 VMware Tools 安装成功了
3.重新安装vmtools不能点击的解决办法
1.4 Linux目录结构
1.4.1 基本介绍
1.linux的文件系统是采用级层式的树状目录结构,在此结构中的**最上层是根目录”/“**,然后在此目录下再创建其他的目录
2.深刻理解linux树状文件目录是非常重要的
3.在Linux世界里,一切皆文件
1.4.2 目录结构详解
具体的目录结构
- /bin:(常用)(usr/bin、/usr/local/bin)是Binary的缩写,这个目录存放着最经常使用的命令
- /sbin:(/usr/sbin、/usr/local/sbin) s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
- /home:(常用)存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
- /root:(常用)该目录为系统管理员,也称作超级权限者的用户主目录
- /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
- /etc:(常用)所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库my.conf
- /usr:(常用)这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录
- /boot:(常用)存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
- /srv:service缩写,该目录存放一些服务启动之后需要提取的数据
- /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /tmp:这个目录是用来存放一些临时文件
- /dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储
- /media:(常用)linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
- /mnt:(常用)系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。比如共享文件夹d:/myshare
- /opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空
- /usr/local:(常用)这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
- /var:(常用)这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
- /selinux:(security-enhanced linux)SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
二、Linux实操
2.1 远程登录
为什么需要远程登陆?
- linux服务器是开发小组共享
- 正式上线的项目是运行在公网
- 因此程序员需要远程登录到Linux进行项目管理或者开发
- 远程登录客户端有Xshell6,Xftp6,学习使用Xshell和 Xftp6,其它的远程工具大同小异
Xshell和Xftp下载链接:https://www.netsarang.com/en/free-for-home-school/
2.1.1 使用Xshell远程登录
首先,在虚拟机Linux系统的终端中使用**ifconfig
命令**查看本虚拟机的IP
然后,打开下载安装好的Xshell软件,此时会弹出一个新建会话的窗口,点击新建
然后,在弹出的窗口进行会话信息填写,然后关闭新建会话的窗口
然后,双击新建的这个会话
然后,输入登录的用户名和密码
最后,查看是否登陆成功
2.1.2 使用Xftp远程文件传输
同样,Xftp也需要像Xshell一样新建会话才能进行文件传输
首先,进入Xftp会弹出新建会话的窗口,在此窗口点击新建
然后,在弹出的窗口输入相关信息
然后,又会出现和Xshell一样的让你选择是一次性连接还是保存连接
最后,连接成功
上图中出现Linux文件名乱码的情况,解决办法如下:此方法是针对所有会话,若只想针对一个会话进行设置,只需点击打开后,右键单击想要设置的会话,点击属性进行设置即可
连接成功后,我们就可以选择想要传输的文件,选择要传输到哪个位置,然后右键单击文件,选择传输即可(Windows –> Linux或Linux –> Windows)
2.2 Vi和Vim编辑器
2.2.1 Vi和Vim的介绍
Linux系统会内置Vi文本编辑器
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
2.2.2 Vi和Vim的三种模式
一般/正常模式:以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用「删除宇符」或「删除整行」来处理档案内容,也可以使用「复制、粘贴」来处理你的文件数据
插入模式
按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的;从插入模式转换到命令行模式:先按下esc再输入一个冒号:即可
2.2.3 Vi和Vim的使用
1.方法一:Xshell中使用
首先,在Xshell连接成功后输入vim hello.java
,按回车
然后,就创建了一个新文件,进入了vim的正常模式
然后,按i,I,o,O,a,A,r,R键中任意一个字母就可进入插入模式进行编辑
然后,按Esc键再输入冒号:
即可进入命令行模式,然后再输入wq
,按回车,就可保存编辑的内容并退出vim
此时我们能在虚拟机系统中看到这个新建的文件
2.虚拟机系统中使用
首先在要存放文件的文件的位置右键单击,选择在终端打开输入vim 文件名
然后在终端中就可以像Xshell中一样进行文件的编辑了
或是直接点击打开要进行编辑的文件(也可以使用touch 文件名
指令创建一个新文件),就能用图形界面进行编辑,如下图
2.2.4 Vi和Vim的快捷键
快捷键使用练习:
- 拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴(输入p)[正常模式下]
- **删除当前行 dd,删除当前行向下的5行 5dd **[正常模式下]
- 在文件中查找某个单词[命令行下 /关键字,回车查找,输入n就是查找下一个]
- 设置文件的行号,取消文件的行号[命令行下:set nu和:set nonu]
- 编辑/etc/profile文件,使用快捷键到该文档的最末行[G]和最首行[gg] [正常模式下]
- 在一个文件中输入”hello”,然后又撤销这个动作 u [正常模式下]
- 编辑/etc/profile 文件,并将光标移动到20行,输入20,再shift+g [正常模式下]
2.2.5 Vi和Vim键位图
2.3 开机、重启和用户登录注销
2.4 用户管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
2.4.1 添加用户
基本语法:useradd 用户名
应用案例
案例1:添加一个用户milan,默认该用户的家目录在/home/milan(useradd milan
)
细节说明
1.当创建用户成功后,会自动的创建和用户同名的家目录
2也可以通过useradd -d 指定目录 新的用户名
,给新创建的用户指定家目录
2.4.2 指定/修改密码
基本语法:passwd 用户名
应用案例
给milan指定密码(passwd milan
)
补充:显示当前用户所在的目录 pwd
2.4.3 删除用户
基本语法:userdel 用户名
应用案例
1.删除用户milan,但是要保留家目录(userdel milan
)
2.删除用户以及用户主目录(userdel -r milan
)
细节说明
是否保留家目录的讨论?
一般情况下,建议保留
2.4.4 查询用户信息指令
基本语法:id 用户名
应用实例
案例:请查询root信息(id root
)
细节说明
当用户不存在时,返回无此用户
2.4.5 切换用户
介绍
在操作Linux中,如果当前用户的权限不够,可以通过su - 指令,切换到高权限用户,比如root
基本语法:su - 切换用户名
应用实例
创建一个用户jack,指定密码,然后切换到 jack(useradd jack
passwd jack
su - jack
)
细节说明
1.从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
2.当需要返回到原来用户时,使用exit/logout指令
2.4.6 查看当前用户/登录用户
基本语法:whoami
/who am i
查询的是第一次登录当前服务器的用户(比如,第一次使用root登录,然后切换到jack,再使用该命令查询到的依然是root)
2.4.7 用户组
介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理
新增组
指令:groupadd 组名
删除组
指令(基本语法):groupdel 组名
增加用户时直接加上组
指令(基本语法):useradd -g 用户组 用户名
若增加用户时没有指定将用户添加到哪个组,会默认创建一个与用户名同名的组,将用户存放在其中
增加一个用户zwj,直接将他指定到wudang(groupadd wudang
useradd -g wudang zwj
)
修改用户的组
指令(基本语法):usermod -g 用户组 用户名
2.4.8 用户和组相关文件
/etc/passwd文件:用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow文件:口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件:组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
2.5 实用指令
2.5.1 指定运行级别
1.init指令
切换运行级别的命令:init [0123456]
运行级别说明:
- 0:关机
- 1:单用户【找回丢失密码】
- 2∶多用户状态没有网络服务
- 3∶多用户状态有网络服务
- 4∶系统未使用保留给用户
- 5:图形界面
- 6∶系统重启
常用运行级别是3和5,也可以指定默认运行级别
CentOS7后运行级别说明:
在CentOS7以前,都在/etc/inittab文件中来修改默认运行级别
在CentOS7之后进行了简化,如下:
multi-user.target:analogous to runlevel 3(即multi-user.target相当于运行级别3)
graphical.target:analogous to runlevel 5(即graphical.target相当于运行级别5)
To view current default target,run:systemctl get-default(想要**查看当前默认target,在终端输入systemctl get-default
**即可查看)
To set a default target,run:systemctl set-default TARGET.target(想要**设置默认target,在终端输入systemctl set-default TARGET.target
**即可设置成相对应的默认target)
2.5.2 找回root密码
面试题
如何找回root密码
课堂练习
1.假设root密码忘记了,请问如何找回密码
2.设置运行级别,linux运行后,直接进入到命令行终端(3)
步骤(CentOS7.6为例):
1.首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面 如图
2.进入编辑界面,使用键盘上的上下键把光标往下移动,找到以”Linux16”开头内容所在的行数,在行的最后面输入:init=bin/sh
如图
3.接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式
4.接着,在光标闪烁的位置中输入:mount -o remount,rw /
(注意:各个单词间有空格),完成后按键盘的回车键(Enter)如图
5.在新的一行最后面输入:passwd
,完成后按键盘的回车键〈Enter)。输入密码,然后再次确认密码即可(密码长度最好8位以上,但不是必须的),密码修改成功后,会显示passwd…..的样式,说明密码修改成功
6.接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel
(注意:touch与/后面有一个空格),完成后按键盘的回车键(Enter)
7.继续在光标闪烁的位置中,输入:exec /sbin/init
(注意:exec与/后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程时间可能有点长,耐心等待),完成后,系统会自动重启,新的密码生效了
步骤(CentOS8为例):
参考链接1:https://blog.csdn.net/qq_37960324/article/details/107709858
参考链接2:https://www.jb51.net/article/182993.htm
1.启动前按“e”进入启动配置编辑模式
2.修改启动权限配置。将ro
改为rw
,在末尾加入:init=/bin/sh
,图中init后面的\是系统加的,不用管
3.ctrl + x 进入紧急模式
4.更改密码
输入passwd设置新密码(建议明文修改,保不准万一键入问题被搞死),修改完成后运行命令touch /.autorelabel
使SELinux生效,密码生效,然后输入exec /sbin/init
快速启动
2.5.3 帮助指令
1.man指令
man指令:获得帮助信息
基本语法:man [命令或配置文件]
应用案例:查看ls命令的帮助信息(man ls
)
2.help指令
help指令:获得shell内置命令的帮助信息
基本语法:help 命令
应用实例:案例:查看cd命令的帮助信息(help cd
)
在linux下,隐藏文件是以.
开头,选项可以组合使用比如ls -al
是显示当前文件夹下的所有目录以单列形式列出;比如ls -al /root
是将root文件夹之下的所有目录以单列形式列出
2.5.4 文件目录指令
1.pwd指令
pwd指令:显示当前工作目录的绝对路径
基本语法:pwd
2.ls指令
ls指令:查看指定目录中的文件和目录
基本语法:ls [选项] [目录或是文件]
常用选项-a
:显示当前目录所有的文件和目录,包括隐藏的-l
:以列表的方式显示信息
应用实例:查看当前目录的所有内容信息(ls -al
)
3.cd指令
cd指令:切换到指定目录
基本语法:cd [参数]
理解:绝对路径和相对路径cd ~
或者cd
:回到自己的家目录,比如,现在我们是使用root账户登录,则cd ~就是返回到/rootcd ..
回到当前目录的上一级目录
应用实例:
案例1:使用绝对路径切换到root目录(cd /root
)
案例2:使用相对路径到/root目录,比如在/home/tom下(cd ../../root
)
案例3:表示回到当前目录的上一级目录(cd ..
)
案例4:回到家目录(cd ~
)
4.mkdir指令
mkdir指令:用于创建目录
基本语法:mkdir [选项] 要创建的目录
常用选项:-p
:创建多级目录
应用实例:
案例1:创建一个目录/home/dog(mkdir /home/dog
)
案例2:创建多级目录/home/animal/tiger(mkdir -p /home/animal/tiger
)
5.rmdir指令
rmdir指令:删除空目录
基本语法:rmdir [选项] 要删除的空目录
应用实例:
案例:删除一个目录/home/dog(rmdir /home/dog
)
使用细节:
rmdir 删除的是空目录,如果目录下有内容时无法删除的
提示:如果需要删除非空目录,需要使用rm -rf 要删除的目录(比如,rm -rf /home/animal
)
6.touch指令
touch指令:创建空文件
基本语法:touch 文件名称
应用实例:
案例:创建一个空文件hello.txt(touch hello.txt
)
7.cp指令
cp指令:拷贝文件到指定目录
基本语法:cp [选项] source dest
(source指要拷贝的文件,dest指要拷贝到的目录)
常用选项:-r
:递归复制整个文件夹
应用实例:
案例1:将/home/hello.txt拷贝到/home/bbb目录下(mkdir /home/bbb
cp /home/hello.txt /home/bbb
)
案例2:递归复制整个文件夹,举例,比如将/home/bbb整个目录,拷贝到/opt(cp -r /home/bbb /opt
)
使用细节:强制覆盖不提示的方法:\cp
8.rm指令
rm指令:移除文件或目录
基本语法:rm [选项] 要删除的文件或目录
常用选项:-r
:递归删除整个文件夹-f
:强制删除不提示
应用实例:
案例1:将/home/hello.txt删除(rm /home/hello.txt
)
案例2:递归删除整个文件夹/home/bbb(rm -r /home/bbb
)
使用细节:强制删除不提示的方法:带上-f参数即可
9.mv指令
mv指令:移动文件与目录或重命名
基本语法:mv oldNameFile newNameFile
(功能描述:重命名)mv /temp/movefile /targetFolder
(功能描述:移动文件)
应用实例:
案例1:将/home/cat.txt文件重新命名为pig.txt(mv cat.txt pig.txt
)
案例2:将/home/pig.txt文件移动到/root目录下(mv /home/pig.txt /root
)
案例3:将/home/pig.txt文件移动到/root目录下并重命名为cow.txt(mv /home/pig.txt /root/cow.txt
)
案例4:将/opt/bbb整体移动到/home下(mv /opt/bbb /home
)
10.cat指令
cat指令:查看文件内容
基本语法:cat [选项] 要查看的文件
常用选项:-n
:显示行号
应用实例:
案例1:/ect/profile文件内容,并显示行号(cat -n /etc/profile
)
使用细节:cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | more
进行交互
(比如,查看/etc/profile文件,cat -n /etc/profile | more
)
11.more指令
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中**内置了若干快捷键(交互的指令)**,详见操作说明
基本语法:more 要查看的文件
应用实例:案例:采用more查看文件/etc/profile(more /etc/profile
)
操作说明,如图:
12.less指令
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
基本语法:less 要查看的文件
应用实例:案例:采用less查看一个大文件/opt/杂文.txt(less /opt/杂文.txt
)
操作说明,如图:
13.echo指令
echo指令:输出内容到控制台
基本语法:echo [选项] [输出内容]
应用实例:
案例1:使用echo指令输出环境变量$PATH(echo $PATH
)
案例2:使用echo指令输出hello,world!(echo hello,world!
)
14.head指令
head指令:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法:head 文件
(功能描述::查看文件头10行内容)head -n 5 文件
(功能描述:查看文件头5行内容,5可以是任意行数)
应用实例:案例:查看/etc/profile的前面5行代码(head -n 5 /etc/profile
)
15.tail指令
tail指令:用于输出文件中尾部的内容,默认情况下tail指令显示文件的最后10行内容
基本语法:tail 文件
(功能描述:查看文件尾10行内容)tail -n 5 文件
(功能描述:查看文件尾5行内容,5可以是任意行数)tail -f 文件
(功能描述:实时追踪该文档的所有更新)
应用实例:
案例1:查看/etc/profile最后5行的代码(tail -n 5 /etc/profile
)
案例2:实时监控mydate.txt,看看当文件有变化时,是否看到实时的追加内容(tail -f mydate.txt
)
16.>指令和>>指令
>
指令:输出重定向>>
指令:追加
基本语法:ls -l > 文件
(功能描述:列表的内容写入文件中(覆盖写))ls -al >> 文件
(功能描述:列表的内容追加到文件的末尾)cat 文件1 > 文件2
(功能描述:将文件1的内容覆盖到文件2)echo "内容" >> 文件
(功能描述:将内容追加到文件中)
应用实例:
案例1:将/home目录下的文件列表写入到/home/info.txt中(ls -l /home > /home/info.txt
,如果info.txt不存在会自动创建)
案例2:将当前日历信息追加到/home/mycal文件中(cal >> /home/mycal.txt
)
17.ln指令
ln指令:软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
基本语法:ln -s [原文件或目录] [软链接名]
(功能描述:给原文件创建一个软链接)
应用实例:
案例1:在/home目录下创建一个软连接myroot,连接到/root目录(ls -s /root /home/myroot
)
案例2:删除软连接myroot(rm /home/myroot
)
细节说明:当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
18.history指令
history指令:查看已经执行过历史命令,也可以执行历史指令
基本语法:history
(功能描述:查看已经执行过历史命令)
应用实例:
案例1:显示所有的历史命令(history
)
案例2:显示最近使用过的10个指令(history 10
)
案例3∶执行历史编号为5的指令(!5
)
2.5.5 时间日期类指令
1.date指令
date指令:显示当前日期
基本语法:date
(功能描述:显示当前时间)date +%Y
(功能描述:显示当前年份)date +%m
(功能描述:显示当前月份)date +%d
(功能描述:显示当前是哪一天)date "+%Y-%m-%d %H:%M:%S"
(功能描述:显示年月日时分秒)
应用实例:
案例1:显示当前时间信息(date
)
案例2:显示当前时间年月日(date "+%Y-%m-%d"
)
案例3:显示当前时间年月日时分秒(date "+%Y-%m-%d %H:%M:%S"
)
date指令:设置日期
基本语法:date -s 字符串时间
应用实例:案例1:设置系统当前时间,比如设置成2021-11-11 11:22:22(date -s "2021-11-11 11:22:22"
)
2.cal指令
cal指令:查看日历指令
基本语法:cal [选项]
(功能描述:不加选项,显示本月日历)
应用实例:
案例1:显示当前日历(cal
)
案例2:显示2020年日历(cal 2020
)
2.5.6 搜索查找类指令
1.find指令
find指令:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
基本语法:find [搜索范围] [选项]
选项说明:-name<查询方式>
:按照指定的文件名查找模式查找文件-user<用户名>
:查找属于指定用户名所有文件-size<文件大小>
:按照指定的文件大小查找文件
应用实例:
案例1:按文件名:根据名称查找/home目录下的hello.txt文件(find /home -name hello.txt
)
案例2∶按拥有者:查找/opt目录下,用户名称为nobody的文件(find /opt -user nobody
)
案例3:查找整个linux系统下大于200M的文件(+n大于 -n小于 n等于,单位有k,M,G)(find / -size +200M
)
2.locate指令
locate指令可以快速定位文件路径
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
基本语法:locate 搜索文件
特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
应用实例:案例1:请使用locate指令快速定位hello.txt文件所在目录(updatedb
locate hello.txt
)
which指令,可以查看某个指令在哪个目录下,比如ls指令在哪个目录(which ls
)
3.grep指令和管道符号 “|”
grep指令:过滤查找
管道符”|”:表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法:grep [选项] 查找内容 源文件
常用选项:-n
:显示匹配行及行号-i
:忽略字母大小写
应用实例:案例1:请在hello.txt文件中,查找”yes”所在行,并且显示行号
(写法一:cat /home/hello.txt | grep -n "yes"
写法二:grep -n "yes" /home/hello.txt
)
2.5.7 压缩和解压
1.gzip和gunzip指令
gzip指令:用于压缩文件
gunzip指令:用于解压文件
基本语法:gzip 文件
(功能描述:压缩文件,只能将文件压缩为*.gz
文件)gunzip 文件.gz
(功能描述:解压压缩文件命令)
应用实例:
案例1:gzip压缩,将/home下的hello.txt文件进行压缩(gzip /home/hello.txt
)
案例2:gunzip压缩,将/home下的hello.txt.gz文件进行解压缩(gunzip /home/hello.txt
)
2.zip/unzip 指令
zip指令:用于压缩文件
unzip指令:用于解压文件,这个在项目打包发布中很有用
基本语法:zip [选项] XXX.zip 将要压缩的内容
(功能描述:压缩文件和目录到当前目录下)unzip [选项] XXX.zip
(功能描述:解压压缩文件到当前目录下)
zip常用选项:-r
:递归压缩,即压缩目录
unzip的常用选项:-d<目录>
:指定解压后文件的存放目录
应用实例:
案例1:将/home下的所有文件/文件夹进行压缩成myhome.zip(zip -r myhome.zip /home
)
案例2:将myhome.zip解压到/opt/tmp目录下(unzip -d /opt/tmp /home/myhome.zip
,解压到的目录若不存在会自动创建)
3.tar指令
tar指令:打包指令,最后打包后的文件是.tar.gz的文件
基本语法:tar [选项] XXX.tar.gz 打包的内容
(功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明:-c
:产生.tar打包文件-v
:显示详细信息-f
:指定压缩后的文件名-z
:打包同时压缩-x
:解包.tar文件-C
:指定解压到哪个目录
应用实例:
案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成 pc.tar.gz(tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
)
案例2:将/home文件夹压缩成myhome.tar.gz(tar -zcvf myhome.tar.gz /home
)
案例3:将pc.tar.gz解压到当前目录(tar -zxvf /home/pc.tar.gz
)
案例4:将myhome.tar.gz解压到/opt/tmp2目录下(mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
)
2.6 组管理和权限管理
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
2.6.1 文件/目录的所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
查看文件的所有者指令:ls -ahl
修改文件所有者指令:chown 用户名 文件名
应用案例:使用root创建一个文件apple.txt,然后将其所有者修改成tom(touch /home/apple.txt
chown tom /home/apple.txt
)
2.6.2 文件/目录的所在组
1.新建组
基本指令:groupadd 组名
应用实例:
案例1:创建一个组monster(groupadd monster
)
案例2:创建一个用户fox,并放入到monster组中(useradd -g monster fox
)
2.修改文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
查看文件/目录所在组基本指令:ls -ahl
修改文件所在的组基本指令:chgrp 组名 文件名
应用实例:使用root用户创建文件orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到fruit组