0%

Linux学习笔记

Linux介绍

Linux是一个免费的、开源的操作系统

Linux的作者是 林纳斯,Linux的吉祥物是 企鹅,英文叫 tux


Linux的特点

  • 免费
  • 开源
  • 安全
  • 高效
  • 稳定
  • 处理高并发强

Linux和windows比较

比较    windowsLinux
价格收费免费
软件数量和质量占优势,但大部分软件收费,由微软官方提供支持基本免费,由全球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,那么 vimvi 有什么区别吗?其实,vim可以看作是 vi的升级版,功能更强大,我们就使用 vim就可以了

vim三种模式

  • 命令行模式:此模式下,可以输入 vim 命令进行各种操作

当你打开一个文件后,当前的状态就处于命令行模式。

当你在插入模式下,按下 ESC 键,那么也会来到命令行模式

  • 插入模式:此模式下,你可以往文件里输入内容

在命令行模式下,按下 aiAIOoRJ任意一个,可进入插入模式,按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

注意点:

  1. 如果在创建一个用户时,没有指明这个用户属于哪个组,那么系统会自动为这个用户创建一个组,并将该用户置入该组内,组名与用户名一样。
  2. 当用户创建成功后,会自动创建一个跟用户同名的主目录
  3. 也可以通过 useradd -d 指定目录 用户名 的方式,给新创建的用户指定主目录。如果通过这种方式,指定目录 必须不存在,否则无法创建用户,也就是说,你不要往一个已经存在的目录下创建用户,系统会自动帮你创建的
  4. 如果在创建用户的时候指定了该用户所存在的组,则这个组必须存在,例如你想将黄某安排进研发部门,那么 研发部门 必须先存在才行吧?如果这个部门都不存在,你怎么安排?

设置或修改密码

命令: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号
  • :该用户属于哪个组

如果该用户不存在,则显示 无此用户

查看当前用户

命令:whoamiwho 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
usermod -g feiwu huangmou

文件目录

对各种文件或目录进行的操作

目录路径

命令: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.txttest2.jstest3.css 三个文件

touch test1.txt test2.js test.css

复制

命令:cp [可选参数] 被复制的目标 粘贴的位置

作用:将一个文件或目录进行复制到别的地方

可选参数:

  • -r:递归复制目录下的所有文件

示例1:假设当前目录下有一个 叫 source 的空文件夹,和一个 demo.txt 文件,请将 demo.txt 复制到 source 文件夹内

cp demo.txt source

示例2:假设当前目录下,有 ab 两个文件夹,a 文件夹内有 n 个文件,b 文件夹是空的,请将 a 内的所有文件,全部复制到 b

cp -r a/* b

示例3:假设当前目录下,有 ab 两个文件夹,a 文件夹内有 n 个文件,b 文件夹是空的,请将 a 文件夹,复制到 b

cp -r a b

提示:

  1. 被复制目标后跟 /* 代表其下的所有文件,如果没有写 /*,则代表复制文件夹
  2. 有时候你要复制过去的位置,已经存在相同的文件或目录,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:有 oldnew 两个文件夹,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全屏状态下,以分页的方式查看文件

lessmore 最大的区别在于,less 性能更好,速度更快,因为 more 是一次性将整个文件的内容都加载,而 less 则类似 “按需加载”,在查看大文件的时候,less 的性能要比 more 大很多

less状态下具备的操作

操作功能
空格向下翻一页
回车向下翻一行
pagedown向下翻一页
pageup向上翻一页
/字符串向下查找[字符串],n:向下查找,N:向上查找
?字符串向上查找[字符串],n:向下查找,N:向上查找
q退出分页状态,且不再显示该文件内容

示例:以more分页的状态,查看 /etc/profile 的内容

less /etc/profile

写入内容

命令:

  • 内容 > 文件名
  • 内容 >> 文件名

作用:

  • > 是将左边的内容,写入到右边的文件。
  • >> 是将左边的内容,追加到右边的文件。

注意点:

  1. > 是写入,是会覆盖原文件的内容的。而 >> 仅仅是往文件的末尾,进行内容的追加,不会覆盖原有的内容
  2. 如果右边的文件不存在,则会自动创建该文件

示例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
cal > date.txt
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秒" :显示年月日时分秒

注意点:

  1. 注意写引号
  2. 注意 +

示例:显示年月日,时分秒

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:显示本年的日历

注意点:

  1. 如果 cal 后不带参数,代表显示本月的日历
  2. 如果 cal 后只带了一个数值x,则代表显示 x年的日历
  3. 如果 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
locate demo.txt

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.txtb.jsc.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/

提示:

  1. -zcvf :通常用来做压缩的组合命令
  2. -zxvf:通常用来做解压的组合命令
  3. 如果要指定解压到某个目录,前提是这个目录要存在
  4. 要压缩多个文件或目录时,可以写多个,用空格隔开


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 新的所有者 文件名

作用:将一个文件的所有者,修改成另一个

示例:假设我们有 rootwangyue 两个用户,root 用户创建了一个 demo.txt ,默认情况下,该 demo.txt 的所有者,就是它的创建者 root,请将 demo.txt 的所有者改成 wangyue

chown wangyue demo.txt

改变文件所在组

命令:chgrp 新的组名 文件名

作用:将一个文件所在的组,修改成另一个组

示例:假设我们有 rootwangyue 两个用户,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 目录名 用户名:作用是改变用户登录的初始目录,也就是主目录

-------------本文结束    感谢阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!