很漂亮的小站!
[...]blog:locate 命令:文件查找命令 - 灵魂信息 (soulio.top)[...]
首页
留言
统计
友链
归档
关于
Search
1
typecho博客-SEO优化-永久链接设置-伪静态
229 阅读
2
qm 命令:管理PVE虚拟机
155 阅读
3
搭建网站的三种方式:家庭服务器、云服务器、serv00免费服务器
146 阅读
4
用脚本查看serv00主机(FreeBSD系统)配置
115 阅读
5
smartctl 命令:查看硬盘健康状态
111 阅读
网站搭建
Linux命令详解
登录
Search
标签搜索
Linux命令
serv00
Linux
网站搭建
typecho
Excel
正则表达式
PVE
mdx
docusaurus
在线知识库
soulio
累计撰写
147
篇文章
累计收到
5
条评论
今日撰写
0
篇文章
首页
栏目
网站搭建
Linux命令详解
页面
留言
统计
友链
归档
关于
用户登录
登录
搜索到
147
篇与
的结果
2024-09-22
正则表达式基础
简介正则表达式(Regular Expression,简称 regex 或 regexp)是一种用来匹配和处理文本的模式表示法。它提供了一套强大的搜索、替换和处理文本的工具,用于描述特定的字符序列。用途: 文本搜索 文本替换 数据验证:如验证电子邮件地址、电话号码、邮政编码等格式是否正确。 数据提取:从日志文件、网页、文档等复杂文本中提取需要的信息。 视频教程入门进阶复习基础语法正则表达式由普通字符(字母、数字)和元字符(例如.、*等)组成,这些字符和元字符形成了匹配规则。普通字符直接匹配字符串,例如文本 /etc/apt/sources.list 内容为: # newer versions of the distribution. deb http://cn.archive.ubuntu.com/ubuntu/ jammy main restricted # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://cn.archive.ubuntu.com/ubuntu/ jammy-updates main restricted # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates main restricted 此处忽略几十行 过滤掉注释和空行:cat /etc/apt/sources.list | grep 'deb http' deb http://cn.archive.ubuntu.com/ubuntu/ jammy main restricted deb http://cn.archive.ubuntu.com/ubuntu/ jammy-updates main restricted deb http://cn.archive.ubuntu.com/ubuntu/ jammy universe deb http://cn.archive.ubuntu.com/ubuntu/ jammy-updates universe deb http://cn.archive.ubuntu.com/ubuntu/ jammy multiverse deb http://cn.archive.ubuntu.com/ubuntu/ jammy-updates multiverse deb http://cn.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted deb http://security.ubuntu.com/ubuntu/ jammy-security universe deb http://security.ubuntu.com/ubuntu/ jammy-security multiverse 元字符 元字符 含义 示例 . 匹配除换行符以外的任意单个字符 a.c 可以匹配 "abc"、"adc"、"a1c" 等 ^ 匹配字符串的开头 ^abc 匹配以 "abc" 开头的字符串 $ 匹配字符串的结尾 abc$ 匹配以 "abc" 结尾的字符串 * 匹配前面的元素零次或多次 ab*c 匹配 "ac"、"abc"、"abbc" 等 + 匹配前面的元素一次或多次 ab+c 匹配 "abc"、"abbc",但不匹配 "ac" ? 匹配前面的元素零次或一次 ab?c 匹配 "ac"、"abc" [] 定义字符类,匹配方括号中任意一个字符 [aeiou] 匹配任何一个元音字母[a-z] 匹配所有小写字母 | 表示“或”关系,匹配两者之一 http|https 匹配 "http"、"https" () 用于分组,影响量词作用范围 (ab)+ 匹配 "ab"、"abab"、"ababab" 等 \ 用于转义下一个字符,使其失去特殊含义。匹配它们的字面意义。 \. 可以匹配句号.本身(字面)\\ 可以匹配本身\本身(字面) 字符类 字符 作用 写法示例 [...] 匹配括号内的任意一个字符 [abc] 匹配 "a"、"b" 或 "c" 中的任意一个字符 [^...] 匹配不在括号内的任意字符 [^abc] 匹配除了 "a"、"b"、"c" 以外的任意字符 过滤掉注释和空行:cat /etc/apt/sources.list | grep -P '^[^#]' 分组语法符号:使用括号 () 将多个字符或子表达式视为一个整体。用途:捕获子串、重复匹配、替换部分内容等。1. 捕获分组捕获分组将匹配到的内容存储起来,便于后续操作,比如提取子串或替换匹配部分。语法:(pattern)例如: (ab)c 这里 (ab) 是一个捕获分组,匹配到 "ab",后面紧跟一个 "c"。匹配结果会将 "ab" 存储为一个组。 示例:提取电话号码中的区号 (\d{3})-(\d{3})-(\d{4}) 输入字符串:123-456-7890 捕获分组1:123 (区号) 捕获分组2:456 捕获分组3:7890通过捕获分组,可以很容易地提取到区号或其他部分。 2. 非捕获分组有时我们只想对表达式进行分组,但不需要捕获其中的内容。这时可以使用非捕获分组。语法:(?:pattern)非捕获分组不会保存匹配的内容,只用于逻辑上的分组或应用操作。例如: (?:ab)+ 匹配 "ab" 的一次或多次重复,但不会将每次匹配的 "ab" 作为捕获分组存储。 3. 命名捕获分组有时为了更好地管理分组,尤其是在复杂的正则表达式中,可以为捕获分组指定名称,以便更清晰地引用。语法:(?<name>pattern)例如: (?<area_code>\d{3})-(?<prefix>\d{3})-(?<line_number>\d{4}) 这段正则表达式捕获电话中的不同部分,并为每个部分指定了名字:area_code、prefix 和 line_number。 这样,匹配到的电话号码部分就可以通过名称来引用,而不是通过数字索引。 4. 引用分组捕获分组在匹配完成后,可以通过反向引用的方式再次使用已经捕获的内容。反向引用通过 \数字 来表示,其中 数字 是捕获组的编号。例如: (\w)\1 这里的 (\w) 捕获了一个单词字符,\1 则引用了这个捕获的字符。因此,它可以匹配两个相同的字符连续出现的情况,比如 "aa" 或 "bb"。 示例:匹配重复的单词 \b(\w+)\b\s+\1\b 匹配两个连续相同的单词,如 hello hello。 捕获分组 (\w+) 保存了第一个单词,\1 则引用这个单词,以匹配后续的重复单词。 5. 分组的嵌套分组可以嵌套使用,一个分组内部可以包含其他分组,匹配到的内容会依次按左括号出现的顺序编号。例如: ((\d{3})-(\d{4})) 捕获分组1:(\d{3})-(\d{4}) (整个字符串) 捕获分组2:\d{3} (前三位数字) 捕获分组3:\d{4} (后四位数字) 示例应用:1. 提取日期假设我们要提取日期格式为 YYYY-MM-DD 的字符串中的年份、月份和日期: (\d{4})-(\d{2})-(\d{2}) 捕获分组1:年份(4位数字)。 捕获分组2:月份(2位数字)。 捕获分组3:日期(2位数字)。输入字符串 2024-09-22,捕获结果为: 分组1:2024 分组2:09 分组3:22 2. 替换文本中的部分内容假设有一个文本:"My phone number is 123-456-7890",我们想用 *** 替换中间三位数字: import re text = "My phone number is 123-456-7890" result = re.sub(r'(\d{3})-(\d{3})-(\d{4})', r'\1-***-\3', text) print(result) # 输出: My phone number is 123-***-7890 总结 捕获分组用于匹配和存储子串。 非捕获分组用于逻辑上的分组,而不捕获内容。 命名捕获分组通过命名使表达式更加易读。 反向引用允许在正则表达式中重新使用已经捕获的内容。 复用语法复用规则可以让表达式更简洁。(1)快捷元符号(基础元符号的简便写法) 元字符 作用 \d 匹配任意数字,相当于 [0-9] \D 匹配任意非数字字符,相当于 [^0-9] \w 匹配任意字母、数字或下划线字符,相当于 [a-zA-Z0-9_] \W 匹配任意非字母、数字或下划线字符,相当于 [^a-zA-Z0-9_] \s 匹配任意空白字符,包括空格、制表符、换行符等 \S 匹配任意非空白字符 \b 匹配单词边界 \B 匹配非单词边界 (2)量词(量词不是元符号,用来指定前面元素的重复次数。) 字符 作用 写法示例 {n} 匹配前面的元素恰好 n 次 a{2} 匹配 "aa" {n,} 匹配前面的元素至少 n 次 a{2,} 匹配 "aa"、"aaa" 等 {n,m} 匹配前面的元素至少 n 次,但不超过 m 次 a{2,4} 匹配 "aa"、"aaa" 或 "aaaa" 断言语法断言本身不匹配字符,它只是定义了一个条件,要求在某个位置满足特定条件才能继续匹配。 正向先行断言(后面满足条件) :用(?=...)表示,表示在当前位置之后的字符串需要满足括号中的条件才能匹配。例如,正则表达式foo(?=bar)会匹配后面紧跟着bar的foo。 负向先行断言(后面不满足条件) :用(?!...)表示,表示在当前位置之后的字符串不能满足括号中的条件才能匹配。例如,正则表达式foo(?!bar)会匹配后面不是bar的foo。 正向后顾断言(前面满足条件) :用(?<=...)表示,表示在当前位置之前的字符串需要满足括号中的条件才能匹配。例如,正则表达式(?<=foo)bar会匹配前面紧跟着foo的bar。 负向后顾断言(前面不满足条件) :用(?<!...)表示,表示在当前位置之前的字符串不能满足括号中的条件才能匹配。例如,正则表达式(?<!foo)bar会匹配前面不是foo的bar。 在线练习 正则表达式在线测试工具:regex101.com 正则在线测试工具:egexr-cn.com 正则练习:codejiaonang.com
2024年09月22日
28 阅读
0 评论
0 点赞
2024-09-22
linux如何启用ipv6随机地址
简介在 IPv6 中,临时随机地址(Temporary IPv6 Address)是一种为了提高隐私和安全而设计的功能。通常,默认的 IPv6 地址是基于设备的 MAC 地址生成的,容易导致跟踪和识别设备。启用临时 IPv6 地址可以避免这个问题,因为临时地址会定期变化,不易被长期跟踪。工作原理 SLAAC(无状态地址自动配置) :默认情况下,设备使用 SLAAC 生成 IPv6 地址,结合了网络前缀和设备的接口标识符(通常基于 MAC 地址)。临时地址是 SLAAC 的扩展,用于生成随机的接口标识符。 临时地址会定期生成,并且会有一个有限的有效期。在该有效期内,地址用于外部通信。有效期过后,地址将不再使用并生成新的临时地址。 启用临时随机 IPv6 地址方法 1:修改 sysctl 配置 编辑 sysctl 配置文件:sudo nano /etc/sysctl.conf 添加以下配置行,启用临时 IPv6 地址:net.ipv6.conf.all.use_tempaddr=2 net.ipv6.conf.default.use_tempaddr=2 0: 禁用临时地址。 1: 启用临时地址,但系统默认会使用永久地址进行通信。 2: 强制使用临时地址进行外部通信。 保存文件并退出编辑器后,运行以下命令使更改生效:sudo sysctl -p 方法 2:通过命令行临时启用如果不希望永久更改配置,也可以通过命令行临时启用临时地址(仅在当前会话有效):sudo sysctl -w net.ipv6.conf.all.use_tempaddr=2 sudo sysctl -w net.ipv6.conf.default.use_tempaddr=2 验证是否启用了临时地址可以通过 ip 或 ifconfig 命令查看网络接口的 IPv6 地址,检查是否已经分配了一个临时地址。使用以下命令查看接口地址:ip a 查找带有 temporary 或 dynamic 标识的 IPv6 地址。例如:inet6 2001:db8::1234/64 scope global temporary dynamic 这表示系统已经分配了临时 IPv6 地址。临时 IPv6 地址的有效期临时地址有一个“优先使用时间”和一个“有效时间”。在优先时间内,系统会优先使用该地址进行通信。一旦优先时间过期,地址仍然有效但不再用于新连接,直到有效时间结束后地址被废弃。系统将自动生成新地址替代它。手动刷新或生成新地址如果需要手动生成新的临时 IPv6 地址,可以重启网络接口:sudo ip link set dev <接口名> down sudo ip link set dev <接口名> up 例如,对于 eth0 接口:sudo ip link set dev eth0 down sudo ip link set dev eth0 up 总结:临时 IPv6 地址是提高隐私和安全的有效方式。通过启用 use_tempaddr 参数,你的设备可以使用随机生成的临时地址来进行网络通信,避免基于 MAC 地址的跟踪。
2024年09月22日
34 阅读
0 评论
0 点赞
2024-09-22
不同的ipv6地址的用途
查看地址使用 ip a 命令查看 ip 地址 inet6 2409:5469:e5d4:0662:dd5c:a5aa:a929:d/128 scope global dynamic noprefixroute valid_lft 7077sec preferred_lft 3477sec inet6 2409:3a66:5832:23d7:8eb3:a9ef:8ea5:797d/64 scope global temporary deprecated dynamic valid_lft 6932sec preferred_lft 0sec inet6 2409:0019:7c37:61ef:a0b6:beb2:36f4:393b/64 scope global temporary deprecated dynamic valid_lft 6932sec preferred_lft 0sec inet6 2409:3c4f:f80f:67e2:ac72:69ed:5941:7494/64 scope global temporary deprecated dynamic valid_lft 6932sec preferred_lft 0sec inet6 2409:4286:e17a:a006:6b6d:927e:4cb6:1a7b/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 6932sec preferred_lft 3332sec inet6 fe80::1a2b:3c4d:5e6f:7g8h/64 scope link noprefixroute valid_lft forever preferred_lft forever 以下是不同 ipv6 地址的含义:公网地址地址 1: inet6 2409:5469:e5d4:0662:dd5c:a5aa:a929:d/128 scope global dynamic noprefixroute valid_lft 7077sec preferred_lft 3477sec 前缀长度:/128(表示该地址是唯一的,不属于子网) scope global:这是一个全球范围的地址,可以在互联网上使用。 dynamic:动态分配,可能通过 DHCPv6 或 SLAAC 获取。 noprefixroute:表示系统不会自动为该地址添加路由前缀,需要手动配置路由。路由可以暂时忽略,默认情况下它不会影响你上网、搭建网络服务。 valid_lft 7077sec:该地址在未来 7077 秒内有效。 preferred_lft 3477sec:在未来 3477 秒内,该地址是首选的,优先用于新的连接。 用途:该地址是一个唯一的全球范围的 IPv6 地址,适合用于与外部网络的通信,但不会自动配置路由(需手动管理)。在 preferred_lft 到期前,系统会优先使用该地址建立连接。 默认地址:在搭建 web 服务默认时系统默认使用的这个地址。 安全隐患:会暴露局域网中其他 ipv6 设备的地址,因为 DHCP 是连号分发的。尤其在家庭网络中,千万不要使用这个地址。 随机公网地址地址 2, 3, 4(过期): inet6 2409:3a66:5832:23d7:8eb3:a9ef:8ea5:797d/64 scope global temporary deprecated dynamic valid_lft 6932sec preferred_lft 0sec inet6 2409:0019:7c37:61ef:a0b6:beb2:36f4:393b/64 scope global temporary deprecated dynamic valid_lft 6932sec preferred_lft 0sec inet6 2409:3c4f:f80f:67e2:ac72:69ed:5941:7494/64 scope global temporary deprecated dynamic valid_lft 6932sec preferred_lft 0sec 前缀长度:/64,表示属于一个子网,可以用于同子网内的通信。 scope global:全球范围的地址,可路由到互联网。 temporary:这是一个临时地址,主要用于隐私保护。 deprecated:该地址已被弃用,不再用于新连接,但仍可用于现有连接。 dynamic:动态分配,通常通过 SLAAC 或 DHCPv6 获取。 valid_lft 6932sec:在未来 6932 秒内仍然有效。 preferred_lft 0sec:该地址的优先生命周期已过期,不再用于新的连接。 用途:这几个地址是临时的全球范围地址,主要用于隐私保护功能,避免设备长期使用同一地址进行通信。由于这些地址已过期(deprecated),它们不会被用于新的连接,但现有连接仍然可以继续使用,直到 valid_lft 到期。过期:没有价值了。地址 5(生效中): inet6 2409:4286:e17a:a006:6b6d:927e:4cb6:1a7b/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 6932sec preferred_lft 3332sec 前缀长度:/64,表示属于一个子网。 scope global:全球范围的地址,可以路由到互联网。 dynamic:动态分配。 mngtmpaddr:由隐私扩展生成的临时地址,通常用于防止设备跟踪,属于隐私地址。 noprefixroute:没有自动配置路由,路由需要手动管理。 valid_lft 6932sec:该地址在 6932 秒内仍然有效。 preferred_lft 3332sec:在 3332 秒内是优选地址。 用途:这是一个动态分配的全球范围的临时隐私地址,用于保护隐私。它不会自动配置路由,因此需要手动管理。它的优先生命周期还未过期,设备在新连接时会优先使用该地址。推荐地址:推荐使用这个地址搭建网络服务,避免暴露局域网中其他设备的Ipv6地址。链路本地地址链路本地地址(Link-Local Address)用于本地链路上的通信,只能在同一个网络段(链路)内使用,不能通过路由器转发。地址 6(本地): inet6 fe80::1a2b:3c4d:5e6f:7g8h/64 scope link noprefixroute valid_lft forever preferred_lft forever 前缀长度:/64,表示属于一个链路本地子网。 scope link:链路本地地址,只能在本地链路上有效,无法用于互联网通信。 noprefixroute:没有自动配置路由。 valid_lft forever:该地址永久有效。 preferred_lft forever:该地址是永久优选的。 用途:链路本地地址用于本地设备之间的直接通信,通常用于邻居发现协议(NDP)、自动配置或网络调试。它只能在本地链路内使用,无法进行全局路由,也无法访问互联网。
2024年09月22日
16 阅读
0 评论
0 点赞
2024-09-22
nano 命令:文本编辑器
一、命令简介nano 是一个简单易用的文本编辑器,适合初学者和那些不需要复杂功能的用户。相关命令(不同难度的编辑器): 初级难度:nano 中级难度:vim 终极难度:Emacs 二、命令参数启动 nano 编辑器nano [文件名] 如果文件存在,nano 将打开该文件进行编辑;如果文件不存在,将会创建一个新文件。在 nano 中保存文件并退出,可以按 Ctrl + O 来保存,然后按 Ctrl + X 退出。常用快捷键 Ctrl + G:打开帮助菜单 Ctrl + O:保存文件 Ctrl + X:退出 nano。如果对文件做了修改,它会询问你是否要保存更改。 Ctrl + K:剪切光标所在的行 Ctrl + U:粘贴 Ctrl + C:显示光标位置 Ctrl + _:撤销更改 Alt + Y:重复上一个操作 Ctrl + R:插入文件内容 Ctrl + \:设置标记 Ctrl + 6:跳转到标记位置 Alt + A:光标移至行首 Alt + E:光标移至行尾 Alt + B:光标后退一个单词 Alt + F:光标前进一个单词 Ctrl + W:搜索文本 Alt + W:保存当前文件内容为另一个文件 配置 nano用户可以在家目录下创建或编辑一个名为 .nanorc 的文件来定制 nano 的行为,包括设置快捷键、语法高亮等。三、命令示例 打开文件:nano filename 保存文件: 按 Ctrl + O,然后按 Enter 键保存文件。 退出编辑器: 按 Ctrl + X 退出编辑器。 查找文本: 按 Ctrl + W 进入查找模式,输入要查找的文本,按 Enter 键查找。 复制粘贴: 使用 Ctrl + Shift + 6(Ctrl + ^)进行标记,移动光标选择文本,然后使用 Ctrl + K 剪切或 Ctrl + U 复制,最后使用 Ctrl + U 粘贴。 显示帮助: 在 nano 中,底部会显示常用的快捷键,以及可以按 Ctrl + G 查看更多帮助信息。 tips:nano 是 GNU Project 的一部分。
2024年09月22日
25 阅读
0 评论
0 点赞
2024-09-21
mv 命令:移动、剪切、重命名目录
一、命令简介mv 命令在Linux系统中用于移动文件或目录,也可以用于重命名文件或目录。二、命令参数mv [选项] 源目录/文件 目标目录/文件 常见选项: -i:交互式操作,移动文件前提示用户确认。 -u:仅移动源文件比目标文件新或目标文件不存在的文件。 -v:详细模式,显示移动过程中的详细信息。 三、命令示例 移动文件:mv file1.txt dir1/ 重命名文件:mv file1.txt newfile.txt 交互式移动:mv -i file1.txt dir1/ 仅移动更新的文件:mv -u dir1/* dir2/ 详细模式:mv -v file1.txt dir1/ 移动并重命名文件:mv file1.txt dir1/newfile.txt 移动目录:mv -v dir1/ dir2/ 将多个文件移动到目录:mv file1.txt file2.txt dir1/
2024年09月21日
14 阅读
0 评论
0 点赞
1
...
13
14
15
...
30