Liunx系统使用超详细(四)~文件/文本相关命令1

 

目录

一、mkdir命令

1.1基本语法

1.2常用示例

1.2.1创建目录

1.2.2创建多级目录

1.2.3设置权限

1.2.4递归修改权限

1.2.5显示帮助信息

二、touch命令

2.1基本语法

2.2常用示例

2.2.1创建新的空文件

2.2.2更新现有文件的访问和修改时间戳

2.2.3创建多个文件

2.2.4通过参考文件设置新文件的时间戳

2.2.5使用指定的时间戳创建新文件

三、mv命令

3.1语法格式

3.2常用示例

3.2.1将文件移动到目标目录(将文件从一个目录移动到另一个目录):

3.2.2重命名文件:

3.2.3移动并重命名文件:

四、cp命令

4.1基本语法

4.2常用示例

4.2.1复制文件到目标位置

4.2.2复制目录及其内容到目标位置

4.2.3复制多个文件到目标位置

4.2.4仅复制源目录中更新的文件到目标目录

4.2.5复制并重命名文件

五、删除命令(rm/rmdir)

5.1 rm 命令

5.1.1基本语法

5.1.2示例用法

5.2 rmdir 命令

5.2.1基本语法

5.2.2示例用法:

六、chmod命令

6.1数字表示基本语法

6.2数字表示用法示例

6.3符号表示语法格式

6.4符号表述用法示例

七、chown命令

7.1基本语法

7.2示例用法

八、wc命令

8.1基本语法

8.2示例用法

九、find命令

9.1基本语法

9.2 示例用法

(一)按照文件名查找

(二)按照文件的类型查找

(三)按照用户和组查找

(四)按照被读取/被修改的时间查找 

(五)按照文件大小查找

十、cat命令 

10.1基本语法

10.2示例用法

十一、grep命令(三剑客之一)

11.1基本语法

11.2用法示例

11.2.1通配符 

11.2.2转义符

十二、sed命令(三剑客之一) 

12.1基本语法

12.2用法示例

12.2.1动作一:p打印

12.2.2动作二:d删除 

12.2.3动作三:s替换 

12.2.3.1部分数据替换

12.2.3.2 标签在替换中的使用 

12.2.3.3 &在替换中的使用

12.2.4动作四:c取代

12.2.5动作五:a新增


篇前小知识:

假如在Liunx中遇到我们不熟悉的命令或者不认识的命令时,应该怎么办?以下几种方法可以帮助大家快速了解:

1.使用man命令来查看一个命令的用法和帮助文档

要查看命令的用法,只需在终端中输入man命令,后跟你想要了解的命令的名称。例如,要查看ls命令的用法,可以执行以下命令:

man ls

显示与ls命令相关的详细信息,包括命令的描述、用法示例、选项和参数等等。你可以使用箭头键上下滚动阅读文档,按Q键(大写Q)退出。

2.使用命令后加上--help选项来获取简短的用法提示

例如,要查看grep命令的用法,可以执行以下命令:

grep --help

部分结果展示:

3.whatis命令

用于显示给定命令的简短描述或帮助信息。它通常用于查找命令的用法和功能。

要使用whatis命令,只需在终端中输入以下内容:

whatis 命令名

将"命令名"替换为您想要查找的实际命令名称。

例如,如果您要查找ls命令的简短描述,可以运行以下命令:

whatis ls

返回与该命令相关的简短描述

4.通过网络途径,上网查询

一、mkdir命令

mkdir命令用于在Linux中创建新的文件夹或目录

1.1基本语法

mkdir [选项] 目录名

常用选项包括:

  • -m:指定新创建目录的权限。例如,mkdir -m 755 directoryname将创建一个具有所有者读、写、执行权限,其他用户有读和执行权限的目录。默认权限为777。

  • -p:递归创建目录,即如果指定的目录路径中的某些目录不存在,也会一并创建。例如,mkdir -p /path/to/newdirectory会创建路径中所有不存在的目录。

1.2常用示例

以下是一些常见的Linux文件夹或目录相关的操作:

1.2.1创建目录

使用mkdir命令来创建新的目录。例如,要创建以下几个目录,可以执行以下命令:

--创建目录:csy
mkdir csy--创建目录:csybackup
mkdir csybackup--创建目录:csyothers
mkdir csyothers

使用ls命令列出指定目录中的文件和子目录。例如,要列出当前目录的内容,可以执行以下命令:

使用cd命令进入指定的目录。例如,要进入myfolder目录,可以执行以下命令: 

cd csy

使用pwd命令来显示当前所在的目录路径。例如,要查看当前目录的路径,可以执行以下命令:

1.2.2创建多级目录

使用-p选项可以创建多级目录,如果父级目录不存在,则会同时创建父级目录。格式如下:

mkdir -p parent_directory/child_directory

比如创建csy/fail1,csy1/fail1,执行以下命令:

mkdir -p csy/fail1
mkdir -p csy1/fail1

 查看创建的目录/文件夹:

1.2.3设置权限

使用-m选项来设置新创建目录的权限。权限可以使用八进制数表示,例如755表示所有者有读、写、执行权限,而其他用户只有读和执行权限。格式如下:

mkdir -m 755 directory_name

比如给csy2目录设置权限为755:

mkdir -m 755 csy2

查看权限:

提示:

查看mkdir文件或目录的权限,可以使用ls -l命令。

查看文件或目录权限的步骤:

  1. 打开终端(对于Linux或Mac用户)或命令提示符(对于Windows用户)。
  2. 导航到想要查看权限的文件或目录所在的位置。例如,如果目标文件或目录位于/path/to/directory,则可以使用cd /path/to/directory命令导航到该目录。
  3. 输入ls -l命令并按Enter键执行。这将显示指定目录中的所有文件和子目录以及它们的权限信息。

在返回的列表中,每个文件或目录的权限由9个字符表示。这些字符表示了三组权限:所有者权限、组权限和其他用户的权限。每组权限包括读取(r)、写入(w)和执行(x)权限。其中,r表示读取权限,w表示写入权限,x表示执行权限。如果没有该权限,则会显示短横线(-)。

  • 777 表示所有者、群组和其他用户都具有读取(4)、写入(2)和执行(1)文件或目录的权限。也就是说,所有人都可以对该文件或目录进行读取、写入和执行操作。
  • 755 表示所有者具有读取、写入和执行的权限,而群组和其他用户只有读取和执行的权限。这意味着只有所有者可以对文件或目录进行写入操作,而群组和其他用户只能读取和执行。

例如,以下是一个示例输出:

drwxr-xr-x 2 user group 4096 Oct 5 09:55 directory
-rw-r--r-- 1 user group 1024 Oct 5 09:54 file.txt

文件夹directory的权限为drwxr-xr-x,文件file.txt的权限为rw-r--r--

要解读权限,请注意每个权限组的顺序:

  • 第一位:如果是d,则表示是一个目录;如果是-,则表示是一个文件。
  • 后续9位:分为三组,每组3个字符。第一组表示所有者的权限,第二组表示组权限,第三组表示其他用户的权限。

那么drwxr-xr-x可以解读为:

  • d:表示是一个目录
  • rwx:所有者具有读取、写入和执行权限
  • r-x:组用户具有读取和执行权限
  • r-x:其他用户具有读取和执行权限

因此上面图中显示则可以解释为:

  • anaconda-ks.cfg:rw-------,只有root用户具有读取和写入权限。
  • csy:drwxr-xr-x,所有者(root用户)具有读取、写入和执行权限,组用户和其他用户具有读取和执行权限。
  • csy1:drwxr-xr-x,所有者(root用户)具有读取、写入和执行权限,组用户和其他用户有读取和执行权限。
  • csy2:drwxr-xr-x,所有者(root用户)具有读取、写入和执行权限,组用户和其他用户有读取和执行权限。
  • csybackup:drwxr-xr-x,所有者(root用户)具有读取、写入和执行权限,组用户和其他用户有读取和执行权限。
  • csyothers:drwxr-xr-x,所有者(root用户)具有读取、写入和执行权限,组用户和其他用户有读取和执行权限。

权限相关内容请看章节六、chmod命令!!!

1.2.4递归修改权限

使用-m选项结合-p选项可以递归地修改目录及其子目录的权限。 格式如下:

mkdir -m 755 -p parent_directory/child_directory

比如:

mkdir -m 755 -p csy3/file1

查看权限:

1.2.5显示帮助信息

使用--help选项可以显示mkdir命令的帮助信息,包括可用选项和示例。

二、touch命令

touch命令用于创建新的空文件或更新已有文件的访问和修改时间戳。如果指定的文件不存在,touch会创建一个新的空文件。 

2.1基本语法

touch [选项] <文件名>

常用选项包括:

  • -a:仅更新文件的访问时间。

  • -c:仅在文件不存在时才创建新文件。

  • -m:仅更新文件的修改时间。

  • -r <参考文件>:使用指定文件的时间戳作为新文件的时间戳。

  • -t <时间戳>:使用指定的时间戳作为新文件的时间戳。

2.2常用示例

以下是一些常见的用法示例:

2.2.1创建新的空文件

touch file.txt

 

2.2.2更新现有文件的访问和修改时间戳

touch file.txt

在这个示例中,更新file.txt文件的访问和修改时间戳为当前时间,并不会更改文件内容。"file.txt"的最后修改时间为12月5日02:26。

2.2.3创建多个文件

touch file1.txt file2.txt file3.txt

 同时创建file1.txtfile2.txtfile3.txt三个新文件。

2.2.4通过参考文件设置新文件的时间戳

touch -r reference_file.txt new_file.txt

如果 new_file.txt 不存在,该命令将创建一个空的 new_file.txt,并将其时间戳设置为与 reference_file.txt 相同。

如果 new_file.txt 已经存在,该命令将更新 new_file.txt 的时间戳为与 reference_file.txt 相同。 

比如参考file1.txt设置新文件file4.txt的时间戳:

文件的时间戳包括访问时间(atime)、修改时间(mtime)和状态改变时间(ctime)。使用 -r 选项时,touch 命令将同时更新新文件的 atime 和 mtime,使其与参考文件的时间戳保持一致。 

2.2.5使用指定的时间戳创建新文件

touch -t 202201011200.00 new_file.txt

注意:

时间戳的格式应为 YYYYMMDDhhmm.ss,其中:

  • YYYY 表示年份

  • MM 表示月份

  • DD 表示日期

  • hh 表示小时

  • mm 表示分钟

  • ss 表示秒(可选)

上面格式中的时间戳 “202201011200.00” 则表示 2022 年 1 月 1 日 12:00:00。

 比如创建file5.txt文件并设置时间戳为2023年1月1日12:00:00,结果如下所示:

总结:

touch 命令不会更改文件的内容,只会更新文件的元数据(例如时间戳)。

三、mv命令

mv命令用于在文件系统中移动或重命名文件或目录。它可以将一个文件/目录从一个位置移到另一个位置,也可以对文件/目录进行重命名。

3.1语法格式

要使用mv命令,可以在终端中输入以下内容:

mv 源文件/目录 目标文件/目录或者理解为:
mv [选项] <源文件或目录> <目标文件或目录>

其中,"源文件/目录"是我们要移动或重命名的文件或目录的路径和名称,"目标文件/目录"是我们要将源文件/目录移动到的新位置或者要为其指定的新名称。

常用选项包括:

  • -i:在移动或重命名文件之前进行确认提示。

  • -f:强制执行移动或重命名操作,无需确认提示。

  • -u:仅在目标文件或目录不存在时才执行移动操作。

3.2常用示例

以下是一些常见的用法示例:

3.2.1将文件移动到目标目录(将文件从一个目录移动到另一个目录):

mv file.txt /path/to/destination/

比如将目录csy1中的file1.txt文件移动到目录csy2:

 

3.2.2重命名文件:

mv oldname.txt newname.txt

比如目录csy2中的file1.txt文件重命名为file.txt:

3.2.3移动并重命名文件:

mv file.txt /path/to/destination/newfile.txt

比如将目录csy1中的file2.txt文件移动到目录csy2并重命名为csy2file.txt:

注意:

如果目标文件/目录已经存在,mv命令将会覆盖它(除非使用特殊选项)。为了避免意外覆盖,建议在执行mv命令之前进行确认。

因此mv 命令具有潜在的风险,在使用该命令时,请务必小心。

四、cp命令

cp命令用于复制文件和目录。它可以将一个或多个文件/目录从源位置复制到目标位置。

4.1基本语法

要使用cp命令,请在终端中输入以下内容:

cp [选项] <源文件或目录> <目标文件或目录>

常用选项包括:

  • -i:在复制文件之前进行确认提示。

  • -r 或 -R:递归复制目录及其内容。

  • -u:只复制源文件或目录中比目标文件或目录更新的文件。

  • -p:保留源文件或目录的权限、时间戳等元数据。

  • -v:显示复制过程中的详细信息。

4.2常用示例

以下是一些常见的用法示例:

4.2.1复制文件到目标位置

cp file.txt /path/to/destination/

比如: 

4.2.2复制目录及其内容到目标位置

cp -r directory/ /path/to/destination/

递归地复制source_dir目录及其所有子目录和文件到/path/to/destination/目录下。 

比如递归地复制csy2目录及其所有子目录和文件到~/csyothers目录下:

 

当使用 -r 递归复制目录时,目标目录必须是一个已存在的目录。 

4.2.3复制多个文件到目标位置

cp file1.txt file2.txt /path/to/destination/

比如复制csy1目录下的file1.txt和file2.txt文件到csybackup目录下:

4.2.4仅复制源目录中更新的文件到目标目录

cp -u source_directory/* destination_directory/

用于将源目录中的所有文件复制到目标目录中,只复制那些目标目录中不存在或者比源目录中对应文件更新的文件。

比如我在csy目录新建一个文件filen.txt,然后执行命令后则会将该新建文件复制到目标目录下。 

4.2.5复制并重命名文件

cp oldname.txt newname.txt

比如我将csy目录下的filem.txt文件复制到目录csy1 并重命名为filem1.txt

注意:

如果目标文件/目录已经存在,cp命令将会覆盖它(除非使用特殊选项)。为了避免意外覆盖,建议在执行cp命令之前进行确认。 

五、删除命令(rm/rmdir)

5.1 rm 命令

用于删除文件或目录

5.1.1基本语法

rm [选项] <文件或目录>

常用选项包括:

  • -r 或 -R:递归删除目录及其内容。

  • -f:强制删除,无需确认提示。

5.1.2示例用法

①删除文件:

rm file.txt

执行删除操作时会询问是否删除普通空文件,输入y则表示确认,输入n则表示否定;

②递归删除目录及其内容:

rm -r directory/

③强制删除(不会问你直接删)

rm -rf 目录名/文件名

 

执行过程中没有询问的请求。

5.2 rmdir 命令

用于删除空目录

5.2.1基本语法

rmdir [选项] <目录>

常用选项包括:

  • -p:递归删除父级目录,只有在删除后目录为空时才会生效。

5.2.2示例用法:

删除空目录:

rmdir empty_directory/

比如我删除csy3目录时会提示删除失败,原因时目录非空;

当我新建一个空目录csy时,然后再执行删除,查询发现新建的目录csy已经不存在。 

注意:

在使用 rm 或 rmdir 命令删除文件或目录时,请务必小心谨慎,并确保自己了解其行为和影响。删除后的文件或目录通常无法恢复,请谨慎操作。另外,请避免在不确定的情况下使用 -f 选项,以免意外删除重要文件。

六、chmod命令

在章节一:mkdir命令中提及到文件/目录的权限设置,下面是关于权限修改的命令:chmod

chmod命令用于更改文件或目录的权限。在Linux系统中,每个文件和目录都有一组权限,用于控制对其的访问。Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令。

6.1数字表示基本语法

chmod [选项] <权限模式> <文件或目录>

常用选项包括:

  • -R:递归地更改指定目录及其子目录中的文件或目录权限。

  • -v:显示更改过程中的详细信息。

权限模式由三个数字组成,分别表示所有者、所属组和其他用户的权限。每个数字都可以是 0-7 的数字,对应不同的权限。数字与权限的对应关系如下:

数字权限
0无权限
1执行权限
2写权限
3写和执行权限
4读权限
5读和执行权限
6读和写权限
7读、写和执行权限

6.2数字表示用法示例

以下是一些常见的权限模式示例:

将文件设置为全局可读可写:

chmod 666 file.txt

将目录及其内容设置为所有者可读写执行、所属组和其他用户只读:

chmod -R 744 directory/

 除了使用数字表示法(例如,777、755)设置权限外,还可以使用符号表示法(例如,u+rwx、go-w)设置权限。

  • ①增值赋权  +
  • ②减值赋权  -
  • ③等值赋权  =

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

u 所属主:文件所有者 

g 所属组:文件所有者所在组

o 其他人:所有其他用户   

a 所有人:所有用户, 相当于 ugo

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

6.3符号表示语法格式

chmod [-cfvR] [--help] [--version] mode file...

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

6.4符号表述用法示例

①为file.txt的所有者(用户)添加读取、写入和执行权限

chmod u+rwx file.txt

②为file.txt的所有者添加读取权限

chmod u+r file.txt

③删除组和其他用户的写入和执行权限

chmod go-wx file.txt

④将目录及其内容设置为所有者可读写执行,所属组和其他用户只读

chmod -R u=rwx,g=r,o=r 目录名

-R选项用于递归地更改目录及其所有内容的权限

⑤将文件 file1.txt 设为所有人皆可读取

chmod ugo+r file1.txt

文件 file1.txt 设为所有人皆可读取

chmod a+r file1.txt

⑦将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入

chmod ug+w,o-w file1.txt file2.txt

 ⑧为 ex1.py 文件拥有者增加可执行权限

chmod u+x ex1.py

⑨将目前目录下的所有文件与子目录皆设为任何人可读取 

chmod -R a+r *

⑩更多命令说明

命令说明
chmod a+r file给file的所有用户增加读权限
chmod a-x file删除file的所有用户的执行权限
chmod a+rw file给file的所有用户增加读写权限
chmod +rwx file给file的所有用户增加读写执行权限
chmod u=rw,go= file对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
chmod -R u+r,go-r docs对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
chmod 664 file对file的所有者和用户组设置读写权限, 为其其他用户设置读权限
chmod 0755 file相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式。
chmod 4755 file4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。
find path/ -type d -exec chmod a-x {} \;删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用'-type f'匹配文件
find path/ -type d -exec chmod a+x {} \;允许所有用户浏览或通过目录path/

chmod命令的使用部分内容参考文章Linux chmod 命令 | 菜鸟教程 (runoob.com)

七、chown命令

Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令,用于更改文件或目录的所有者和所属组。在Linux系统中,每个文件和目录都有一个所有者和一个所属组。

Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。

chown 需要超级用户 root 的权限才能执行此命令。只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp 命令。

7.1基本语法

chown [-cfhvR] [--help] [--version] user[:group] file...或者
chown [选项] <所有者>:<所属组> <文件或目录>
  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • --help : 显示辅助说明
  • --version : 显示版本

简单理解

只修改所属主   chown 所属主 文件名

只修改所属组   chown .所属组 文件名

同时修改所属主和所属组  chown 所属主.所属组 文件名

也可以用:替换.

7.2示例用法

以下是一些常见的示例:

把 /var/run/httpd.pid 的所有者设置 root

chown root /var/run/httpd.pid

将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup 

chown runoob:runoobgroup file1.txt

将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup

chown -R runoob:runoobgroup *

把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者

chown :512 /home/runoob

更改文件的所有者

chown newowner file.txt

 将file.txt的所有者更改为newowner

更改目录的所有者和所属组

chown user:group directory/

 将directory/的所有者更改为user,所属组更改为group。

再次强调:

只有超级用户(root)才能更改其他用户的文件所有权

八、wc命令

wc 命令用于计算文件中的字节数、字数和行数。它可以用于统计文件或从标准输入读取的数据的统计信息。若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

8.1基本语法

wc [选项] <文件>

常用选项包括:

  • -l:只显示行数。

  • -w:只显示字数。

  • -c:只显示字节数。

  • -m:只显示字符数。

8.2示例用法

以下是一些常见的选项和用法:

①统计文件中的行数、字数和字节数

wc 文件名

比如查看 ~/csy1/filem1.txt  的行数、字数和字节数:

②仅统计文件中的行数

wc -l 文件名

 比如查看 ~/csy1/filem1.txt  的行数

③统计文件中的字节数 

wc -c 文件名

比如查看 ~/csy1/filem1.txt  的字节数

④统计文件中的单词数 

wc -w 文件名

比如查看 ~/csy1/filem1.txt  的字数

九、find命令

在Linux中,find命令用于在指定目录下查找文件和目录,并根据给定的条件进行过滤。 从指定的起始目录开始,递归地搜索各个子目录,查找出满足条件的文件。

9.1基本语法

find <路径> [选项] [参数] [动作]

注释: 

①路径:不填路径,默认查找当前路径

其实就是我们要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。

  • . 表示当前路径
  • / 表示的是系统的根目录

②选项:

  • (1)按照文件名
  • (2)按照文件的类型
  • (3)按照用户组的查找
  • (4)按照被读取/被修改的时间来查找
  • (5)按照文件的大小查找

③参数:具体查找的文件名 (可以使用通配符)

通配符

  • *  0个或多个字符
  • ?  任意单个字符

④动作:

  • -exec 命令 {} \;    查找出文件之后执行命令
  • -ok {} \;    查找出文件之后询问是否执行命令
  • -exec -ok

    -exec  执行

    -ok     询问

    在exec和动作的后面要写 {} \; #注意括号后面有空格

9.2 示例用法

(一)按照文件名查找

  • -name '文件名'  大小写敏感
  • -iname 不区分大小写

①#搜索a开头的文件 

find -name 'a*'|cat -n

查询结果部分截图如下所示:

提示:

cat -n命令将会对输入进行行号标记,并将其输出。

完整命令注释:

找到以字母 'a' 开头的文件,并为这些文件名添加行号进行标记,然后将标记后的结果输出。

| 符号用于将前一个命令的输出作为后一个命令的输入,该符号在后续的篇章中会详细描述。

详细的cat命令请查看章节十、cat命令

 ②#根目录搜索第二个字母是a的文件

find -name '?a*'|cat -n

查询结果部分截图如下所示:

③#搜索系统里所有的文件(这里以家目录~路径搜索,根目录/内容数据偏大)

find -name '*'|cat -n
或
find |cat -n

 查询结果部分截图如下所示:

(二)按照文件的类型查找

  • -type 

文件类型

  • f 普通文件
  • d 目录文件
  • c 字符设备文件
  • b 块设备文件
  • s 套接字文件
  • p 管道文件
  • l 链接文件(小写的L)

①#查找p开头的链接文件

find -name 'p*' -type l |cat -n

查询结果部分截图如下所示:

②#搜索所有p开头f结尾的链接文件和所有包含x套接字的文件

find -name 'p*f' -type l |cat -nfind -name '*x*' -type s |cat -n

查询结果如下所示:

(三)按照用户和组查找

  • -user   用户名  所属主
  • -group   组名  所属组
  • -uid    所属主的uid
  • -gid    所属组的编号
  • -nouser 没有所属主(把它的所属主这个用户删除 遗留下的文件 就是没有所属主的)
  • -nogroup 没有所属组

①#搜索0号用户,root组 包含m 不区分大小写的链接文件

find / -uid 0 -group root -iname '*m*' -type l | cat -n

查询结果部分截图如下所示: 

 注释:

在根目录下搜索满足以下条件的符号链接文件:

  • -uid 0:文件所有者的用户ID为0,即root用户。
  • -group root:文件所属组为root组。
  • -iname '*m*':文件名忽略大小写,包含字母 'm'。
  • -type l:只搜索符号链接类型的文件。

②#搜索所有没有所属组的文件  把结果覆盖重定向到自己的目录p1中

find / -nogroup > /csy/p1

(四)按照被读取/被修改的时间查找 

  • -a 被读取   
  • -c 被修改    
  • -m 被更改
  • -min 分钟
  • -time 天
  • -n 某个时间段内
  • +n 某个时间之前
  • atime 及 access time 文件最近访问的时间,当你用cat,more,vi等指令访问一个文件时,atime都会更新。
  • mtime 及 modify time 文件最近改动的时间,当你对文件改动修改内容时会改变这个时间。
  • ctime 及 change time 文件最近状态(status)的改变时间。这里的status指权限,用户,组,修改时间。如果这些东西改变,那么ctime会随之改变。
简名全名中文名含义

atime 

access time访问时间文件中的数据库最后被访问的时间

mtime

modify time修改时间文件内容被修改的最后时间

ctime

change time变化时间文件的元数据发生变化。比如权限,所有者等

① #在1天之内被修改过的文件

find -ctime -1 |cat -n

执行结果如下: 

②#在5分钟之内被读取过的文件

find -amin -5 |cat -n

执行结果如下:

③#删除~/csy目录下30天之前被修改过的文件

find csy -ctime +30 -exec rm -rf {} \;

④#长格式显示~/csy1下名字包含f的文件

find -name '*f*' -exec ls -l {} \;

查询结果如下:

注释:

  • -name '*f*':通过通配符模式匹配文件名,以查找包含字母 'f' 的文件。
  • -exec ls -l {} \;:对每个匹配到的文件执行 ls -l 命令以显示详细信息。
    • {} 表示匹配到的文件名将被传递给 -exec 后面的命令进行处理。
    • \; 用于表示 -exec 命令的结尾。
  •  使用 ls -l 命令以长格式显示这些文件的详细信息,包括文件名、权限、所有者、所属组、大小等

(五)按照文件大小查找

  • -size

①#查找所有的空文件 

find -size 0 |cat -n

查找结果如下:

②#查找大于指定大小的文件 

find /path/to/directory -size +100M

即在 /path/to/directory 目录中查找大于100兆字节的文件。

比如:

③#查找小于指定大小的文件

find  -size -10K

执行结果如下:

④或者目录中查找小于 1000 字节的文件:

⑤查找恰好指定大小的文件

find /path/to/directory -size 50G

 即目录中查找恰好为50吉字节的文件

提示:

使用 c 表示字节;

使用不同的单位表示文件大小,如 K 表示千字节,M 表示兆字节,G 表示吉字节等。+- 号用来指定大于或小于某个特定大小。 

十、cat命令 

在Linux中,cat 是一个用于查看文件内容的命令。它的名称是 "concatenate"(连接)的缩写,因为它最初的设计目的是将多个文件的内容连接起来并输出。

10.1基本语法

cat [选项] [文件]

常用选项包括:

  • -n:显示行号。

  • -b:显示行号,但不对空行进行编号。

  • -s:压缩多个连续空行为一个空行

  • -E:在每行结束处显示 $

10.2示例用法

①#查看单个文件的内容

cat 文件名

比如: 

cat filem1.txt

 结果如下:

②#查看文件的内容并显示行号

cat -n 文件名

 比如:

cat -n filem1.txt

结果如下:

③#连接多个文件的内容并输出到终端 

cat 文件1 文件2 文件3 ...

比如:

cat file4.txt filem1.txt

 结果如下:

④#将多个文件的内容合并输出到另一个文件(会覆盖原有内容)

cat 文件1 文件2 > 新文件

 比如:

cat file4.txt filem1.txt > file5.txt

结果如下:

⑤#如果重定向到不存在的文件 会自动创建一个出来  

比如:

当使用cat > 文件 时进入内容编辑,完成内容输入后 按住 CTRL + D 即可保存退出。 

⑥将文件的内容追加到另一个文件的末尾 

cat 文件 >> 已有文件

 比如:

cat file4.txt >> filem1.txt

结果如下:

十一、grep命令(三剑客之一)

小知识:

grep、sed、awk命令统称为liunx中的三剑客!!!

所谓的"三剑客"(The Three Musketeers)通常是指三个命令行工具:

  1. grep:用于在文件中搜索匹配某个模式的文本。它可以根据正则表达式或简单的字符串模式进行搜索,并返回匹配的行。

  2. sed:是一个流式文本编辑器,用于对文本进行转换、替换、删除等操作。它通过一系列的规则和命令来处理输入文本,并将结果输出到标准输出。

  3. awk:是一种强大的文本处理工具,可用于从结构化文本数据中提取和处理信息。它使用一种类似于编程语言的方式来处理每一行,并根据规则执行相应的操作。

Linux grep (global regular expression) 命令用于在文件中搜索匹配某个模式的文本。它可以根据正则表达式或简单的字符串模式进行搜索,并返回匹配的行。

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。

11.1基本语法

grep [选项] <模式> [文件]--<模式>:要查找的内容

常用的选项包括:

  • -i:忽略大小写进行匹配。
  • -v:反向匹配,只输出不匹配的行。
  • -r 或 -R:递归地在目录及其子目录中搜索。
  • -l:仅显示包含匹配内容的文件名。
  • -n:显示匹配内容所在行的行号。
  • -c:统计匹配到的行数。
  • -e:使用多个模式进行匹配。
  • -A数 显示匹配内容的下面 数行
  • -数 显示匹配内容的上下 数行

更多参数说明:

参数说明参考文章 Linux grep 命令 | 菜鸟教程 (runoob.com)

  • -a 或 --text : 不要忽略二进制的数据。
  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 --count : 计算符合样式的列数。
  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 --only-matching : 只显示匹配PATTERN 部分。
  • -q 或 --quiet或--silent : 不显示任何信息。
  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
  • -s 或 --no-messages : 不显示错误信息。
  • -v 或 --invert-match : 显示不包含匹配文本的所有行。
  • -V 或 --version : 显示版本信息。
  • -w 或 --word-regexp : 只显示全字符合的列。
  • -x --line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定"-i"参数相同。

通配符说明

^'a'    以a开头(行首)

‘a’$  以a结尾(行尾)

11.2用法示例

以下为常用的查询格式:

①#在一个文件中查找特定字符串

grep "pattern" 文件名

②#在多个文件中查找特定字符串

grep "pattern" 文件1 文件2 文件3

③#忽略大小写匹配

grep -i "pattern" 文件名

④#在文件中搜索不区分大小写的特定模式并显示行号 

grep -i -n "pattern" 文件名

⑤#递归地在目录及其子目录中搜索

grep -r "pattern" 目录名

⑥#在文件中搜索不包含特定单词的行

grep -v "pattern" 文件名

备注:

pattern 是一个占位符,用来表示在 grepsed 或其他命令中要搜索、匹配或替换的文本模式。 

在实际使用时,将 pattern 替换为适合我们需求的具体文本或正则表达式,以便正确搜索、匹配或处理数据。

 以下是一些实际例子:

借用p2文本演示,复制/etc/passwd到个人目录下的p2:

cp /etc/passwd csy/p2

查看p2文本:

①# 显示p2文件包含root的行

grep 'root' p2

 结果如下:

② #显示p2文件包含root的行和匹配上下的2行

grep -2 'root' p2

 结果如下:

③ #统计p2文件bash结尾的行数  不区分大小写

grep -ic 'bash'$ p2

结果如下:

④# 显示p2文件包含 10 的行和他的下一行,并显示行号 

grep -A1 -n '10' p2

结果如下:

11.2.1通配符 

通配符说明 

.   任意单个字符

*   匹配0次或多次

.*  任意单个字符匹配0次或多次

比如:

‘lo.e’ love  looe  loae ...

 'lo*e'  loe  looe loooe ...

[abc]  多个字符中匹配任意一个

比如‘a[ap]ple’    aaple  apple

[a-z]    小写字母

[A-Z]    大写字母

[a-Z]    大小写字母

[0-9]    数字

[a-Z0-9] 字母和数字

[^]      非

[^0-9]   非数字

创建测试文件 a

cat > a
abc
acc
qwc
a.c
a&c
ac

如下:

添加数据后CTRL+D即可保存退出。

⑤#查找a文件a开头c结尾的行

grep '^a.*c$' a

结果如下:

⑥#包含非字母的行

grep '[^a-Z]' a

结果如下:

⑦#与 -v 的区别

grep -v '[^a-Z]' a

结果如下:

那么同样可以用这种方式完成下面的查询,加强训练

①#查找p2文件 第二个字符是a的行

grep '^.a' p2

结果如下:

②#查找p2文件倒数第二个字符是s的行

grep 's.$' p2

结果如下:

③#查找p2文件r开头h结尾的行

grep '^r.*h$' p2

结果如下:

④#查找p2文件用户名是7位字母的行

grep '^[a-Z][a-Z][a-Z][a-Z][a-Z][a-Z][a-Z]:x:' p2

结果如下:

对该命令可以进入优化:

grep -E '^[[:alpha:]]{7}:x:' p2
  • -E:启用扩展正则表达式模式匹配。
  • '^[[:alpha:]]{7}:x:':正则表达式模式,包含三个部分:
    • ^:表示行的开始。
    • [[:alpha:]]:表示匹配任意字母字符(大小写不区分)。
    • {7}:表示匹配前面的字母字符连续出现七次。
    • :x::表示以 :x: 结尾。

结果如下:

⑤#查找p2文件uid是两位数字的行

grep ':x:[0-9][0-9]:' p2

结果如下:

11.2.2转义符

 转义符号的使用

\   转义  一个\只能转义一个字符

\<  词首定位符

\>  词尾定位符

比如:

‘\<love’ love   lovee  lovea  ...  love 开头

‘love\>’   aaaalove   bblove  ..    love 结尾

‘\<love\>’   love

\{m\}     刚好匹配m次     '[a]\{m\}'  a刚好匹配m次   

\{m,\}    至少匹配m次    

\{m,n\}   匹配m-n次

\(\)    标签

\数    第数个标签

比如:

\(a\)\1   前面把a定义成标签,后面是调用第一个标签里面的内容组合起来就是 aa

\(a\)\(b\)\1\2         abab

\(a\)\(b\)\2\1         abba

\(a\)\(b\)\1\1\1\2     abaaab

'\([ab]\)\1\1'

aaa

bbb

必须先有标签 再有对应的数字

错误情况:  '\(a\)\2\(b\)\1'

\(.\)\1\1  表示3个连续相同的任意字符

#查找a文件中包含.的行

grep 'a\.c' a

 结果如下:

创建一个文件b,要求包含如下内容:

cat > b
girl,
iiiiiiii
lovvvveeee
youuuuuu

如图所示:

①#查询b文件包含3个连续相同的字母的行

grep '\([a-Z]\)\1\1' b

结果如下:

②#查询b文件出现3个连续相同的字母之后又跟着出现3个连续相同的字母

grep '\([a-Z]\)\1\1\([a-Z]\)\2\2' b

结果如下:

③#查找/usr/share/dict/words  文件中包含大于40个字母的行

grep '[a-Z]\{41,\}' /usr/share/dict/words

结果如下:

④#查找/etc/inittab文件中注释的行(包含#)

grep '#' /etc/inittab

结果如下:

⑤#查找/etc/passwd中包含两个bin的行

grep 'bin.*bin' /etc/passwd

结果如下:

⑥#查找p2文件用户名是7个字母 并且 uid是两个数字的行 ,只显示用户名和uid

grep '^[a-Z]\{7\}:x:[0-9][0-9]:' p2 | cut -d: -f1,3

结果如下: 

cut -d: -f1,3:使用 cut 命令提取字段。

  • -d::指定字段分隔符为冒号。
  • -f1,3:指定要提取的字段为第1和第3个字段。

cut命令后续篇章会进行总结描述。 

⑦#查找p2文件h开头 或者h结尾的行,并且显示行号

(grep '^h' p2;grep 'h$' p2) | cat -n 

结果如下:

⑧#查找p2文件包含ABAB形式字符的行

grep '\(.\)\(.\)\1\2' p2

 结果如下:

十二、sed命令(三剑客之一) 

sed 是一个用于文本处理和转换的流编辑器。它可以对文本进行插入、删除、替换等操作,并且可以通过管道或脚本来实现复杂的文本处理任务。主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

12.1基本语法

sed  选项 ‘定址 动作’文件名

常用选项包括:

  • -n:只打印经过编辑的行。

  • -i:直接修改文件内容,而不是将结果输出到标准输出。

  • -e:允许多项编辑,可以多个连用

常用的动作编辑命令有:

  • s/<模式>/<替换>/:替换匹配到的模式。

  • d:删除匹配到的行。

  • p:打印匹配到的行。

12.2用法示例

12.2.1动作一:p打印

①#打印a文件的1-3行

sed -n '1,3p' a

结果如下:

 

②#打印a文件的1和3行

sed -n '1p;3p' a

结果如下:

 

③#打印p2文件a开头或者b开头的行

sed -n '/^[ab]/p' p2

结果如下:

或者:

sed -n -e '/^a/p' -e '/^b/p' p2

结果如下:

④#打印p2文件a开头或者bash结尾的行 

sed -n -e '/^a/p' -e '/bash$/p' p2

结果如下:

 

!→ 取反

p → !p

打印 不打印

①#打印a文件的前三行之外的行   

sed -n '1,3!p' a

结果如下:

     

②#打印p2文件n开头或者不以n结尾的行

sed -n -e '/^n/p' -e '/n$/!p' p2或者sed -n -e '/^n/p' -e  '/[^n]$/p' p2

结果如下:

12.2.2动作二:d删除 

不显示 (相当于 !p 不用加 -n)

d    →     !d

不显示     显示

①#显示a文件前三行以外的行

sed '1,3d' a

结果如下:

#取反显示a文件的前三行

sed '1,3!d' a

结果如下:

 

注意:

加 -i 修改原文件

#显示a文件第一行 以外的行

sed -i '1d' a

结果如下:

12.2.3动作三:s替换 

12.2.3.1部分数据替换
sed'[定址]s/旧/新/[g]' 文件名

不加定址表示全文替换

①#把p2文件所有的root 替换成ROOT 

sed 's/root/ROOT/g' p2

结果如下:

②#把p2文件第一行的第一个root替换成空

sed '1s/root//' p2

结果如下:

 

③#把a文件所有的a删掉

sed 's/a//g' a

结果如下:

 

④#把a文件的所有c替换成C

sed 's/c/C/g' a

结果如下:

 

⑤#把a文件的第四行的非字母替换成0

sed '4s/[^a-Z]/0/g' a

结果如下:

注意:

在第一个 sed 命令执行后再执行第二个 sed 命令时,如果直接对同一个文件进行操作而没有指定不同的输出文件,那么第二个 sed 命令是会修改原始文件的内容。

这是因为 sed 命令在处理文本时,默认会将修改后的结果输出到标准输出流。但如果使用重定向将其保存到同一个输入文件中,那么原始文件会被覆盖并包含第一个和第二个 sed 命令的修改结果。

其实可以通过使用管道符 | 将多个 sed 命令连接起来,每个命令都会在前一个命令的输出基础上进行处理,并将结果传递给下一个命令。这样就可以实现多次修改同一个文件的效果。 

12.2.3.2 标签在替换中的使用 

创建测试文件d

 cat > d
abcdefg
1234567

①#交换文件相邻两个字符的位置

sed 's/\(.\)\(.\)/\2\1/g' d

结果如下:

 

②# 把 相邻的三个字符都替换成第一个字符

sed 's/\(.\)\(.\)\(.\)/\1\1\1/g' d

结果如下:

12.2.3.3 &在替换中的使用

& 代表替换前的内容

创建测试文件e

 cat > e
A.c
A.c
A&c
A&c
Ac
Ac

 

①#把e文件所有的字符都加上括号 

sed 's/./(&)/g' e

结果如下:

 

②#把d文件每两个字符加一个空格

sed 's/../& /g' d

结果如下:

12.2.4动作四:c取代

sed 中,动作 c 用于替换(或修改)匹配的行。它用于替换整个匹配行的内容为新的文本(整行替换)。

使用 c 动作的 sed 命令的语法:

sed '/pattern/c replacement' filename

其中:

  • /pattern/ 是一个正则表达式模式,用于匹配要替换的行。
  • replacement 是要替换匹配行的新文本。

①#将p2文件第 2-4行的内容取代成为mn

nl p2|sed '2,4c mm'

结果如下:

②#将p2文件第 6行的内容取代成为wpppp

nl p2|sed '6c wpppp'

结果如下:

12.2.5动作五:a新增

sed 中,动作 a 用于在匹配的行后面添加新的文本。它用于在匹配行的下一行插入指定的文本。 

使用 a 动作的 sed 命令的语法:

语法一:
sed '/pattern/a 新文本' 文件名语法二:
sed '/pattern/a\新文本'  文件名

其中:

  • /pattern/ 是一个正则表达式模式,用于匹配要在其后插入文本的行

\ 用于换行,确保插入的文本可以跨越多行。 

①#向文本g的第二行后插入新文本Line new(用语法一)

sed '/Line 2/a Line new' g

 结果如下:

② #向文本g的第一行后插入新文本Line new(用语法二)

sed '1a\Line new' g
或
sed '/Line 1/a\Line new' g

结果如下:

③#向文本g的第三行后添加一行新文本Line new(使用参数e)

sed -e '3 a Line new' g

结果如下:

④#向文本g的第三行后追加两行新文本Line new1和Line new2(使用参数e) 

sed -e '3 a Line new1\nLine new2' g

结果如下:

⑤#向文本g的第三行后追加三行新文本Line new1和Line new2,且最后一行为空(使用参数e) 

sed -e '3 a Line new1\nLine new2\n' g

结果如下:

⑥#向文本g的第三行之后追加 1 行空行(使用参数e)

sed -e '3 a \ ' g

结果如下:

实际上是插入了一个含有一个空格的行;

  • 可以添加一个完全为空的空行;
  • 可以添加两个完全为空的空行;
sed '2 a \\' gsed '2 a \\n' g

 结果如下:

备注:

③④⑤⑥是使用参数e,向文本第几行之后插入新文本。

本篇暂时汇总文件/文本的相关命令12种,请关注下一篇文件/文本的相关命令内容,后面持续汇总整理!内容如有错误,请广大网友评论指导,感谢查看!编写不易,如有需要点赞收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Midjourney实战】| 新年红包、元宝、灯笼、福袋生成

文章目录 1 红包生成2 灯笼生成3 福袋生成4 元宝生成 1 红包生成 之前我们生成了新年礼盒&#xff0c;这一期我们来生成一些过年时特有的元宝和红包 首先&#xff0c;最重要的是画面主体 red envelope&#xff08;红包&#xff09;颜色红色 黄色的 red and yellow 为了后期方…

跳水比赛(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

Web漏洞分析-SQL注入XXE注入(下)

随着互联网的不断普及和Web应用的广泛应用&#xff0c;网络安全问题愈发引起广泛关注。在网络安全领域中&#xff0c;SQL注入和XXE注入是两个备受关注的话题&#xff0c;也是导致许多安全漏洞的主要原因之一。本博客将深入研究这两种常见的Web漏洞&#xff0c;带您探寻背后的原…

GNSEC 2022年第8届全球下一代软件工程线上峰会-核心PPT资料下载

一、峰会简介 新一代软件工程是指利用新的理论、方法和技术&#xff0c;在软件开发、部署、运维等过程中&#xff0c;实现软件的可控、可预测、可维护的软件生产方式。它涵盖了多个领域&#xff0c;如软件开发、测试、部署、运维等&#xff0c;旨在提高软件生产效率和质量。 …

103.进程概述

目录 1.并行和并发 区别&#xff1a; 2.PCB 3.进程状态 4. 进程命令 从严格意义上来讲&#xff0c;程序和进程是两个不同的概念&#xff0c;他们的状态&#xff0c;占用的系统资源都是不同的。 程序&#xff1a;程序是一种静态实体&#xff0c;是存储在计算机存储介质上的…

判断三角形-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第12讲。 判断三角形&#…

AOC computer monitor

【窗口增亮】关闭就没掉了

Java异常讲解

&#x1f435;本篇文章将对异常相关知识进行讲解 一、异常的结构 在程序执行的过程中出现的一些问题叫做异常&#xff0c;异常其实是一个一个类&#xff0c;每一种异常都代表一个类 1.1 几种常见的异常 System.out.println(10/0); //算数异常 //Exception in thread "m…

LDAP协议和AD活动目录的讲解

目录 LDAP协议 LDAP基本概念 LDAP目录的数据结构 LDAP交互过程以及相关报文 AD&#xff08;Active Directory&#xff09; AD基本概念 AD域与工作组、本地组的区别 AD DS&#xff08;AD域服务&#xff09; 信任关系 组策略和安全组 LDAP协议 LDAP基本概念 LDAP&…

2024年程序员面对经济下行的解决方式竟然是……

近些年大环境不好&#xff0c;经济下行的压力给到了我们每一个普通人的身上&#xff1a;降薪是潮流&#xff0c;裁员是趋势&#xff0c;找不到工作是常态。 在这样的环境下&#xff0c;我们曾一天三份工&#xff0c;只为家人温饱&#xff1b; 我们也曾一周七天连轴转&#xf…

ProEasy机器人:快速上手使用机器人软件与编程(干货满满,好学不费脑)

一、安装机械手软件 如图所示&#xff0c;安装顺序为&#xff1a;先安装第一个&#xff0c;再安装第二个 二、快速认识学习掌握机械手软件重要功能 1.连接机械手 机械手默认出厂的ip为&#xff1a;“192.168.1.1”&#xff0c;在初次连接机械手前&#xff0c;必须把使用连接的…

k8s官方镜像代理加速

背景 大家可能在云原生领域需要部署周边的一些生态组件时&#xff0c;在国内遇到无法正常拉取镜像&#xff0c;显得就有点苦恼&#xff0c;不过没关系&#xff0c;常见的${{ registry_name }} 例如 “gcr.io”&#xff0c;“registry.k8s.io” Failed to pull image “registry…

AI Pika 生成进击的巨人动漫分镜案例

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级&#xff0c;包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画&#xff0c;动漫&#xff0c;卡通和电影风格。…

springboot 整合 Spring Security+JWT 实现token 认证和校验

1.大概是这个样子 JWT 是什么&#xff1f; Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明…

【ArcGIS微课1000例】0078:创建点、线、面数据的最小几何边界

本实例为专栏系统文章:讲述在ArcMap10.6中创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具位于:数…

Park Unpark

文章目录 当先调用park时&#xff1a;如果_counter0&#xff0c;这时候该线程阻塞&#xff0c;进入_cond阻塞&#xff0c;之后Unpark设置_counter为1后停止阻塞 当先调用Unpark时&#xff1a;此时先将_counter设置为1&#xff0c;当后面出现park时一判断_counter为1&#xff0c…

IO多路复用(新)

1.前景回顾 无论是阻塞IO还是非阻塞IO&#xff0c;用户应用在一阶段都需要调用recvfrom来获取数据&#xff0c;差别在于无数据时的处理方案&#xff1a; 如果调用recvfrom时&#xff0c;恰好内核没有数据&#xff0c;那么阻塞IO会使用户进程阻塞&#xff0c;非阻塞IO使CPU进行空…

CMMI5大成熟度等级和4大过程域

CMMI&#xff08;Capability Maturity Model Integration&#xff0c;能力成熟度模型集成&#xff09;模型系列是帮助组织改进其过程的最佳实践的集合。这些模型由来自产业界、政府以及软件工程研究所&#xff08;Software Engineering Institute&#xff0c; SEI&#xff09;的…

AI跨界学习,不再是梦!

大家好&#xff01;今天给大家推荐的 GPTs 是【行业知识脉络】&#xff0c;帮助大家快速了解某个领域的脉络&#xff0c;并提供足够的学习资料和建议。 在AI时代&#xff0c;从小白到专家的1万小时定律即将失效&#xff0c;用少于1千小时掌握行业知识树和其核心概念是如何学习的…

Vis.js教程(二):基础关系图实现

首先引用所需要的css和js文件 <link href"https://cdn.bootcdn.net/ajax/libs/vis-network/9.1.6/dist/dist/vis-network.min.css" rel"stylesheet"> <script src"https://cdn.bootcdn.net/ajax/libs/vis-network/9.1.6/standalone/umd/vis-…