Linux

cccs7 Lv5

Linux

参考

[韩顺平一周学会Linux](【【小白入门 通俗易懂】2021韩顺平 一周学会Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=28&share_source=copy_web&vd_source=72700974488313ca2dbc27bc0ae377e9 )

<鸟哥的 Linux 私房菜 基础学习篇(第四版)>


Linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到 Linux/Unix 系统上


Linux 基础

目录结构

基本介绍

  • Linux的文件系统是采用 级层式的树状目录结构,在此结构中的最上层是根目录 “/”,然后在此目录下再创建其他的目录
  • 深刻理解 Linux 树状文件目录是非常重要的
  • 在 Linux 的世界里,一切皆文件

具体的目录结构

  • /bin [常用] (/usr/bin 、/usr/local/bin )

    是 Binary 的缩写,这个目录存放着最经常使用的命令

  • /sbin (/usr/sbin、/usr/local/sbin)

    s 就是 SuperUser 的意思,这里存放的是系统管理员使用的系统管理程序

  • /home [常用]

    存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般目录名是以用户的账户命名。

  • /root [常用]

    该目录为系统管理员,也称为 超级权限者的用户主目录

  • /etc

    系统主要的配置文件

  • /lib

    系统开机所需的最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库

  • /lost + found

    这个目录一般是空的 ,当系统非法关机后,这里就存放一些文件

  • /usr [常用]

    这是一个非常重要的目录,用户的很多程序和文件都放在这个目录下,类似于 Windows 下的program files 目录

  • /boot [常用]

    存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及 镜像文件

  • /proc [不能动]

    这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息

  • /srv [不能动]

    service 缩写,该目录存放一些服务器启动以后需要提取的数据

  • /sys [不能动]

    这是 Linux 2.6 内核的一个很大的变化。该目录下安装了 2.6内核中 新出现的一个文件系统 sysfs => [不能动]

  • /tmp

    这个目录是用来存放一些临时文件的

  • /dev

    类似于 Windows 的设备管理器,把所有的硬件用文件的方式存储

  • /media [常用]

    Linux 系统会自动识别一些设备,例如 U盘,光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下面

  • /mnt [常用]

    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在 /mnt/ 上,然后进入该目录就可以查看里面的内容了 d:/myshare

  • /opt

    这是给主机额外的安装软件所存放的目录

  • /usr/local [常用]

    这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序

  • /var [常用]

    这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件

  • /selinux [security-enhanced linux]

    SELinux 是一种安全子系统,他能控制程序只能访问特定文件,有三种工作模式,可以自行设置


Linux 实操

远程登录到 Linux 服务器


Vi 和 Vim


Vi 和 Vim 的基本介绍

Linux 系统会内置 Vi 文本编辑器

Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序中广泛使用


Vi 和 Vim 常用的三种模式

正常模式

以 Vim 打开一个档案就直接进入一般模式了(这是 默认的模式)。在这个 模式中,你可以使用【上下左右】按键来移动光标,你可以使用 【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、粘贴】 来处理你的文件数据


插入模式

按下 i、I、o、O、a、A、r、R 等任何一个字母才会进入编辑模式,一般来说按 i 即可。


命令行模式

输入 esc 再输入:在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作 则是在此模式中达成 的。


Vi 和 Vim 的基本使用


各种模式的相互切换

image-20230217200259605

Vi 和 Vim 的快捷键

  • 拷贝当前行yy,拷贝当前行向下的5行5yy,并粘贴(输入p)。
  • 删除当前行 dd,删除当前行向下的5行5dd
  • 在文件中查找某个单词[命令行下/关键字,回车查找,输入n就是查找下一个]
  • 设置文件的行号,取消文件的行号[命令行下:setnu和:setnonu]
  • 编辑/etc/profile文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
  • 在一个文件中输入”hello”,在一般模式下,然后又撤销这个动作 u
  • 编辑 /etc/profile文件,在一般模式下,并将光标移动到,输入20,再输入shift+g
  • 更多的看整理的文档

快捷键的键盘对应图
image-20230217200555821

开机、重启和用户 登录注销


关机 & 重启命令

基本介绍
  • shutdown - h now 立刻进行关机
  • shutdown - h 1 一分钟后就会关机
  • shutdown -r now 现在重新启动计算机
  • halt 关机,作用和上面一样
  • reboot 现在重新 启动计算机
  • sync 把内存的数据同步到磁盘

注意细节
  • 不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中
  • 目前的 shutdown/reboot/halt 命令均已经在进行了 sync

用户登录和注销

基本介绍
  • 登录时尽量少用 root 账号登录, 因为他是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用 “su - 用户名” 命令来切换成系统管理员身份
  • 在提示符下输入 logout 即可注销用户

使用细节
  • logout 注销指令在图形运行级别无效,在运行级别 3 下有效

用户管理


基本介绍

Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统


添加用户

基本用户

useradd 用户名


细节说明
  1. 当创建用户成功后,会自动的创建和用户同名的家目录
  2. 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录

指定/修改密码

基本语法

passwd 用户


删除用户

基本语法

userdel 用户名


查询用户信息指令

基本语法

id 用户名


细节说明

当用户不存在时,返回无此用户


切换用户

介绍

在 操作 Linux 中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如 root


基本语法

su - 切换用户名


细节说明
  1. 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
  2. 当需要返回到原来用户时,使用 exit/logout 指令

查看当前用户/登录用户

基本语法

whoami / who am I


用户组

介绍

类似于角色,系统可以对有公共性/权限 的多个用户进行统一的管理


新增组

指令 : groupadd 组名


删除组

指令(基本语法): groupdel 组名


修改用户的组

指令(基本语法):usermod -g 用户组 用户名


用户和组相关文件

/etc/passwd 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell


/etc/shadow 文件

口令的配置文件

每行的含义 : 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志


/etc/group 文件

组(group)的配置文件,记录Linux 包含的 组的信息

每行含义: 组名:口令:组标识号:组内用户列表

实用指令


指定运行级别

基本介绍

运行级别说明

  • 0 : 关机
  • 1 :单用户【找回丢失密码】
  • 2 :多用户状态没有网络服务
  • 3 : 多用户状态有网络服务
  • 4 : 系统未使用保留给用户
  • 5 :图形界面
  • 6 :系统重启

常用运行级别是 3、5,也可以自己指定默认运行级别


帮助指令

man 获得帮助信息

基本语法man [命令或 配置信息] (功能信息:获得帮助信息)


help 指令

基本语法help 指令 (功能描述:获得 shell 内置命令的帮助信息)


文件目录类

pwd 指令

基本语法:pwd (功能描述:显示 当前工作目录的绝对路径)


ls 指令

基本语法 ls [选项][目录或者文件]

常用选项

  1. -a : 显示当前目录所有文件和目录,包括隐藏的
  2. -l : 以列表的方式显示信息

cd 指令

基本语法 cd [参数] (功能描述:切换到指定目录)

cd ~ 或者 cd : 回到自己的家目录

cd .. : 回到当前目录的上一级目录


mkdir 指令

mkdir 指令用于创建目录

基本用法mkdir [选项] 要创建的目录

常用选项

-p : 创建多级目录 mkdir -p /home/a


rmdir 指令删除空目录

基本语法

rmdir [选项] 要删除的空目录


使用细节

rmdir 删除的是空目录,如果目录下有内容时是无法删除的

提示 : 如果需要删除非空目录,需要使用 rm -rf 要删除的目录


touch 指令

touch 指令创建空文件

基本语法

touch 文件名称


cp 指令

cp 指令拷贝文件到指定目录

基本语法

cp [选项] source dest

常用选项

-r : 递归复制整个文件夹

案例

  • 将 /home/hello.txt 拷贝到 /home/bbb 目录下
    • cp hello.txt /home/bbb
  • 递归复制整个文件夹,将 /home/bbb 整个目录,拷贝到 /opt
    • cp -r /home/bbb /opt

使用细节

强制覆盖不提示的方法 : \cp \cp -r /home/bbb /opt


rm 指令

说明 : rm 指令移除文件或目录

基本语法

rm [选项] 要删除的文件或目录

常用选项

  • -r : 递归删除整个文件夹
  • -f : 强制删除不提示

使用细节

强制删除不提示的方法: 带上 -f 参数即可


mv 指令

mv 移动文件与目录或重命名

基本语法

mv oldNameFile newNameFile (功能描述:重命名)

mv /temp/movefile targetFolder (功能描述 : 移动文件)


cat 指令

cat 查看文件内容

基本语法

cat [选项] 要查看的文件

常用选项

-n : 显示行号

使用细节

  • cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
  • cat -n /etc/profile | more [进行交互]

more 指令

more 指令是一个基于 VI 的文本过滤器,他以全屏幕的方式按页显示文本文件的内容。more 指令中 内置了若干快捷键(交互的指令)

基本语法

more 要查看的文件

image-20230218113658925
less 指令

less 指令用来分屏查看文件内容,他的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次就一整个文件加载之后显示,而是根据显示需要 加载内容,对于显示大型文件具有较高的效率

基本语法

less 要查看的文件

操作说明

image-20230218114230175
echo 指令

echo 输出内容到控制台

基本语法

echo [选项] [输出内容]

案例

使用 echo 指令输出环境变量,比如输出 $PATH $HOSTNAME, echo $HOSTNAME


head 指令

head用于显示文件的开头部分,默认情况下 head 指令显示文件的前 10 行内容

基本语法

head 文件 (功能描述: 查看 文件头 10 行内容)

head -n 5 (功能描述 : 查看文件头5 行内容,5 可以是任意行数)

应用案例

查看 /etc/profile 的前面 5 行代码

head -n 5 /etc/profile


tail 指令

tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的 前 10 行内容

基本用法

  • tail 文件 (功能描述:查看文件尾部 10 行内容)
  • tail -n 5 (功能描述:查看 文件 尾 5 行内容)
  • tail -f (功能描述:实时追踪该文件的所有更新)

> 指令 和 >> 指令

> 输出重定向 和 >> 追加

基本语法

  • ls -l > 文件 (功能描述 : 列表的内容写入到文件 a.txt 中 (覆盖写))
  • ls -al >> 文件 (功能描述 : 列表的内容追加到 文件 aa.txt 的末尾)
  • cat 文件 1 > 文件 2 (功能描述 : 将文件 1 的内容覆盖到 文件 2 )
  • echo "内容" >> 文件(追加)

应用实例

将 /home 目录下的文件列表 写入到 /home/info.txt 中,覆盖写入

ls -l /home > /home/info.txt 如果 info.txt 没有,则会创建


ln 指令

软链接也称为 符号链接,类似于 Windows 里面的 快捷模式,主要 存放了链接其他文件的路径

基本用法

在 /home 下创建一个 软链接 myroot,链接到 /root 目录

ln -s /root /home/myroot

删除 软链接 myroot

rm /home/myroot

细节说明

当我们使用 pwd 指令查看当前目录时,仍然看到的是 软链接所在目录


搜索查找类

find 指令

find 指令 将从指令目录向下递归地遍历其各个子目录,将满足条件的目录或文件显示在 终端

基本语法

find [搜索范围] [选项]

image-20230221162525103

应用实例

按 文件名: 根据名称 查找 /home 目录下 的 hello.txt 文件

find /home -name hello.txt

按拥有者 : 查找 /opt 目录下,用户名称为 nobody 的文件

find /opt -user nobody

查找 整个 Linux 系统下 大于 200M 的文件( +n 大于 -n 小于 n 等于)

find / -size +200M


locate 指令

locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新 locate 时刻

基本语法

locate 搜索文件

特别说明

由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令 创建 locate 数据库


grep 和 管道符号 |

grep 过滤查找

| 表示 将前一个命令的处理结果输出传递给后面的命令处理

基本语法

grep [选项] 查找内容 源文件

常用选项

image-20230221185707501

应用实例

在 hello.txt 文件中,查找 “yes” 所在行,并显示 行号

  • cat /home/hello.txt | grep "yes"
  • grep -n "yes" /home/hello.txt

压缩和解压类

gzip/gunzip 指令

gzip 用于压缩文件,gunzip 用于解压的

基本语法

  • gzip 文件 (功能描述:压缩文件,只能将文件压缩为 *.zip 文件)
  • gunzip 文件.gz (功能描述 : 解压缩文件命令)

应用案例

gzip 压缩,将 /home 下的 hello.txt 文件进行压缩

gzip /home/hello.txt

gunzip 压缩,将 /home 下的 hello.txt.gz 文件进行解压


zip / unzip 指令

zip 用于 压缩文件,unzip 用于解压。这个在项目打包发布中很有用

基本语法

zip [选项] XXX.zip 将要压缩的内容 (功能描述 : 压缩文件和目录的命令)

unzip [选项] XXX.zip (功能描述:解压缩文件)

zip 常用选项

-r : 递归压缩,及压缩目录

unzip 常用选项

-d<目录>: 指令解压后文件存放目录

应用实例

将 /home 下的所有文件/文件夹 进行压缩成 myhome.zip

zip -r myhome.zip /home/ [将 home 目录及其包含的文件和子文件夹都进行压缩]

将 myhome.zip 解压到 /opt/tmp 目录下

mkdir /opt.tmp

unzip -d /opt/tmp /home/myhome.zip


tar 指令

tar 指令 是 打包指令,最后打包后的文件是 .tar.gz 文件

基本语法

tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式 .tar.gz)

选项说明

image-20230221191656694

应用案例

压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

将 /home 的文件夹压缩成 myhome.tar.gz

tar -zcvf myhome.tar.gz /home/

将 pc.tar.gz 解压到当前目录

tar -zxvf pc.tar.gz

将 myhome.tar.gz 解压到 /opt/tmp2 目录下

  • mkdir /opt/tmp2
  • tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

组管理和权限管理


Linux 组基本介绍

在 Linux 中的每个用户必须属于一个组,不能独立于组外。在 Linux 中 每个文件有 所有者、所在组、其他组的概念

  • 所有者
  • 所在组
  • 其他组
  • 改变用户所在的组

文件/目录 所有者

一般为 文件的创建者,谁创建了该文件,就自然的成为该文件的所有者

查看文件的所有者

指令 : ls -ahl

修改文件的所有者

指令: chown 用户名 文件名

组的创建

基本指令

groupadd 组名

应用实例

创建一个组

groupadd monster

创建一个用户 fox,并放入到 monster 组中

useradd -g monster fox

文件/目录 所在组

当某个用户创建了一个文件之后,这个文件的所在组就是该用户所在的组(默认)

查看文件 / 目录所在组

基本指令

ls -ahl

修改文件 / 目录所在组

基本指令

chgrp 组名 文件名

应用实例

使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组

groupadd fruit

touch orange.txt

chgrp fruit orange.txt

其他组

除文件的所有者和所在组之外,系统的其他用户都是文件的其他组

改变用户所在组

在添加用户时,可以指令将该用户添加到哪个组中,同样用 root 的管理权限可以改变某个用户所在的组

改变用户所在组

usermod -g 新组名 用户名

useradd -d 目录名 用户名 改变该用户登陆的初始目录。 特别说明: 用户需要有进入新目录的权限

权限的基本介绍

ls -l 中显示的内容如下

1
-rwxrw-r-- l root root 1213 DATE

0 - 9 位说明

第 0 位 确定文件类型(d,-,1,c,b)

  • 1 是链接,相当于 Windows 的快捷方式
  • d 是目录,相当于 Windows 的文件夹
  • c 是字符设备文件,鼠标,键盘
  • b 是块设备,比如键盘

第 1 - 3 位确定 所有者 (该文件 的所有者)拥有该文件的权限 –User

第 4 - 6 位确定 所属者 (同用户的组)拥有该文件的权限 –Group

第 7 - 9 位确定 其他用户 拥有该文件的权限 –Other

rwx 权限详解

rwx 作用到文件
  1. [ r ] 代表可读(read):可以读取,查看
  2. [ w ] 代表可写(write) :可以修改,但是不代表可以删除该软件,删除一个文件的前提条件是对该文件所在的目录有写权限。才能删除该文件
  3. [ x ] 代表可执行(execute ):可以被执行
rwx 作用到目录
  1. [ r ] 代表可读(read):可以读取, ls 查看目录内容
  2. [ w ] 代表可写(write ):可以修改,对目录内创建 + 删除 + 重命名 目录
  3. [ x ] 代表可执行(execute) : 可以进入该目录

文件及目录权限实际案例

ls -l 中显示的内容
image-20230222160313841

10 个字符确定不同用户能对文件做什么

  • 第一个字符代表文件类型 : -1 d c b
  • 其余字符 每 3 个一组(rwx)
    • 读(r)
    • 写(w)
    • 执行(x)
  • 第一组 rwx : 文件的拥有者的权限是 读写和执行
  • 第二组 rw- : 与文件拥有者同一组的用户的权限是 读、写 但不能 执行
  • 第三组 r– : 不与文件拥有者同组的其他用户的权限是读,不能写,不能执行
  • 可用数字表示为 : r=4,w=2,x=1 因此 rwx = 7,数字可以进行组合
  • 其他说明
    • 1 文件:硬连接数 或目录 : 子目录数
    • root 用户
    • root 组
    • 1213 文件大小,如果是文件夹,显示 4096

修改权限 - chmod

基本说明

通过 chmod 指令,可以 修改 文件或者目录 的权限

第一种方式 : +、-、= 变更权限

u : 所有者 g : 所有组 o : 其他人 a : 所有人 (u、g、o 的 总和)

  1. chmod u=rwx,g=rx,o=x 文件/目录名
  2. chmod o+w 文件/目录名
  3. chmod a-x 文件/目录名

案例演示

  1. 给 abc 文件 的所有者读写执行的权限,给所在组读 执行权限,给其他组读 执行权限

    chmod u=rwx,g=rx,o=rx abc

  2. 给abc 文件的文件所有者除去执行的权限,增加组写的权限

    chmod u-x,g+w abc

  3. 给 abc 文件的所有用户添加读的权限

    chmod a+r abc

第二种方式 : 通过数字变更权限

r = 4, w = 2, x = 1 rwx = 7

chmod u=rwx,g=rx,o=x 文件目录名

相当于 chmod 751 文件目录名

修改文件所有者 - chown

基本介绍

chown newowner 文件/目录 改变所有者

chown newowner:newgroup 文件/目录 改变所有者和所在组

-R: 如果是目录,则使其下所有子文件或目录递归生效


案例演示

请将 /home/abc.txt 文件的所有者修改成 tom

chown tom /home/abc.txt


请将 /home/test 目录下所有的文件和目录的所有者都修改为 tom

chown -R tom /home/test

修改文件/目录所在组 - chgrp

基本介绍

chgrp newgroup 文件/目录 改变所在组


案例演示

请将 /home/abc.txt 文件所在组修改成 cs7eric

groupadd cs7eric

chgrp cs7eric /home/abc.txt


请将 /home/test 目录下的所有文件和目录的所在组都修改成 cs7eric

chgrp -R cs7eric /home/test

定时任务调度


crond 任务调度

crontab 进行 定时任务的设置

概述

任务调度:是指系统在某个时间执行的特定的命令或程序

任务调度分类:系统工作 :有些重要的工作必须周而复始的执行,如病毒扫描

个别用户工作:个别用户可能希望执行某些程序,比如对 MySQL 数据库的备份

示意图

image-20230223152103087
基本语法

crontab [选项]

常用选项
image-20230223152151618
快速入门

设置任务调度文件 :/etc/crontab

设置个人任务调度。执行 : crontab -e 命令

接着输入任务到调度文件

如 :

*/1**** ls -l /etc/ > /tmp/to.txt

意思是 每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令


参数细节说明

5 个 占位符的说明

image-20230223153522614
特殊符号的说明
image-20230223153609832
特殊时间执行案例
image-20230223153714803

星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易混乱


应用案例

每隔一分钟,就将当前的日期信息,追加到 /tmp/mydate 中

*/1 **** date >> /tmp/mydate


每隔 1 分钟,将当前日期和日历都追加到 /home/mycal 文件中

  1. vim /home/my.sh 写入内容 date >> /home/mycalcal >> /home/mycal
  2. 给 my.sh 增加执行权限, chmod u+x /home/my.sh
  3. crontab -e 增加 */1**** /home/my.sh

每天凌晨两点 将 MySQL 数据库 testdb , 备份到文件中,指令为 : mysqldump -u root -p 密码 数据库 > /home/db.bak

  1. crontab -e
  2. 0 2 * * * mysqldump -u -root -pC020611. testdb >> /home/db.bak
crontab 相关指令

crontab -r : 终止任务调度

crontab -l : 列出当前有哪些任务调度

service crond restart [重启任务调度]

at 定时任务

基本介绍
  1. at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式来运行,检查作业队列来运行

  2. 默认情况下,atd 守护进程每 60 s 检查作业队列,如果时间与当前时间匹配,则 运行此作业

  3. at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了

  4. 在 使用 at 命令的时候,一定要保证 atd 进程的启动,可以使用相关指令来查看 ps -ef | grep atd 可以检测 atd 是否 在运行

  5. 示意图

    image-20230301223907409
at 命令格式

at [选项] [时间]

ctrl + D 结束 at 命令 的输入,输出两次

at 命令选项
image-20230301224201321
at 时间定义

at 指定时间的方法

  1. 接受在当天的 hh:mm (小时:分钟)式的时间指定。假如该时间已经过去,那么就放在第二天执行。
  2. 使用 midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间
  3. 采用 12 小时计时制,
  • Title: Linux
  • Author: cccs7
  • Created at: 2023-02-27 16:06:02
  • Updated at: 2023-06-29 23:12:45
  • Link: https://blog.cccs7.icu/2023/02/27/Linux/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
Linux