Linux介绍
Linux是一个免费的、开源的操作系统
Linux的作者是
林纳斯
,Linux的吉祥物是企鹅
,英文叫tux
Linux的特点
- 免费
- 开源
- 安全
- 高效
- 稳定
- 处理高并发强
Linux和windows比较
比较 | windows | Linux |
---|---|---|
价格 | 收费 | 免费 |
软件 | 数量和质量占优势,但大部分软件收费,由微软官方提供支持 | 基本免费,由全球Linux开发者和自由软件社区支持 |
安全性 | 安全性比较低 | 安全性比windows系统高很多 |
使用习惯 | 普通人基本是使用图形化界面操作 | 虽然有图形化界面,但大部分人都是使用命令行 |
可定制性 | 可定制性低 | 因为源代码开源,可定制性高 |
使用场景 | 普通人日常使用 | 基本是用作服务器开发和项目部署 |
目录结构
boot
:Linux系统启动所需要的一些文件proc
:系统内存的映射,存放系统信息;注意:非大佬级别勿动srv
:service的缩写,存放某些服务启动之后,需要提取的数据;注意:非大佬级别勿动sys
:存放内核相关数据;注意:非大佬级别勿动
tmp
:存放临时文件dev
:存放硬件设备文件,类似windows下的设备管理器media
:Linux会自动识别如U盘、光驱等设备的插入,随后自动讲其挂载到该目录下mnt
:给用户临时挂载别的文件系统,例如存放另一个系统的共享文件夹opt
:通常是用来存放软件安装包的,你也可以不放这usr/local
:软件被安装的目录,通常是以源码的方式进行安装的程序var
:存放经常会被修改的目录或文件,例如日志文件等selinux
:安全系统,能控制软件只能访问某些特定文件,类是windows的电脑管家的功能
bin
:存放常用指令sbin
:存放只有系统管理员才能使用的指令home
:存放普通用户的主目录,目录名通常以用户账号作为目录名root
:存放系统管理员的主目录lib
:系统开机所需要用到的动态链接库,类似windows里lost+found
:通常是空的,当系统异常关机的后,可能就会在这生成一些文件etc
:系统管理所需要的所有配置文件和子目录,以及环境变量配置passwd
:用户配置文件(存放用户信息)group
:组配置文件(存放组信息)shadow
:口令配置文件(存放登录和密码信息)
usr
:存放用户的应用程序和文件,类似windows下的program files目录
提示:以上文件夹虽多,但不需要去死记硬背,用多了自然而然的就懂了
注意:Linux中的目录是已经规划好了的,不能乱放文件
windows目录一览图
Linux目录一览图
vim编辑器
vim是Linux内置的一个文本编辑器,它可以打开和编辑普通文本,也可以打开和编辑代码文件,就类似于我们windows内置的记事本一样,只不过,vim比记事本更强大。
可能你还听说过
vi
,那么vim
和vi
有什么区别吗?其实,vim
可以看作是vi
的升级版,功能更强大,我们就使用vim
就可以了
vim三种模式
- 命令行模式:此模式下,可以输入
vim
命令进行各种操作
当你打开一个文件后,当前的状态就处于命令行模式。
当你在插入模式下,按下 ESC
键,那么也会来到命令行模式
- 插入模式:此模式下,你可以往文件里输入内容
在命令行模式下,按下 a
、i
、A
、I
、O
、o
、R
、J
任意一个,可进入插入模式,按ESC
键可退出插入模式
a :在当前光标位置的右边添加文本
i :在当前光标位置的左边添加文本
A :在当前行的末尾位置添加文本
I :在当前行的开始处添加文本(非空字符的行首)
O :在当前行的上面新建一行
o:在当前行的下面新建一行
R:替换(覆盖)当前光标位置及后面的若干文本
J :合并光标所在行及下一行为一行(依然在命令模式)
- 末行模式
在命令行模式下下,按下 :
即可进入末行模式,在此模式下可以看到vim窗口的最后一行会出现 :
,紧接着你就可以执行一些相关的末行命令了,例如 在命令行模式下,输入:set nu
,然后回车,即可显示行号
vim常用命令
- 打开或创建并打开某个文件:
vim index.js
- 保存文件:
:w
- 退出编辑器:
:q
(注意:在文件未作任何修改时可以使用) - 退出编辑器,且不保存文件:
:q!
- 退出编辑器,且保存文件:
:wq
- 复制单行:vim命令行模式下,将光标移动至需要复制的行,输入
yy
- 复制多行:vim命令行模式下,将光标移动至需要复制的行,输入
3yy
,会复制往下的3行 - 粘贴:复制好的内容:vim命令行模式下,将光标移动至需要粘贴的行,输入
p
- 删除单行:vim命令行模式下,将光标移动至需要复制的行,输入
dd
- 删除多行:vim命令行模式下,将光标移动至需要复制的行,输入
5dd
,会复制往下的3行 - 查找:vim末行模式下,输入
/关键字
,然后按回车即可查找,输入n
查找下一个 - 设置行号:vim末行模式下,输入
:set nu
- 取消行号:vim末行模式下,输入
:set nonu
- 跳转至文件首行:vim命令行模式下,输入
gg
- 跳转至文件末行:vim命令行模式下,输入
G
- 跳转至某一行:vim命令行模式下,输入行号,再输入
shift+g
- 撤销:vim命令行模式下,输入
u
关机、重启
- shutdown
shutdown -h now
:立即关机shutdown -h 1
:1分钟后关机shutdown -r now
:立即重启
halt
:输入后,直接关机,跟shutdown -h now
没区别reboot
:输入后,直接重启,跟shutdown -r now
没区别sync
:把内存的数据保存到磁盘上
通常,在你关机或重启前,都要使用
sync
,防止你忘记保存文件,导致数据丢失
登录、注销
logout
:注销,也就是退出登录状态
logout
指令只有在你使用远程登录的状态下,才有效果
用户管理
在Linux系统中,有用户、组、主目录的概念。
用户和组的关系如下:
每一个用户至少属于一个组
每一个组至少拥有一个用户
每个用户可以加入多个组
用户和主目录的关系如下:
每个用户被创建后,都拥有自己的一个主目录
主目录就相当于这个用户的一块私人空间
例如我创建了 huangmou
这个用户,那么当这个用户登录系统后,它就会自动进入到自己的主目录中, 主目录就是 /home/huangmou
这个文件夹。
也可以这么说,当一个用户登录成功后,打开黑窗口,输入 pwd
然后回车,你看到下面输出的路径,就是你现在所处的位置,也就代表着,你现在是在主目录下
添加(创建)用户
命令:useradd [可选参数] 用户名
示例1:创建 huangmou
这个用户
useradd huangmou |
示例2:创建 huangmou
这个用户,并将该用户放入 liangzai
这个组内
useradd -g liangzai huangmou |
注意点:
- 如果在创建一个用户时,没有指明这个用户属于哪个组,那么系统会自动为这个用户创建一个组,并将该用户置入该组内,组名与用户名一样。
- 当用户创建成功后,会自动创建一个跟用户同名的主目录
- 也可以通过
useradd -d 指定目录 用户名
的方式,给新创建的用户指定主目录。如果通过这种方式,指定目录
必须不存在,否则无法创建用户,也就是说,你不要往一个已经存在的目录下创建用户,系统会自动帮你创建的- 如果在创建用户的时候指定了该用户所存在的组,则这个组必须存在,例如你想将黄某安排进研发部门,那么
研发部门
必须先存在才行吧?如果这个部门都不存在,你怎么安排?
设置或修改密码
命令:passwd 用户名
示例:修改 huangmou
这个用户的密码
passwd huangmou |
命令输入完后,按下回车,根据提示来进行输入即可
注意点:
输入密码的时候,你可能会发现,命令行上的光标不动,也没有看到任何的输入,可能这个时候新人们就急了,为啥我输入了没看见内容呢?是我键盘废了还是我系统坏了?
其实都不是,在
Linux
系统中,所有涉及到输入密码的,你都没法看见的,虽然你看着好像没有反应,但其实,密码已经输入了
删除用户
命令:
userdel 用户名
:删除用户,保留该用户的主目录userdel -r 用户名
:删除用户,连同该用户的主目录也一块删除
示例1:删除 huangmou
,但保留他的主目录
userdel huangmou |
示例2:删除 huangmou
,不保留他的主目录
userdel -r huangmou |
在工作中,如果要删除一个用户,通常会保留该用户的主目录,至于为什么,大家可以去思考思考
查看用户信息
命令:id 用户名
示例:查询 huangmou
的信息
id huangmou |
该命令执行后,如果该用户存在,则返回以下字段信息:
- uid:用户id号
- gid:用户所在的那个组的id号
- 组:该用户属于哪个组
如果该用户不存在,则显示 无此用户
查看当前用户
命令:whoami
或 who am i
示例:假设我当前登录的用户是 huangmou
,我要查看我当前 huangmou
的这个用户
whoami |
切换用户
命令:su - 用户名
示例:假设我现在登录的是root用户,我想切换到 huangmou 这个用户
su - huangmou |
当我从 root 用户切换到 huangmou 这个用户后,我又想重新回退到 root 用户
exit |
从权限高的用户切换到权限低的用户时,不需要输入目标用户的密码
创建组
命令:groupadd 组名
示例:创建 liangzai
这个组
groupadd liangzai |
删除组
命令:groupdel 组名
示例:删除 liangzai
这个组
groupdel liangzai |
修改用户组
命令:usermod -g 新组名 用户名
示例:创建 feiwu
这个组,然后将 huangmou
这个用户调换到 feiwu
组下
groupadd feiwu |
文件目录
对各种文件或目录进行的操作
目录路径
命令:pwd
作用:显示当前工作目录的绝对路径
示例:查看当前所在目录的绝对路径
pwd |
切换路径
命令:cd [可选参数]
作用:从当前目录切换到目标目录
可选参数:
- 绝对路径
- 相对路径
- 回到工作目录:
~
或:
- 回到上一层目录:
..
示例1:假设我当前在 /home 下,我要去 etc 目录下 (绝对路径)
cd /etc |
示例2:假设我当前在 /home 下,我要去 etc 目录下 (相对路径)
cd ../etc |
示例3:假设我当前在 /etc/apt 下,我要去上一层目录下
cd .. |
示例4:假设我当前在 /etc/apt 下,我要回到主目录
cd ~ |
显示目录或文件
命令:ls [选项] [目录或文件]
作用:显示当前目录下,存在哪些目录或文件
选项参数:
-a
:显示当前目录下,存在哪些目录或文件,包括隐藏文件-l
:以列表的形式进行展示
示例1:显示当前目录下的所有目录和文件(不包括隐藏文件)
ls |
示例2:显示当前目录下的所有目录和文件(包括隐藏文件)
ls -a |
示例3:显示当前目录下的所有目录和文件,以列表的形式展示
ls -l |
示例4:示例3:显示当前目录下的所有目录和文件(包括隐藏文件),以列表的形式展示
ls -al |
创建目录
命令:mkdir [可选参数] 路径+文件夹名
作用:在指定路径下,创建文件夹
可选参数:
-p
:多级创建
示例1:在当前目录下,创建 demo
这个文件夹
mkdir demo |
示例2:在上一层目录下,创建 demo
这个文件夹
mkdir ../demo |
示例3:我当前在 home
目录下,我想要在 temp
目录下,创建 demo
这个文件夹
mkdir /temp/demo |
示例4:在当前目录下,创建 demo
这个文件夹,且 demo
文件夹下还有 sub
这个文件夹,且 sub
这个文件夹下,还有 last
这个文件夹
mkdir -p demo/sub/last |
删除空目录
命令:rmdir 文件夹路径
作用:删除指定的文件夹 (**只能删除空的文件夹**)
示例:home
下有一个 demo
的文件夹,它是空的,删除它
rmdir /home/demo |
删除文件或非空目录
命令:rm [可选参数] 文件夹路径
作用:强制删除指定文件或文件夹
可选参数:
-r
递归删除整个文件夹-f
:强制删除,不弹出提示
示例1:假设当前目录下有一个 demo.txt
, 请删除它
rm demo.txt |
当你按下回车后,shell会询问你是否删除,如果要删除,请输入
y
然后回车
示例2:假设当前目录下有一个 demo.txt
, 请删除它,且不提示
rm -f demo.txt |
示例3:假设当前目录下有一个 demo
的文件夹,里面有n个文件, 请删除它
rm -r demo |
示例4:假设当前目录下有一个 demo
的文件夹,里面有n个文件, 请删除它,且不提示
rm -rf demo |
示例5:home
下有一个 demo
的文件夹,它不是空的,删除它
rm -rf /home/demo |
警告:删除不谨慎,公司两行泪!!!
创建文件
命令:touch 文件名
作用:创建一个空的文件
示例1:在当前目录下,创建一个 demo.txt
文件
touch demo.txt |
示例1:在当前目录下,连续创建 test1.txt
、test2.js
、test3.css
三个文件
touch test1.txt test2.js test.css |
复制
命令:cp [可选参数] 被复制的目标 粘贴的位置
作用:将一个文件或目录进行复制到别的地方
可选参数:
-r
:递归复制目录下的所有文件
示例1:假设当前目录下有一个 叫 source
的空文件夹,和一个 demo.txt
文件,请将 demo.txt
复制到 source
文件夹内
cp demo.txt source |
示例2:假设当前目录下,有 a
和 b
两个文件夹,a
文件夹内有 n 个文件,b
文件夹是空的,请将 a
内的所有文件,全部复制到 b
内
cp -r a/* b |
示例3:假设当前目录下,有 a
和 b
两个文件夹,a
文件夹内有 n 个文件,b
文件夹是空的,请将 a
文件夹,复制到 b
内
cp -r a b |
提示:
- 被复制目标后跟
/*
代表其下的所有文件,如果没有写/*
,则代表复制文件夹- 有时候你要复制过去的位置,已经存在相同的文件或目录,shell 就会询问你是否选择覆盖,这可能有点烦,我们就可以把
cp
替换成\cp
,这样就会强制覆盖,不会再询问了
移动+重命名
- 移动命令:
mv 源路径 目标路径
- 重命名命令:
mv 旧名称 新名称
如何判断,你使用的 mv
到底是会移动还是会重命名?
答:我们可以把第二个参数理解为 要保存的位置
,当第二个参数为你没有写别的路径,或者是当前路径,那么就是重命名,其实就相当于原地剪切,改名后就原地粘贴。否则就是移动。
示例1:假设当前目录下有 a.txt
,请把 a.txt
重命名为 b.txt
mv a.txt b.txt |
因为
a.txt
和你写的b.txt
是在同一个目录下,因此,就是重命名
示例2:假设当前处在 home
目录下,当前目录下有一个 a.txt
和一个 demo
文件夹,请将 a.txt
移动到 demo
文件夹内
mv a.txt demo |
示例3:有 old
和 new
两个文件夹,old
文件夹内,有一个 a.txt
,假设你当前的路径是在 old
文件夹内,请将 a.txt
移动到 new
文件夹内,并重命名为 aaa.txt
mv a.txt ../new/aaa.txt |
查看文件
命令:
cat [可选参数] 文件名 [ | 可选功能]
- 可选参数
-n
:显示行号
- 可选功能
more
:分页,当数据量比较大时可自动进行分页查看,按空格
可前往下一页
- 可选参数
示例1:假设当前目录下有一个 demo.txt
,里面存在内容。 使用 cat
命令 查看 demo.txt
的内容,显示行号
cat demo.txt |
示例2:假设当前目录下有一个 demo.txt
,里面存在内容。 使用 cat
命令 查看 demo.txt
的内容,显示行号
cat -n demo.txt |
示例3:假设当前目录下有一个 demo.txt
,里面存在大量内容。 使用 cat
命令,以分页状态查看 demo.txt
的内容
cat demo.txt | more |
使用more分页查看
命令:more 文件名
作用:在vim全屏状态下,以分页的方式查看文件
more状态下具备的操作
操作 | 功能 |
---|---|
空格 | 向下翻一页 |
回车 | 向下翻一行 |
q | 退出分页状态,且不再显示该文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 向上滚动一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
示例:以more分页的状态,查看 /etc/profile
的内容
more /etc/profile |
使用less分页查看
命令:less 文件名
作用:在vim全屏状态下,以分页的方式查看文件
less
和 more
最大的区别在于,less
性能更好,速度更快,因为 more
是一次性将整个文件的内容都加载,而 less
则类似 “按需加载”,在查看大文件的时候,less
的性能要比 more
大很多
less状态下具备的操作
操作 | 功能 |
---|---|
空格 | 向下翻一页 |
回车 | 向下翻一行 |
pagedown | 向下翻一页 |
pageup | 向上翻一页 |
/字符串 | 向下查找[字符串],n:向下查找,N:向上查找 |
?字符串 | 向上查找[字符串],n:向下查找,N:向上查找 |
q | 退出分页状态,且不再显示该文件内容 |
示例:以more分页的状态,查看 /etc/profile
的内容
less /etc/profile |
写入内容
命令:
内容 > 文件名
内容 >> 文件名
作用:
>
是将左边的内容,写入到右边的文件。>>
是将左边的内容,追加到右边的文件。
注意点:
>
是写入,是会覆盖原文件的内容的。而>>
仅仅是往文件的末尾,进行内容的追加,不会覆盖原有的内容- 如果右边的文件不存在,则会自动创建该文件
示例1:将 “我是黄某人” 这句话写入到 demo.txt
"我是黄某人" > demo.txt |
示例2:将 “还是靓仔” 这句话追加到 demo.txt
"还是靓仔" >> demo.txt |
示例3:将 /home
目录下的信息,写入到 dir.txt
ls -l > dir.txt |
示例4:将日历信息追加到 date.txt
,并且追加3次
cal > date.txt |
示例5:将 date.txt
里的内容,写入到 newdate.txt
中
cat date.txt > newdate.txt |
输出内容
命令:
each 内容
head [可选参数] 文件名
- 可选参数:
-n lines
:lines是显示文件前多少行,lines的默认值是10
- 可选参数:
tail [可选参数] 文件名
- 可选参数:
-n lines
:lines是显示文件最后多少行,lines的默认值是10
-f
:实时监听文件的更新
- 可选参数:
each
可用来输出文件内容、环境变量、字符串到终端
head
可输出文件的前n行内容,默认输出前10行
tail
可输出文件的后n行内容,默认输出前10行,同时也可以实时监听文件内容的变化
示例1:假设有一个 demo.txt
,请使用 each
命令,输出该文件的内容
each demo.txt |
示例2:假设有一个 demo.txt
,请使用 head
命令,输出该文件的内容
head demo.txt |
示例3:假设有一个 demo.txt
,请使用 head
命令,输出该文件前3行的内容
head -n 3 demo.txt |
示例4:假设有一个 demo.txt
,请使用 tail
命令,输出该文件最后3行的内容
tail -n 3 demo.txt |
示例5:假设有一个 demo.txt
,请使用 tail
命令,请实时监听该文件的变动
tail -f demo.txt |
软连接
命令:ln -s 原文件或目录 软链接名
作用:类似于 windows 下的快捷方式
示例1:在当前目录下,为 /home
目录创建一个软链接,取名为 Shortcuts
ln -s /home Shortcuts |
示例2:删除 Shortcuts
这个软链接
rm -rf Shortcuts |
警告:执行
rm -rf quickLink
时,quickLink
后一定不要带上/
!因为,你这个软链接指向的是一个目录,你写上 “/” 就代表,删除该目录下的所有东西,而不是删除这个软链接!
历史记录
命令:history [可选参数]
作用:查看输入过的所有命令,或执行历史记录中的某个命令
可选参数:number
,代表查看最后多少个
示例1:查看我输入过的所有命令
history |
示例2:查看最后20条历史记录
history 20 |
示例3:执行历史记录编号为 5 的命令 (这里只是举个栗子,别生搬硬套,否则后果一律自负)
!5 |
如果要执行历史记录中列出来的某条命令,只需要
!
+历史记录编号
即可提醒:一定要看好,你要执行的那条命令是干嘛的,否则我黄某人不承担任何后果!
日期与时间
查看日期与时间、设置日期与时间
查看日期时间
命令:
date
:显示当前日期与时间date "+%Y"
:显示年date "+%m"
:显示月date "+%d"
:显示日date "+%Y年%m月%d %H时%M分%S秒"
:显示年月日时分秒
注意点:
- 注意写引号
- 注意
+
号
示例:显示年月日,时分秒
date "+%Y年%m月%d %H时%M分%S秒" |
设置日期时间
命令:date -s 日期时间字符串
示例:将系统时间设置为 2020-05-10 12:13:14
date -s "2020-05-10 12:13:14" |
注意点:时间日期要写到引号里,因为这是字符串!
查看日历
命令:cal [可选参数] [月份] [年份]
作用:以日历的效果,显示本月的日历
可选参数:
-1
:显示一个月的月历-3
:显示上个月,当前月,下个月的月历-s
:显示星期天为一个星期的第一天,默认-m
:显示星期一为一个星期的第一天-j
:显示今天是今年的第几天-y
:显示本年的日历
注意点:
- 如果
cal
后不带参数,代表显示本月的日历 - 如果
cal
后只带了一个数值x,则代表显示x年的日历
- 如果
cal
后带了2个数值 x 和 y ,则代表显示y年x月
的日历
示例1:显示本月日历
cal |
示例2:显示 2025
年的日历
cal 2025 |
示例3:显示 2020年6月
的日历
cal 6 2020 |
示例4:查看上个月、当月、下个月的日历
cal -3 |
示例5:查看今天是今年中的第几天
cal -j |
示例6:显示今年的日历
cal -y |
搜索与查找
在系统中,根据各种条件来查找你所需要的文件
find
命令:find [搜索范围] [搜索方式] [目标]
作用:在指定的范围内,根据不同的搜索方式,外加搜索目标,进行查找
搜索方式:
-name
:按文件名进行查找,目标为文件名
-user
:按用户进行查找,目标为用户名
-size
:按文件大小进行查找,目标为文件大小
示例1:在 /home
这个范围内,查找文件名为 demo.txt
的文件
find /home -name demo.txt |
示例2:在 /opt
这个范围内,查找属于用户 huangmou
的文件
find /opt -user huangmou |
示例3:在 /home
这个范围内,查找文件大小,小于 10M
的文件
find /home -size -10M |
示例4:在 /home
这个范围内,查找文件大小,大于 10M
的文件
find /home -size +10M |
示例5:在 /home
这个范围内,查找文件大小,等于 10M
的文件
find /home -size 10M |
示例6:在 /home
这个范围内,查找文件大小,等于 2k
的文件
find /home -size 2k |
按文件大小查找,
-
表示小于,+
表示大于,如果没有-
或+
,则代表等于同时,要注意,
M
这个单位是大写的,k
这个单位是小写的
示例7:在 /home
这个范围内,查找文件后缀为 .txt
的文件
find /home -name *.txt |
*
代表通配符
locate
命令:locate 要查找的文件
作用:自动通过 locate的数据库索引
,能够快速的查找要检索的文件
locate
在大数据量下,查找的速度要比 find
快很多
注意点:每次使用 locate
进行查找之前,都必须先执行 updatedb
来更新locate数据库
示例1:查找 demo.txt
updatedb |
grep
命令:grep [可选参数] 要查找的内容
作用:对源文件的内容,进行过滤查找
可选参数:
-n
:显示行号-i
:忽略大小写
grep
通常需要结合 |
进行使用,|
是 管道符
管道符的解释:
例子:A | B
解释:将 A
的内容,交给 B
进行处理
示例1:查找 demo.txt
内的有没有 靓仔
这个词,如果有显示出来
cat demo.txt | grep 靓仔 |
cat demo.txt
得到文件的内容,然后将得到的内容,交给grep
进行过滤查找
示例2:查找 demo.txt
内的有没有 liangzai
这个词,如果有显示出来,并显示行号
cat demo.txt | grep -n liangzai |
示例3:查找 demo.txt
内的有没有 liangzai
这个词,如果有显示出来,不区分大小写
cat demo.txt | grep -i liangzai |
示例4:查找 demo.txt
内的有没有 liangzai
这个词,如果有显示出来,显示行号,不区分大小写
cat demo.txt | grep -ni liangzai |
压缩与解压
对文件或目录进行压缩,或解压
第一种方式
命令
- 压缩:
gzip 要压缩的文件
- 解压:
gunzip 要解压的文件.gz
注意点:使用 gzip
的方式进行压缩,不会保留原文件
示例1:压缩 demo.txt
gzip demo.txt |
示例2:对压缩文件 demo.txt.gz
进行解压
gunzip demo.txt.gz |
第二种方式
命令:
- 压缩:
zip [可选参数] 压缩包名 要压缩的文件或目录
- 解压:
unzip [可选参数] 压缩包名.zip
可选参数:
-r
:压缩整个目录的所有文件-d 保存的位置
:指定压缩包要存放的位置
示例1:压缩 /home
目录下的所有文件,压缩包的名字设置为 demo
zip -r demo.zip /home/ |
示例2:对 demo.zip
进行解压
unzip demo.zip |
示例3:压缩 /home
目录下的所有文件,压缩包的名字设置为 demo
,将压缩包保存到 /temp
下
zip -d /temp/ -r demo.zip /home/ |
示例4:将 demo.zip
解压到 /temp
下
unzip -d /temp/ demo.zip |
提示:要压缩多个文件或目录时,可以写多个,用空格隔开,如:
zip -d /temp/ -r demo.zip a.html b.css c.js d.jpg e.png
第三种方式
命令:tar [可选参数] 压缩包名.tar.gz 要压缩的文件或目录
可选参数:
-c
:生成 tar 压缩文件-v
:显示详细信息-f
:指定压缩后的文件名-z
:开始压缩-x
:解压
示例1:假设 /home
下有 a.txt
、b.js
、c.js
,请将它们压缩为 source.tar.gz
tar -zcvf source.tar.gz a.txt b.js c.js |
示例2:假设 /home
下有很多的文件,我需要对里面的所有文件进行压缩,请将它们压缩为 source.tar.gz
tar -zcvf source.tar.gz /home/ |
或
tar -zcvf source.tar.gz /home/* |
示例3:将 source.tar.gz
解压到当前目录
tar -zxvf source.tar.gz |
示例4:将 source.tar.gz
解压到 /opt
下
tar -zxvf source.tar.gz -C /opt/ |
提示:
-zcvf
:通常用来做压缩的组合命令-zxvf
:通常用来做解压的组合命令- 如果要指定解压到某个目录,前提是这个目录要存在
- 要压缩多个文件或目录时,可以写多个,用空格隔开
Linux系统运行级别
系统运行级别的配置文件位于 /etc/inittab
级别代号 | 作用描述 |
---|---|
0 | 关机 |
1 | 单用户,找回丢失密码(如果使用远程登录的方式,则无法修改) |
2 | 多用户,无网络 |
3 | 多用户,有网络 |
4 | 暂时作用,属于保留代号,未来或许会有别的作用 |
5 | 图形化界面 |
6 | 重启 |
系统运行级别,就类似于我们的windows里,会有 以 “安全模式”、“无网络安全模式” 等方式进入系统的选项
切换系统运行级别
命令:init 级别代号
示例:我当前是在图形化界面,我要切换到命令行模式,也就是 多用户,有网络
的模式
init 3 |
组管理
前言:
Linux系统中,每一个用户至少属于一个组
Linux系统中,每一个文件,都有自己的所有者、所在组、其他组的概念
文件:
- 所有者:该文件是谁的
- 所在组:该文件属于哪个组的,默认情况下,文件的所有者属于哪个组,文件就属于哪个组
- 其他组:除了文件所在的组,都属于其他组
一般情况下,谁创建了这个文件,这个文件的所有者就是谁
查看所有者
命令:ls -l
作用:显示当前目录下的文件或目录信息
假设我们有一个用户叫 wangyue
,使用该用户创建一个 a.txt
,执行命令后,我们会得到以下信息
-rw-rw-r-- wangyue wangyue 0 5月 1 18:55 a.txt |
第一个 wangyue
是这个文件的所有者
第二个 wangyue
是这个文件所在的组
接下来我们再通过 id wangyue
查看 wangyue
这个用户的信息
uid=1000 (wangyue) gid=1000 (wangyue) 组=1000 (wangyue) |
现在我们可以看到,wangyue
这个用户属于 wangyue
组,而 a.txt
被这个用户创建后,文件所在的组,一般情况下,默认就是与创建它的用户相同
改变文件所有者
命令:chown 新的所有者 文件名
作用:将一个文件的所有者,修改成另一个
示例:假设我们有 root
和 wangyue
两个用户,root
用户创建了一个 demo.txt
,默认情况下,该 demo.txt
的所有者,就是它的创建者 root
,请将 demo.txt
的所有者改成 wangyue
chown wangyue demo.txt |
改变文件所在组
命令:chgrp 新的组名 文件名
作用:将一个文件所在的组,修改成另一个组
示例:假设我们有 root
和 wangyue
两个用户,root
用户创建了一个 demo.txt
,默认情况下,该 demo.txt
的所有者所在的组,就是该文件所在的组 root
。请创建一个新的组,组名为 test
,然后将 demo.txt
的所在组改成 test
。
创建 test
组
groupadd test |
修改 demo.txt
的所在组为 test
chgrp test demo.txt |
改变用户所在组
命令:usermod -g 新的组名 用户名
作用:将用户的所在组,改成另一个组
示例:假设我们有 huangmou
这个用户,这个用户所在的组默认与他用户名相同,也是叫 huangmou
,此刻,我系统还有另一个组,叫 liangzai
,请将 huangmou
这个用户的所在组,修改到 liangzai
组内
usermod -g liangzai huangmou |
除了上面这个指令可以更改用户所在组之外,还有另一个:
usermod -d 目录名 用户名
:作用是改变用户登录的初始目录,也就是主目录