独一无二,万字详谈——Linux之文件管理
Linux文件部分的学习,有这一篇的博客足矣!
目录
一、文件的命名规则
1、可以使用哪些字符?
2、文件名的长度
3、Linux文件名的大小写
4、Linux文件扩展名
二、文件管理命令
1、目录的创建/删除
(1)、目录的创建
① mkdir创建目录
② mkdir -p递归创建目录
③ 使用mkdir同时创建多个目录
总结:
扩展:Linux快捷键(方向键上下)
(2)、目录删除(必须是空目录)
① rmdir移除空目录
② rmdir -p递归删除空目录
③ 使用rmdir同时删除多个空目录
总结:
2、文件的创建/删除
(1)、创建文件
① touch创建文件
② 使用touch命令同时创建多个文件
③ {1…5}根据序号同时创建多个文件
总结:
(2)、删除文件
① 普通删除
总结:
② 扩展:rm -rf /*,一定要慎重
3、复制
① cp复制操作
② cp复制并重命名文件
③ cp复制文件夹到指定路径
总结:
4、剪切
5、重命名
总结:
6、tard打包压缩与解压缩
(1)、几个概念
(2)、 Linux打包操作
(3)、 tar -tf以及tar -uf
(4)、 打包并压缩(学习的重点)
(5)、 对压缩包进行解压
7、zip压缩与解压缩
① zip压缩
② unzip解压缩
总结:
三、vim文件编辑器的 概述 与 使用
1、Vim打开文件
2、Vim保存文件并退出
3、Vim不保存文件并退出
4、Vim命令模式操作(重点)
4.1、进入命令模式
4.2、光标快速移动操作
☆ 光标移动到首与尾
☆ 翻屏
向上 翻屏,按键:ctrl + b (before) 或 PgUp
向下 翻屏,按键:ctrl + f (after) 或 PgDn
向上翻半屏,按键:ctrl + u (up)
向下翻半屏,按键:ctrl + d (down)
☆ 快速定位到指定行(重点)
4.3、复制
4.4、剪切/删除
4.5、撤销/恢复
5、Vim末行模式操作(重点)
5.1、进入末行模式
5.2、末行模式相关功能
① 保存操作(write)
② 退出(quit)
③ 保存并退出(掌握,常用)
④ 强制(!)(掌握,常用)
⑤ 搜索/查找
⑥替换(了解)
⑦ 显示行号
⑧ set paste与set nopaste(了解)
6、编辑模式操作
进入和退出编辑模式
7、可视化模式下复制
1).添加多行注释:(重点)
2).删除多行注释:(重点)
8、Vim的一些实用功能
8.1、代码着色
8.2、异常退出(重点)
8.3、退出方式
五、文本文件处理命令
1、查看文件内容
①cat查看及合并
②more分屏显示文件
③less分屏显示文件
④head显示文件开头
⑤tail显示文件结尾(重点)
2、统计文件信息
①wc统计文件内容数量
②du统计文件大小
3、文本处理
①find文件查找(重点)
②grep搜索文件内容 (重要)
③输出重定向
一、文件的命名规则
1、可以使用哪些字符?
除了 “ / ” 字符之外,所有的字符都可以使用,但是要注意的是,在目录文件中,不建议使用其他特殊的字符,例如:<、>、?、*等等,尽量避免使用。
如果一个文件名中包含了特殊的字符,例如空格,那么在访问这个文件的时候,就需要使用双引号将文件名进行括起来。
建议的命名规则:
1、由于Linux严格区分大小写,所以尽量都用小写字母.
2、如果必须对文件名进行分割,建议使用 “ _ ” ,例如: xiaofeng_2024_12
2、文件名的长度
目录名或者文件名的长度都不能超过255个字符。
3、Linux文件名的大小写
- Linux目录名或者文件名是严格区分大小写的,如xiaofeng、XiaoFeng和XIAOFENG,是互不相同的目录名或者文件名。
- 尽量不要使用大小写来区分不同的文件或目录。
- 建议文件名一律使用小写字母
4、Linux文件扩展名
Linux的扩展名对操作系统本身是没有特殊的含义的,Linux系统并不以文件的扩展名来区分文件类型。例如:xiaofeng.txt就只是一个文件,该文件的扩展名 .exe 并不代表此文件就一定是可执行的。
在Linux系统中,文件的扩展名的用途是为了使运维人员更好的区分不同的文件类型。
二、文件管理命令
在日常工作中,我们需要经常对Linux的文件或者目录进行新建、删除、修改、查看、复制和移动等等。
1、目录的创建/删除
在实际应用中,有两个相关目录的操作:创建和删除。
(1)、目录的创建
① mkdir创建目录
基本语法:
# mkdir 目录名称
主要功能:就是根据目录的名称创建一个目录
> mkdir = make directory
案例:在家目录下创建一个xiaofeng的文件夹
# mkdir xiaofeng
② mkdir -p递归创建目录
基本语法:
# mkdir -p /usr/local/nginx/conf
选项说明:
-p:递归创建,从左边的路径开始一级一级创建目录,直到路径结束
案例:在已知目录(/usr/local)下创建多级目录(nginx/conf)
# mkdir /usr/local/nginx/conf
mkdir: cannot create directory ‘/usr/local/nginx/conf’: No such file or directory
mkdir:不能创建目录conf,为什么呢?因为/usr/local目录下并没有nginx
解决方案:如果我们想同时创建多级目录,必须使用-p选项,其会从左向右一级一级创建目录。
# mkdir -p /usr/local/nginx/conf
③ 使用mkdir同时创建多个目录
# mkdir 目录名称1 目录名称2 目录名称3 ...
案例:在当前目录下创建a、b、c三个目录
# mkdir a
# mkdir b
# mkdir c
或
# mkdir a b c
同时创建关于a的下标为1-10的目录文件
#mkdir a{1..10}
总结:
- 一个目录一个目录创建# mkdir 目录名称
- 多级目录一起创建# mkdir -p 目录名称1/目录名称2/…
- 同时创建多个目录# mkdir 目录名称1 目录名称2 目录名称3 或 #mkdir 目录名称{num1..num2}
扩展:Linux快捷键(方向键上下)
在终端中:
- 按方向键=>向上,其会返回上一次输入的命令
- 按方向键=>向下,其会返回下一次输入的命令
(2)、目录删除(必须是空目录)
① rmdir移除空目录
基本语法:
# rmdir 目录名称
> rmdir = remove directory,移除目录
案例:把家目录下的xiaofeng删除(空目录)
# rmdir xiaofeng
② rmdir -p递归删除空目录
基本语法:
# rmdir -p 目录名称1/目录名称2/目录名称3/...
主要功能:从右向左一级一级删除空目录
案例:递归删除xiaofeng文件夹中的yunwei文件夹中的shenzhen3
# rmdir -p xiaofeng/yunwei/shenzhen3
③ 使用rmdir同时删除多个空目录
# rmdir 目录名称1 目录名称2 目录名称3 ...
案例:删除家目录中的a、b、c三个空目录
# rmdir a b c
总结:
- # rmdir 目录名称,删除某个空目录
- # rmdir -p 目录名称1/目录名称2/目录名称3/…,同时删除多级目录(从右向左一级一级删除)
- # rmdir 目录名称1 目录名称2 目录名称3,同时删除多个空目录
2、文件的创建/删除
(1)、创建文件
① touch创建文件
基本语法:
# touch 文件名称
主要功能:在Linux系统中的当前目录下创建一个文件
案例:在当前目录下创建一个readme.txt文件
# touch readme.txt
② 使用touch命令同时创建多个文件
基本语法:
# touch 文件名称1 文件名称2 文件名称3 ...
或者
#touch 文件名称{num1..num2}
案例:创建一个shop商城文件夹,然后在内部创建index.php/admin.php/config.php三个文件
# mkdir shop
# touch shop/index.php
# touch shop/admin.php
# touch shop/config.php
或
# touch shop/index.php shop/admin.php shop/config.php
> 提出问题:观察以下命令,看看有何区别?
>>>> 第一种写法:touch shop/index.php shop/admin.php shop/config.php > > 代表在shop目录下首先创建一个index.php,再创建一个admin.php,最后config.php
>>>> 第二种写法:touch shop/index.php admin.php config.php > > 代表在shop目录下首先创建index.php,然后在当前目录下创建admin.php,最后在当前目录下创建config.php
③ {1…5}根据序号同时创建多个文件
基本语法:
# touch 文件名称{开始序号..结束序号}
含义:
根据提供的开始序号~结束序号,一个一个创建文件
案例:创建file1、file2、file3、file4、file5共5个文件
# touch file1
# touch file2
# touch file3
# touch file4
# touch file5
或
# touch file{1..5}
总结:
- # touch 文件名称
- # touch 文件名称1 文件名称2 文件名称3 …
- # touch 文件名称{开始序号…结束序号}
(2)、删除文件
① 普通删除
基本语法:
# rm [选项] 文件或文件夹的名称
选项说明:
-r :针对文件夹,代表递归删除,先把目录下的所有文件删除,然后在删除文件夹
-f :强制删除,不提示,初学者一定要慎重!!!
案例:删除readme.txt文件
# rm readme.txt
rm: remove regular empty file ‘readme.txt’?这里可以回复y or n
y代表确认删除
n代表取消删除
案例:强制删除admin.php,不提示(慎重)
# rm -f admin.php
案例:删除非空的文件夹(-rf强制递归删除,不提示)
# rm -rf shop
提示信息:descend into directory ‘itheima/’? 含义:是否进入itheima目录?
提示信息:remvoe directory ‘itheima/’? 含义:是否删除itheima文件夹?
扩展:Ctrl + C在Linux下的使用方式> 在Linux操作系统中,Ctrl + C不是复制,而是中断某个操作
总结:
- # rm 文件名称
- # rm 文件名称1 文件名称2 文件名称3 …
- # rm -f 文件名称 => 强制删除,不提示
- # rm -rf 文件夹名称 => 递归删除文件夹
② 扩展:rm -rf /*,一定要慎重
# rm -rf /* => 代表删除根目录下的所有文件(如果没有备份,恢复的几率不高)
rm :删除
-r :递归删除(无论文件夹是否为空)
-f :强制删除不提示
/ :代表根分区
* :所有
3、复制
① cp复制操作
基本语法:
# cp [选项] 源文件或文件夹 目标路径
选项说明:
-r :递归复制,主要针对文件夹
> cp = copy复制
案例:把readme.txt文件从当前目录复制一份放到/tmp文件夹中
# cp readme.txt /tmp/
② cp复制并重命名文件
基本语法:
# cp [选项] 源文件或文件夹 目标路径/新文件或文件夹的名称
案例:把readme.txt文件从当前目录复制一份放到/tmp文件夹中并重命名为readme.txt.bak
# cp readme.txt /tmp/readme.txt.bak
③ cp复制文件夹到指定路径
基本语法:
# cp -r 源文件夹名称 目标路径/
案例:把shop目录连通其内部的文件统一复制到/tmp目录下
# mkdir shop
# touch shop/index.php shop/admin.php shop/config.php# cp -r shop /tmp/
总结:
- 复制文件# cp 源文件名称 指定路径
- 复制文件并重命名# cp 源文件名称 指定路径/新文件名称
- 复制文件夹# cp -r 源文件夹 指定路径
4、剪切
基本语法:
# mv 源文件或文件夹 目标路径/
> mv = move,剪切、移动的含义
案例:把readme.txt文件剪切到/tmp目录下
# rm -rf /tmp/readme.txt# mv readme.txt /tmp/
案例:把shop文件夹移动到/usr/local/nginx目录下
# mkdir /usr/local/nginx
# mv shop /usr/local/nginx/
5、重命名
什么是重命名?简单来说,就是给一个文件或文件夹更改名称
基本语法:
# mv 源文件或文件夹名称 新文件或文件夹的名称
案例:把readme.txt文件更名为README.md文件
# mv readme.txt README.md
案例:把shop文件目录更名为wechat目录
# mkdir shop
# mv shop wechat
总结:
- 剪切文件# mv 源文件名称 目标路径/
- 剪切文件夹# mv 源文件夹名称 目标路径/
- 重命名# mv 源文件或文件夹名称 新文件或文件夹名称
6、tard打包压缩与解压缩
(1)、几个概念
打包:默认情况下,Linux的压缩概念一次只能压缩一个文件。针对多文件或文件夹无法进行直接压缩。所以需要提前对多个文件或文件夹进行打包(创建归档文件),这样才可以进行压缩操作。
1.txt 5MB2.txt 10MB3.txt 15MB1.txt + 2.txt + 3.txt = 打包 = 123.tar = 30MB
> 打包只是把多个文件或文件夹打包放在一个文件中,但是并没有进行压缩,所以其大小还是原来所有文件的总和。
压缩:也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件所占用的磁盘空间比集合中所有文件(归档文件)大小的总和要小。
1.txt 5MB2.txt 10MB3.txt 15MB1.txt + 2.txt + 3.txt = 压缩 = 123.tar.gz = 20MB(体积变小了)
(2)、 Linux打包操作
基本语法:
# tar [选项] 打包后的名称.tar 多个文件或文件夹
选项说明:
-c :打包
-f :filename,打包后的文件名称
-v :显示打包的进度
-u :update缩写,更新原打包文件中的文件(了解)
-t :查看打包的文件内容(了解)
案例:把a.txt、b.txt、c.txt文件打包到abc.tar文件中(归档文件)
# tar -cvf abc.tar a.txt b.txt c.txt
案例:把wechat文件夹进行打包wechat.tar
# tar -cvf wechat.tar wechat
(3)、 tar -tf以及tar -uf
基本语法:
# tar -tf 打包后的文件名称
主要功能:查看tar包中的文件信息
案例:查看abc.tar包中的文件信息
# tar -tf abc.tar
# tar -uf 打包后的文件名称
> u = update,更新,如果还想往tar包中更新或追加内容都可以通过-u选项
案例:向abc.tar包中添加一个d.txt文件
# touch d.txt
# tar -uf abc.tar d.txt
查看是否添加成功
# tar -tf abc.tar
扩展:如何把tar包中的文件释放(解压)出来
打包
# tar -cf abc.tar a.txt b.txt c.txt
释放
# tar -xf abc.tar
(4)、 打包并压缩(学习的重点)
基本语法:
# tar [选项] 压缩后的压缩包名称 要压缩的文件或文件夹
选项说明:
-cf :对文件或文件夹进行打包-v :显示压缩进度-z :使用gzip压缩工具把打包后的文件压缩为.gz
-j :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J :使用xz压缩工具把打包后的文件压缩为.xz压缩速度:tar.gz > tar.bz2 > tar.xz
压缩率: tar.gz < tar.bz2 < tar.xz
案例:把a.txt、b.txt、c.txt文件打包并压缩为abc.tar.gz
# tar -zcf abc.tar.gz a.txt b.txt c.txt
案例:把wechat文件夹压缩为wechat.tar.gz格式的压缩包
# tar -zcf wechat.tar.gz wechat
(5)、 对压缩包进行解压
解压过程非常简单,就是把压缩的参数中的c换成x就可以实现解压缩了
基本语法:
*.tar.gz格式的压缩包
# tar -zxf 名称.tar.gz*.tar.bz2格式的压缩包
# tar -jxf 名称.tar.bz2*.tar.xz格式的压缩包
# tar -Jxf 名称.tar.xz
案例:把abc.tar.gz格式的压缩包进行解压缩操作
# tar -zxf abc.tar.gz
案例:把wechat.tar.gz格式的压缩包进行解压缩操作
# tar -zxf wechat.tar.gz
7、zip压缩与解压缩
① zip压缩
基本语法:
# zip [选项] 压缩后的文件名称.zip 文件或文件夹
选项说明:
-r :递归压缩,主要针对的是文件夹(只要压缩的时候有文件夹,就需要用该选项)
> Linux下已经有gzip、bzip2以及xz压缩命令了,为什么还需要使用zip压缩呢? > > 答:zip格式在Windows以及Linux中都是可以正常使用的。
案例:把a.txt、b.txt、c.txt进行压缩为abc.zip
# zip abc.zip a.txt b.txt c.txt
案例:把wechat文件夹压缩为wechat.zip
# zip -r wechat.zip wechat
② unzip解压缩
基本语法:
# unzip 压缩包名称 解压到当前目录
# unzip 压缩包名称 -d 指定路径 解压到指定路径下
案例:对abc.zip文件进行解压缩
# unzip abc.zip
案例:把wechat.zip解压到/usr/local/nginx目录下
# unzip wechat.zip -d /usr/local/nginx/
总结:
在Linux操作系统中,其拥有很多压缩工具,如gzip、bzip2、xz等等,但是其有一个缺点:
一次只能压缩一个文件(而且无法压缩文件夹),为什么要打包,就是为了后期的压缩操作。
① 打包,把一个或多个文件打成tar包,并不是压缩,只是把文件合并在一个tar文件中
1.txt 5MB2.txt 10MB3.txt 15MB打包123.tar = 5MB + 10MB + 15MB = 30MB
② 打包并压缩
# tar -zcf 压缩包名称.tar.gz 文件或文件夹名称 # tar -jcf 压缩包名称.tar.bz2 文件或文件夹名称 # tar -Jcf 压缩包名称.tar.xz 文件或文件夹名称
③ 解压缩
# tar 把c参数更换为x,就可以实现解压缩 压缩包名称.tar.gz
扩展:
# tar -zxf 压缩包名称.tar.gz [参数] 指定路径
第一种解决思路:随用随查,百度、Google
# tar -zxf 压缩包名称.tar.gz -C 指定路径
第二种解决思路:可以使用man命令(manual缩写,手册)
# man tar命令# tar -zxf 压缩包名称.tar.gz -C 指定路径
④ zip压缩与解压缩
给我们提供一种既可以在Windows中使用的,也可以提供一种在Linux中使用的通用的压缩格式。
# zip [-r] 压缩包名称.zip 要压缩的文件或文件夹
解压缩:
# unzip 压缩包名称.zip -d 指定路径
三、vim文件编辑器的 概述 与 使用
Vim文本编辑器,是由 vi 发展演变过来的文本编辑器,使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器。
Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。
Centos通常都已经默认安装好了 vi 或 Vim 文本编辑器。当命令行中输入“Vim”显示如下 所示的画面时,视为 Vim 安装成功。
注意:如果你的yum源已经配置,那么你就只需要输入命令 yum install vim 即可,如果你本地没有配置yum源,那么你可能不能安装成功。后面我会写一篇博客关于yum源的配置的。当然感兴趣的小伙伴可以提前去搜索学习。
1、Vim打开文件
命令:vim
作用:编辑文件
语法:vim 文件名
用法一:vim 文件名
示例代码:
#vim 1.txt
含义:用vim编辑器,打开1.txt文件,如果1.txt文件不存在,则新建一个空文件1.txt,保存
退出编辑器时会自动创建这个文件
2、Vim保存文件并退出
在任何模式下,都可以按两下ESC回到命令模式,在命令模式输入:wq 按回车键。
3、Vim不保存文件并退出
在任何模式下,都可以按两下ESC回到命令模式,在命令模式输入:q! 按回车键。
4、Vim命令模式操作(重点)
4.1、进入命令模式
问:如何进入命令模式?
答:vim 直接打开文件之后的模式就是命令模式;当然如果你当前如果是在其他模式下,你只需要按两下ESC回到命令模式。
4.2、光标快速移动操作
☆ 光标移动到首与尾
光标移动到文件第一行的行首,按键:
gg
光标移动到文件最后一行的行首,按键:G [Capslk 再加 G 键] / [Shift + G 键]
☆ 翻屏
向上 翻屏,按键:
ctrl + b (before) 或 PgUp
向下 翻屏,按键:
ctrl + f (after) 或 PgDn
向上翻半屏,按键:
ctrl + u (up)
向下翻半屏,按键:
ctrl + d (down)
☆ 快速定位到指定行(重点)
数字 + G
150G
注意:常用于错误定位
4.3、复制
① 复制光标所在行
按键:yy
粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键。
② 以光标所在行为准(包含当前行),向下复制指定的行数
按键:数字yy,如5yy
#vim 1.txt 在其中输入如下,可以用来测试5yy,比较清晰
4.4、剪切/删除
① 剪切/删除光标所在行
按键:dd (删除之后下一行上移)
注意:dd 严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
② 剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行
按键:数字dd (删除之后下一行上移)
③ 剪切/删除光标所在的当前行(光标所在位置)之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)
4.5、撤销/恢复
撤销:u(undo)
恢复:ctrl + r 恢复(取消)之前的撤销操作【重做,redo】
5、Vim末行模式操作(重点)
5.1、进入末行模式
进入方式:由命令模式进入,按下
:
或者/
(表示查找)即可进入末行模式退出方式:① 按下Esc键;② 连按 2 次Esc键;③ 删除末行全部输入字符。
那末行模式有哪些作用?我们能使用末行模式做什么呢?
请看下面的介绍。
5.2、末行模式相关功能
① 保存操作(write)
输入:
:w
保存文件 (了解)输入:
:w 路径
另存为(了解)② 退出(quit)
输入:
:q
退出文件(了解)默认情况下,退出的时候需要对已经进行修改的文件进行保存
:w
,然后才能退出③ 保存并退出(掌握,常用)
输入:
:wq
保存并且退出④ 强制(!)(掌握,常用)
输入:
:q!
表示强制退出,刚才做的修改操作不做保存备注:以后我们在更改系统配置文件时,很多时候不想保存之前的更改,甚至我们只想查看,没想更改。这时候一律使用q!退出,可以保证我们的文件不被误更改。
⑤ 搜索/查找
输入:
/关键词
,再按下回车 【按下/也是进入末行模式的方式之一】在搜索结果中切换上/下一个结果:N/n (大写N代表上一个结果,小写n代表next)
如果需要取消高亮,则需要在末行模式中输入:
:noh
【no highlight】⑥替换(了解)
通常在修改配置文件的时候,我个人很少使用批量替换,避免替换了一些自己不知道的内容
:s/搜索的关键词/新的内容
替换光标所在行的第一处符合条件的内容(只替换1次)
:s/搜索的关键词/新的内容/g
替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容
替换整个文档中每行第一个符合条件的内容
:%s/搜索的关键词/新的内容/g
替换整个文档中所有符合条件的内容⑦ 显示行号
输入:
:set nu
,nu代表number如果想取消显示,则输入:
:set nonu
⑧ set paste与set nopaste(了解)
问题:为什么要使用paste模式?
答案: 在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果Vim开启了自动缩进,就会默认的把上一行缩进插入到下一行的开头,最终使代码变乱。
在粘贴数据之前,输入下面命令开启paste模式 :set paste
粘贴完毕后,输入下面命令关闭paste模式 :set nopaste
6、编辑模式操作
进入和退出编辑模式
按字母i进入编辑模式,按ESC键退出编辑模式,回到命令模式。
7、可视化模式下复制
按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑ ↓ ← →方向键来选中需要
复制的区块,按下y 键进行复制(不要按下yy),最后按下p 键粘贴,退出可视模式按下Esc
1).添加多行注释:(重点)
每行前面都加#
步骤1:首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;
步骤2:在行首使用上下键选择需要注释的多行;
步骤3:按下键盘(大写)“I”键,进入插入模式;
步骤4:然后输入注释符(“#”);
步骤5:最后按 两下“Esc”键。
2).删除多行注释:(重点)
步骤1:首先按esc进入命令行模式下,按下Ctrl + v, 进入列模式;
步骤2:选定要取消注释的多行的第一列
步骤3:按del键即可
8、Vim的一些实用功能
8.1、代码着色
之前说过vim 是vi 的升级版本,其中比较典型的区别就是vim 更加适合coding,因为vim比vi 多一个代码着色的功能,这个功能主要是为程序员提供编程语言升的语法显示效果,如下:
#vim index.php 在文件中添加以下内容:<?phpecho 'hello world'; ?>末行模式输入:syntax off和syntax on可看到效果
在实际应用中,我们如何控制着色显示与否?
> syntax:语法,临时调整
开启显示:
:syntax on
关闭显示:
:syntax off
8.2、异常退出(重点)
什么是异常退出?
在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出。
解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可【在上述提示界面按下D 键,或者使用rm 指令删除交换文件】
8.3、退出方式
回顾:在vim中,退出正在编辑的文件可以使用
:q
或者:wq
除了上面的这个语法之外,vim 还支持另外一个保存退出(针对内容)方法
:x
说明:
①
:x
在文件没有修改的情况下,表示直接退出(等价于:q),在文件修改的情况下表示保存并退出(:wq)
② 如果文件没有被修改,但是使用wq 进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x 进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
问:我们该用x还是wq或者q!退出编辑器?
答:依据我们的工作场景和工作所所需。
五、文本文件处理命令
1、查看文件内容
①cat查看及合并
命令:cat
作用:查看文件内容
语法:cat 文件名称
cat 文件1 文件2 > 文件3
用法一:cat 文件名
示例代码:
#cat 1.txt
含义:显示1.txt文件的内容
特别注意:cat 命令用于查看文件内容时,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。cat 命令适合查看不太大的文件。
用法二:cat 文件1 文件2 > 文件3
示例代码:
#cat 1.txt 2.txt > 3.txt
含义:将1.txt和2.txt文件内容合并后,输出到3.txt
②more分屏显示文件
命令:more
作用:分屏查看文件
语法:more 文件名
流程:more在读取文件时,默认已经加载文件的全部内容。
用法一:more 文件名
示例代码:
#more /var/log/boot.log
含义:分页显示/var/log/boot.log文件的内容
more 命令的执行会打开一个交互界面,下面是一些常用交互命令:
回车键 | 向下移动一行。 |
---|---|
d | 向下移动半页。 |
空格键 | 向下移动一页。 |
b | 向上移动一页。 |
/ 字符串 | 搜索指定的字符串。 |
:f | 显示当前文件的文件名和行号。 |
q 或 Q | 退出 more。 |
③less分屏显示文件
命令:less
作用:分屏查看文件
语法: less 文件名
流程:不是加载整个文件,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。
示例代码:使用less命令查看/var/log/boot.log的文件内容
用法一:less 文件名
示例代码:
#less /var/log/boot.log
含义:分页显示/var/log/boot.log文件的内容
less 命令的执行也会打开一个交互界面,下面是一些常用交互命令(和more相同):
回车键 | 向下移动一行。 |
---|---|
d | 向下移动半页。 |
空格键 | 向下移动一页。 |
b | 向上移动一页。 |
/ 字符串 | 搜索指定的字符串。 |
:f | 显示当前文件的文件名和行号。 |
q 或 Q | 退出 more。 |
cat,more,less三者的对比:
cat | more | less | |
---|---|---|---|
作用 | 显示小文件(一屏以内) | 显示大文件(超过一屏) | 显示大文件(超过一屏) |
交互命令 | 无 | 有 | 有 |
上下键翻行 | 无 | 无 | 有 |
④head显示文件开头
命令:head
作用:查看一个文件的前n 行,如果不指定n,则默认显示前10 行。
语法:head [参数选项] 文件名
常见参数:-n 表示显示前n行的内容,n等于行数
用法一:head 文件名
示例代码:
#head /var/log/boot.log
含义:显示/var/log/boot.log文件的内容,默认为前10行用法二:head -n 文件名
示例代码:
#head -3 /var/log/boot.log
含义:显示/var/log/boot.log文件的前3行内容
⑤tail显示文件结尾(重点)
命令:tail
作用:查看一个文件的最后n 行,如果n 不指定默认显示最后10 行
语法:tail -n 文件路径 【n 表示数字】
常见参数:-n 显示最后n行的内容,n等于行数
-f 输出文件变化后新增加的数据(动态查看内容的或者数据的变化)
用法一:tail 文件名
示例代码:
#tail /var/log/boot.log
含义:显示/var/log/boot.log文件的内容,默认为最后10行用法二:tail -n 文件名
示例代码:
#tail -5 /var/log/boot.log
含义:显示/var/log/boot.log文件的最后5行内容
用法二:tail -f 文件名
示例代码:
#tail -f /var/log/messages
含义:显示/var/log/messages文件中,执行tail -f 命令后,新增的数据。
注意:作用相当于查看一个文件动态变化的内容,一般用于查看系统的日志的变化按下ctrl+c可以退出查看状态
注意:ctrl+c 键,在命令行中c 不再表示copy,而表示cancel(取消),在程序执行过程中,通常都可以使用ctrl+c来终止程序运行或者退出程序。
2、统计文件信息
①wc统计文件内容数量
命令:wc,wc = word count
作用:用于统计文件内容信息(包含行数、单词数、字节数)
语法:wc [参数选项] 文件名
常见参数:
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes, 字节数(空格,回车,换行)
用法一:wc -lwc 文件名 示例代码: #wc -lwc /var/log/boot.log 含义:统计/var/log/boot.log文件的行数,单词数,字节数
注意:wc命令选项可以混在一起搭配使用,但选项的顺序不影响输出结果,第一个是行数,第二个是单词数,第三个数字节数。
②du统计文件大小
命令:du
作用:查看文件或目录(会递归显示子目录)占用磁盘空间大小
语法: du [参数选项] 文件名或目录名
常见参数:
-s :summaries,只显示汇总的大小,统计文件夹的大小
-h:表示以高可读性的形式进行显示,如果不写-h,默认以KB的形式显示文件大小
用法一:du 文件名 示例代码: #du /var/log/boot.log 含义:统计/var/log/boot.log文件的大小用法二:du -h 文件名 示例代码: #du -h /var/log/boot.log 含义:统计/var/log/boot.log文件的大小,以高可读性显示
示例代码:统计 /var/log 目录大小
用法三:du 目录名 示例代码: #du /var/log/ 含义:统计/var/log/目录的大小,包含目录下每一个单独文件的大小用法四:du -s 目录名 示例代码: #du -s /var/log/ 含义:统计/var/log/boot.log文件的大小,汇总只显示目录大小用法五:du -sh 目录名 示例代码: #du -sh /var/log/ 含义:统计/var/log/boot.log文件的大小,汇总只显示目录大小,并采用高可读性
3、文本处理
①find文件查找(重点)
命令:find
作用:用于查找文档(其选项有55 个之多)
语法: find 路径范围 选项1 选项1的值 [选项2 选项2的值…]
常用参数:
-name:按照文档名称进行搜索(支持模糊搜索)
* : 通配符,匹配任意个任意字符
-type:按照文档的类型进行搜索,文档类型的值,f(file)表示文件,d(directory)表示文件夹
用法一:find 路径范围 选项1 选项1的值 选项2 选项2的值 示例代码: #find /var/ -name boot.log -type f 含义:在/var/目录下,查找名称等于boot.log,类型是文件的文档
用法二:find 路径范围 选项1 选项1的值使用通配符 选项2 选项2的值 示例代码: #find /var/log -name "*.log" -type f 含义:在/var/log目录下,查找所有.log结尾,类型是文件的文档,*.log需要用引号引起来。
用法一:find 路径范围 选项1 选项1的值 示例代码: #find /var/log -type d 含义:在/var/log目录下,查找所有文件夹
②grep搜索文件内容 (重要)
命令:grep
作用:在文件中直接找到包含指定信息的那些行,并把这些信息显示出来
语法:grep 要查找的内容 文件名
用法一:grep 查找的内容 文件名 示例代码: #grep network boot.log 含义:在boot.log文件中,查找包含network的行
用法二:grep 查找的内容 多个文件 示例代码: #grep network /var/log/* 含义:在/var/log目录下的所有文件中,查找包含network的行
③输出重定向
场景:
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
>:标准输出重定向 ,覆盖输出,会覆盖掉原先的文件内容
>>:追加重定向,追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
语法:有输出的命令 重定向符号 文件名
用法一:使用 > 进行覆盖输出 示例代码: #ll > llroot.txt 含义:将ll命令输出的内容,写入到llroot.txt文件中,如果llroot.txt文件中有其他内容,则先清空,在写入 注意:文件路径中的文件可以是不存在的文件,例如llroot.txt可以不存在,执行命令时会自动创建这个文件
用法二:使用 >> 进行追加输出 示例代码: #ll >> llroot.txt 含义:将ll命令输出的内容,追加写入到llroot.txt文件中 注意:文件路径中的文件可以是不存在的文件,例如llroot.txt可以不存在,执行命令时会自动创建这个文件
注:在编程的学习上要不断地练习,不要一味只看不练,只有你多练,你才会有不一样的体会。才能把别人优秀的东西转化为自己的财富
优质内容不断更新中,如有错误还望指出!
相关文章:
独一无二,万字详谈——Linux之文件管理
Linux文件部分的学习,有这一篇的博客足矣! 目录 一、文件的命名规则 1、可以使用哪些字符? 2、文件名的长度 3、Linux文件名的大小写 4、Linux文件扩展名 二、文件管理命令 1、目录的创建/删除 (1)、目录的创建 ① mkdir…...
达梦数据库-读写分离集群部署
读写分离集群部署 读写分离集群由一个主库以及一个或者多个(最多可以配置 8 个)实时备库组成,基于实时归档实现的高性能数据库集群,不但提供数据保护、容灾等数据守护基本功能,还具有读写操作自动分离、负载均衡等特性。同时可以配置确认监视…...
C#(事件)2
一、事件的使用步骤 定义委托(如果需要): 如果没有合适的预定义委托,就需要定义一个委托来匹配事件处理程序的签名。例如,public delegate void MyEventHandler(int value);定义了一个名为MyEventHandler的委托&…...
Linux xargs 命令使用教程
简介 xargs 是一个功能强大的 Linux 命令,用于从标准输入构建和执行命令。它接受一个命令的输出,并将其作为参数提供给另一个命令。它在处理大量输入时特别有用,其含义可以解释为:extended arguments,使用 xargs 允许…...
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
GitLab停止为中国大陆、香港和澳门地区提供服务,要求用户在60天内迁移账号,否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息: 1. 背景介绍:GitLab是一家全球知名的软件开发平台,提供代码托…...
Centos下的OpenSSH服务器和客户端
目录 1、在 IP地址为192.168.98.11的Linux主机上安装OpenSSH服务器; 2、激活OpenSSH服务,并设置开机启动; 3、在IP地址为192.168.98.33的Linux主机上安装OpenSSH客户端,使用客户端命令(ssh、scp、sftp)访…...
赋能新一代工业机器人-望获实时linux在工业机器人领域应用案例
在工业4.0蓬勃发展的当下,工业机器人作为制造业转型升级的中流砥柱,正朝着超精密、极速响应的方向全力冲刺。然而,为其适配理想的望获实时Linux系统,却犹如寻找开启宝藏之门的关键钥匙,成为众多企业在智能化进程中的棘…...
我的JAVA-Web基础(2)
1.JDBC 防止sql注入 2.JSP JSP的基本语法 基本语法是 <% %> Java代码 <% %> 输出变量 可以转换成${变量}的EL表达式 <%! %>定义变量 JSP的基本语法包括以下几个主要部分: 1. 表达式(Expression) 表达式用于将…...
OMG DDS 规范漫谈:分布式数据交互的演进之路
一、由来与起源脉络 OMG DDS(Object Management Group Data Distribution Service)的发展是计算机科学和技术进步的一个缩影,它反映了对高效、可靠的数据共享需求的响应。DDS 的概念萌生于20世纪90年代末,当时分布式计算已经从理…...
JVM系列(十二) -常用调优命令汇总
最近对 JVM 技术知识进行了重新整理,再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…...
人的心理特征
一、心理特征 通过心理学实验揭示了人类在认知、情感、行为等方面的一些普遍规律。 1. 社会性与从众心理 实验例子:阿什的从众实验(Asch Conformity Experiment)结论:人类天生具有从众的倾向,尤其是在群体中&#x…...
Python(二)str、list、tuple、dict、set
string name abcdefprint(name[0]) #a # 切片:取部分数据 print(name[0:3]) # 取 下标为0,1,2的字符 abc print(name[2:]) # 取 下标为2开始到最后的字符 cdef print(name…...
【CryptoJS库AES加密】
当涉及到前端加密时,通常需要使用加密算法来保护用户的敏感信息。下面是一个使用Vue 2和Vue 3的前端加密方法的示例: Vue 2版本的前端加密方法: // 安装crypto-js库 // npm install crypto-js --save// 导入CryptoJS模块 import CryptoJS f…...
FSW3410 双通道差分器2:1/1:2USB 3.1高速模拟切换 替代ASW3410
FSW3410 是 mux 或演示系统配置中的高速双向 被动交换机,适用于USBType-C™ 应用程序, 支持 USB3.1Gen1 和 Gen2 的数据速率。基于控 制引 脚SEL ,该 设备提供 在 PortA 或 PortB 到 PortCOM 之间的差分通道切换。 FSW3410 是一 种通用的模…...
【蓝桥杯——物联网设计与开发】基础模块8 - RTC
目录 一、RTC (1)资源介绍 🔅简介 🔅时钟与分频(十分重要‼️) (2)STM32CubeMX 软件配置 (3)代码编写 (4)实验现象 二、RTC接口…...
多摩川编码器协议
多摩川编码器是一种常用的绝对值编码器,其协议基于485硬件接口的标准NRZ协议,通讯波特率为固定的2.5Mbps。以下是多摩川编码器协议的详细说明: 硬件接口 多摩川编码器使用RS485接口进行通信,接口定义如下: 5V供电&…...
Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)
1、概述 在传统的单体应用中,事务管理相对简单,通常使用数据库的本地事务(如MySQL的BEGIN和COMMIT)来保证数据的一致性。然而,在微服务架构中,由于每个服务都有自己的数据库,跨服务的事务管理变…...
活着就好20241225
亲爱的朋友们,大家早上好!🌞 今天是25号,星期三,2024年12月的第二十五天,同时也是第51周的第三天,农历甲辰[龙]年十一月初二十一日。在这晨光熹微的美好时刻,愿那和煦而明媚的阳光照…...
navicat在pg数据库中设置自增
navicat在pg数据库中设置自增 问题来源: 在springboot的mubatisplus的插入数据操作时,我们设置了id为自增,但是由于数据库那边没有设置自增,导致数据id为null,插入失败,但是发现navicat设置pg数据库自增不…...
在瑞芯微RK3588平台上使用RKNN部署YOLOv8Pose模型的C++实战指南
在人工智能和计算机视觉领域,人体姿态估计是一项极具挑战性的任务,它对于理解人类行为、增强人机交互等方面具有重要意义。YOLOv8Pose作为YOLO系列中的新成员,以其高效和准确性在人体姿态估计任务中脱颖而出。本文将详细介绍如何在瑞芯微RK3588平台上,使用RKNN(Rockchip N…...
2025年PMP项目管理考试时间一览表
PMP认证是全球项目管理领域公认的权威认证,它不仅能证明你在项目管理方面的专业水平,还能大大提升你的职场竞争力! 随着企业对项目管理人才的需求不断增长,获得PMP认证将为你带来更多的职业机会和高薪职位。 为了帮助大家合理安排…...
NS3学习——tcpVegas算法代码详解(1)
目录 一、源码 二、详解 1.定义日志和命名空间 2.注册Typeld类:TcpVegas和GetTypeId方法的实现 3.构造函数和析构函数 4.TcpVegas类中成员函数 (1) Fork函数 (2) PktsAcked函数 (3) EnableVegas函数 (4) DisableVegas函数 一、源码 /* -*- Mode:C; c-file-style:&qu…...
【RAII | 设计模式】C++智能指针,内存管理与设计模式
前言 nav2系列教材,yolov11部署,系统迁移教程我会放到年后一起更新,最近年末手头事情多,还请大家多多谅解。 上一节我们讲述了C移动语义相关的知识,本期我们来看看C中常用的几种智能指针,并看看他们在设计模式中的运…...
亚马逊云科技re:Invent:2025年将发生新变化
自从2006年推出Simple Storage Service(S3)和Elastic Compute Cloud(EC2)云计算服务以来,亚马逊云科技在过去的18年中,一直都是全球云计算技术的开创者和引领者。而随着人工智能技术的飞速发展和生成式AI时…...
某集团GIF动态验证码识别
注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/other/16 最近某集团更新了验证码,采用gif验证码,部分数据集展示如下...
llama.cpp:PC端测试 MobileVLM -- 电脑端部署图生文大模型
llama.cpp:PC端测试 MobileVLM 1.环境需要2.构建项目3.PC测试 1.环境需要 以下是经实验验证可行的环境参考,也可尝试其他版本。 (1)PC:Ubuntu 22.04.4 (2)软件环境:如下表所示 工…...
美国加州房价数据分析01
1.项目简介 本数据分析项目目的是分析美国加州房价数据,预测房价中值。 环境要求: ancondajupyter notebookpython3.10.10 虚拟环境: pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2. 导入并探索数据集 通用的数据分析…...
聚类算法DBSCAN 改进总结
目录 1. HDBSCAN (Hierarchical DBSCAN) 2. OPTICS (Ordering Points To Identify the Clustering Structure) 3. DBSCAN++ (DBSCAN with Preprocessing) 4. DBSCAN with k-distance 5. Density Peaks Clustering (DPC) 6. Generalized DBSCAN (GDBSCAN) 总结 是的,DBS…...
深入理解 Spring IoC 容器与依赖注入:从基本概念到高级应用的全面解析
IoC 容器与依赖注入 一、什么是IoC容器二、IoC原理1. 原理解释2. 一个通俗易懂的解释3. 举个例子a. 传统方式:手动创建对象b. IoC 和 DI:控制反转与依赖注入c. 解释d.总结三、依赖注入(DI)的三种方式1. 构造器注入(Constructor Injection)2. 字段注入(Field Injection)…...
什么是自我控制能力?如何提高自我控制能力?
什么是自我控制能力? 自我控制能力指,在遇到外在事物或者心理活动发生变化之时,人们仍然可以把握自身,指导接下来行动的能力。自我控制能力对一个人来说非常重要,因为在遇到一些事情之事,如果因为控制能力…...
【基于rust-wasm的前端页面转pdf组件和示例】
基于rust-wasm前端页面转pdf组件和示例 朔源多余的废话花哨的吹牛那点东西要不要拿来试试事到如今 做个美梦 我觉得本文的意义在于,wasm扩展了浏览器的边界,但是又担心如同java的web applet水土不服. 如同我至今看不出塞班和iOS的不同下载地址:在github的备份 朔源…...
Issac ROS navigation测试
软硬件环境 GPU: RTX 6000 Ada 系统: Ubuntu22.4 1. 启动Issac sim 从这个网页Develop on NVIDIA Omniverse Platform | NVIDIA Developer下载Omniverse Launcher, 然后执行./omniverse-launcher-linux.AppImage,从EXCHANGE里依次安装Isa…...
WWW23-多行为级联|级联图卷积网络的多行为推荐
论文:https://arxiv.org/abs/2303.15720 代码:https://github.com/SS-00-SS/MBCGCN 这篇论文MB-CGCN和上一篇CRGCN是同一个团队的,都是级联的方式。一个用了残差,一个用了特征转换,文章最后有discussion讨论了两者的不…...
实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域
近日,ISC.AI 2024创新能力百强(以下简称“创新百强”)正式发布《ISC.AI 2024创新能力全景图谱》。该全景图谱是由政企、资本、高校、行业力量共同完成了领域划分、综合创新等标准的制定,整合梳理了参评的300余家数字安全厂商、120…...
『Linux学习笔记』FRPC 详细介绍及配置解析!
『Linux学习笔记』FRPC 详细介绍及配置解析! 文章目录 一. FRPC 详细介绍及配置解析FRPC 的主要功能FRPC 配置文件解析全局配置代理配置第一个代理服务第二个代理服务 配置文件整体工作流程常见配置项说明FRPC 的使用步骤注意事项结论 二. 参考文献 一. FRPC 详细介…...
JS信息收集(小迪网络安全笔记~
免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!! 附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,…...
nmap扫描优化
扫描优化用来提高扫描效率。当描一个大范围网络中的主机时,如果使用通用的方法可能需要很长的时间,此时可以使用一些特定选项进行扫描优化,以提高扫描效率。Nmap提供了几种优化方式,如分组扫描、设置发包方式和超时时间等。 分组…...
Nautilus源码编译傻瓜式教程二
Nautilus源码编译傻瓜式教程一 Nautilus编译 依赖项文件 接上文,点击小锤子进行编译后出现如下的错误提示 看这个报错,未找到文件或目录,再看前面的git地址是github就知道肯定是下载有问题,查找下Nautilus项目,发现在nautilus/build-aux/flatpak/org.gnome.Nautilus.json文件…...
并发编程(19)——引用计数型无锁栈
文章目录 十九、day191. 引用计数2. 代码实现2.1 单引用计数器无锁栈2.2 双引用计数器无锁栈 3. 本节的一些理解 十九、day19 上一节我们学习通过侯删链表以及风险指针与侯删链表的组合两种方式实现了并发无锁栈,但是这两种方式有以下缺点: 第一种方式…...
Santa Claus 2 (st表的lower_bound用法)
题目链接:Santa Claus 2 #pragma GCC optimize(2) #include <bits/stdc.h> #define int long long #define fi first #define se second #define all(v) v.begin(),v.end() using namespace std; const int inf 0x3f3f3f3f3f3f3f; const int N 2e55; int …...
Reed-Muller(RM)码之编码
点个关注吧! 看了一些中文的博客,RM码没有很详细的资料,所以本文尝试给出推导原理。 推导 RM码由 ( r , m ) ( r , m ) (r,m)两个参数定义,记作 R M ( r , m ) RM(r,m) RM(r,m)。其中满足 0 ≤ r ≤ m 0 ≤ r ≤ m 0≤r≤m,含义为: 码长: n = 2 m n=2^m n=2m 维数:…...
新世纪的语言智能:GPT-5技术革新与市场前景展望
目录 引言 第一章:GPT-4的成就与局限 1.1 GPT-4的成功 1.2 GPT-4的局限性 第二章:对GPT-5技术革新的预测 2.1 增强的上下文理解能力 2.2 多模态能力的提升 2.3 创造力与多样性的增强 2.4 常识性知识与伦理性的提升 第三章:GPT-5的市…...
国高材服务 | 高分子结晶动力学表征——高低温热台偏光显微镜
众所周知,聚合物制品的实际使用性能(如光学透明性、硬度、模量等)与材料内部的结晶形态、晶粒大小及完善程度有着密切的联系,因此,对聚合物结晶形态等的研究具有重要的理论和实际意义。 随着结晶条件的不用,…...
python+PyPDF2实现PDF的文本内容读取、多文件合并、旋转、裁剪、缩放、加解密、添加水印
目录 读取内容 合并文件 旋转 缩放 裁剪 加密和解密 添加水印 安装:pip install PyPDF2 -i https://pypi.tuna.tsinghua.edu.cn/simple 读取内容 from PyPDF2 import PdfReader, PdfMerger, PdfWriterdef read_pdf(pdf_path):pdf_reader PdfReader(pdf_p…...
蓝桥杯物联网开发板硬件组成
第一节 开发板简介 物联网设计与开发竞赛实训平台由蓝桥杯大赛技术支持单位北京四梯科技有限公司设计和生产,该产品可用于参加蓝桥杯物联网设计与开发赛道的竞赛实训或院校相关课程的 实践教学环节。 开发板基于STM32WLE5无线微控制器设计,芯片提供了25…...
idea2024创建JavaWeb项目以及配置Tomcat详解
今天呢,博主的学习进度也是步入了JavaWeb,目前正在逐步杨帆旗航,迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正…...
【蓝桥杯每日一题】分糖果——DFS
分糖果 蓝桥杯每日一题 2024-12-24 分糖果 DFS 题目描述 两种糖果分别有 9 个和 16 个,要全部分给 7 个小朋友,每个小朋友得到的糖果总数最少为 2 个最多为 5 个,问有多少种不同的分法。糖果必须全部分完。 只要有其中一个小朋友在两种方案中…...
矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例(中英双语)
本文中的例子来源于: 这本书,网址为:https://web.stanford.edu/~boyd/vmls/ 矩阵在资产收益(Asset Returns)中的应用:以资产回报矩阵为例 在量化金融中,矩阵作为一种重要的数学工具,被广泛用于描述和分析…...
Jimureport h2命令执行分析记录
首先找testConnection接口,前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找,接口找到发现请求参数是json var1是JmreportDynamicDataSourceVo类型,也就是如上图的dbSource,根据打印的结果可以知道这里是local cac…...
1114 Family Property (25)
This time, you are supposed to help us collect the data for family-owned property. Given each persons family members, and the estate(房产)info under his/her own name, we need to know the size of each family, and the average area and n…...