Shell 相关基础入门,在 Ubuntu 与 CentOS Shell 中的语法差异总结(bash、dash、sh)

news2026/5/18 14:40:31
新建的test.sh文件vim进去每行开头都默认有一个~符号是什么意思而且在里面鼠标也失效了你问的这两个问题恰好是初学者刚接触vim编辑器时最常遇到的两个困惑。它们完全正常不是系统出错了。一、每行开头的~波浪号是什么意思结论~表示这一行是空白行没有任何字符连空格都没有。详细解释符号含义~波浪号缓冲区buffer里没有内容的行普通字母/符号文件实际存在的内容你的情况你用vim test.sh创建了一个新文件新文件是空的所以整个屏幕都是空白区vim用~来标记这些空白行告诉你“这里没有内容”当你开始输入内容时#!/bin/bash echo hello ~ ~ ~第1、2行变成了实际内容没有~第3行及以后仍然是空白行还有~类比就像一本笔记本有字的页没有标记空白页印了一个淡淡的“此页空白”水印。二、为什么鼠标失效了结论vim默认运行在“纯键盘模式”下根本不支持鼠标操作。编辑器鼠标支持Vim默认不支持纯键盘操作VS Code完全支持Notepad完全支持Nano另一个命令行编辑器支持鼠标如果开启为什么 Vim 要这样设计历史原因Vim 诞生于 1991 年当时鼠标不是标配设计哲学手不离键盘提高编辑效率高手用键盘比鼠标快得多远程操作服务器上根本没有图形界面鼠标不存在在 Vim 里怎么操作你想要键盘操作代替鼠标移动光标h左、j下、k上、l右跳到行首0跳到行尾$删除一个字符x删除一行dd复制一行yy粘贴p保存并退出ESC→:wq→Enter如果你实在想用鼠标不推荐初学者在~/.vimrc中添加vimset mousea但这会改变 Vim 的正常行为选中文本会变成 Visual 模式反而更容易让初学者困惑。三、正确的 Vim 学习路径步骤操作1用vim test.sh打开文件2按i键进入插入模式屏幕底部会显示-- INSERT --3用键盘输入内容4按ESC键退出插入模式5输入:wq然后按Enter保存并退出记住 Vim 的两种核心模式命令模式默认按键盘是各种命令不能输入文字插入模式按i进入按键盘就是输入文字四、如果你只是想快速编辑文件不是学 Vim编辑器优点缺点nano简单直观底部有快捷键提示功能弱cat查看文件内容不能编辑echo 快速写入简单内容只能写不能改bash# 用 nano 编辑更友好 nano test.sh # 屏幕底部有 ^X Exit 等提示^ 表示 Ctrl 键 # 用 cat 快速创建 cat test.sh EOF #!/bin/bash echo hello EOF总结你的问题答案每行开头的~空白行的标记不是错误鼠标失效Vim 默认纯键盘这就是它的设计怎么输入文字按i进入插入模式怎么保存退出ESC→:wq→Enter不想学 Vim 怎么办用nano代替建议如果你未来想走大数据开发Vim 是服务器上必用的工具因为服务器没有图形界面值得花一天时间入门。但如果只是偶尔编辑小文件用nano完全够用。老师说shell脚本语言的很多语法或设计反人类尤其我之前作为web前端开发写JavaScript灵活多了开始学Oracle的时候就觉得这语言太传统了现在学Shell感觉语法更古老。请罗列shell语法需要注意的点或容易错误的点让我可以平稳过渡。比如空格 双圆括号 中括号 等你这个感受完全正确。作为前端开发者你已经被 JavaScript 的灵活性“惯坏了”。Shell 的设计年代1970年代决定了它的语法像一台老式手动挡汽车到处都是坑而且每个坑都摔过无数人。下面这张“Shell 语法避坑地图”专为你这种 JavaScript 背景量身定制。记住不要试图理解它“为什么反人类”只需要记住规则并绕过陷阱。一、最危险的陷阱空格敏感JavaScript 最自由Shell 最严格在 JavaScript 中空格基本无害。在 Shell 中空格是语法分隔符多一个少一个都会炸。场景✅ 正确写法没空格解释变量赋值nameTom等号两边绝对不能有空格条件判断if [ $a $b ]括号内部必须有空格变量最好加引号函数定义foo()或function foo()括号前后不要乱加空格bash# 典型案例一定会出错 nameTom # ✅ 正确 name Tom # ❌ 报错name: command not found记忆口诀赋值等号紧贴变量比较方括号留空隙。二、变量的引号地狱JS 模板字符串真香Shell 中双引号、单引号、反引号行为完全不同而且没有 JS 的模板字符串好使。引用方式行为$VAR(双引号)变量会展开$VAR(单引号)变量不会展开纯字面量cmd(反引号)执行命令获取输出bashnameworld echo hello $name # hello world双引号展开 echo hello $name # hello $name单引号不展开 # 建议除非你明确需要防止变量展开否则一律用双引号包裹变量 echo $name # ✅ 安全 echo $name # ⚠️ 如果变量有空格会被拆分容易炸黄金法则所有变量都用$VAR括起来。三、条件判断的括号迷阵JS 一个if走天下Shell 有3 种括号功能完全不同是新手最容易晕的地方。语法名称用途[ ]test 命令字符串/文件判断[[ ]]扩展 test支持正则、、||推荐(( ))算术运算数学计算、数值比较a5 b10 # ✅ 数值比较用 (( )) if (( a b )); then echo $a 小于 $b fi # ✅ 字符串比较用 [[ ]] nameAlice if [[ $name Alice ]]; then echo hello Alice fi # ❌ 错误用 [ ] 做数值比较会炸它比较的是字符串 if [ $a $b ]; then # 错误推荐写法字符串/文件用[[ ]]数字用(( ))忘记古老的[ ]。四、命令执行与管道JS 的 Promise 是天堂Shell 中命令执行、管道、错误处理非常原始。需求Shell 写法JS 类比执行命令并获取输出output$(ls -l)const output execSync(ls -l)上一条命令是否成功$?(0成功非0失败)没有直接类比逻辑与 (AND)cmd1 cmd2cmd1 cmd2逻辑或 (OR)cmd1 || cmd2cmd1 || cmd2管道前输出当后输入cmd1 | cmd2cmd1.pipe(cmd2)# 典型的脚本模式 if [ -f config.txt ]; then echo 文件存在 else echo 文件不存在创建中... touch config.txt fi # 检查命令是否执行成功 grep error app.log if [[ $? -eq 0 ]]; then echo 发现错误 fi五、函数定义与返回值JS 的函数是瑞士军刀Shell 函数非常原始没有return值只能用echo输出。概念Shell定义myfunc() { ... }调用myfunc参数$1, $2, $返回值只能用echo输出# ✅ 正确函数返回字符串用 echo get_name() { echo Alice } name$(get_name) # nameAlice # ❌ 错误return 只能返回 0-255 的状态码成功/失败 get_name() { return Alice # 错误return 不是返回值是退出码 }记忆Shell 函数就是一段命令集合不是 JS 的函数。六、常见错误速查表打印出来贴显示器旁错误代码原因正确写法command not found变量赋值有空格nameTom[: too many arguments变量未加引号有空格if [[ $var abc ]]unexpected operator[ ]里用了改用[[ $var abc ]]syntax error near unexpected tokenif后少了then或;if [[ ... ]]; thenbad substitution错误的变量语法${var}或$(cmd)七、一份“反人类但必须记住”的模板#!/bin/bash # 模板安全、健壮、可读 # 1. 变量等号无空格一律加双引号 nameworld greetingHello, $name # 2. 条件用 [[ ]] 和 (( )) if [[ -f config.txt ]]; then echo config exists fi if (( 5 3 )); then echo math works fi # 3. 命令替换用 $(...)不是反引号 current_date$(date %Y-%m-%d) echo Today is $current_date # 4. 函数输出用 echo get_full_name() { echo Alice Johnson } full_name$(get_full_name) # 5. 错误处理 if ! mkdir -p /tmp/mydir; then echo Failed to create directory exit 1 fi八、最后给你的心态建议感觉现实“这太原始了”它就是 1970 年代的设计目的不是优雅是在资源极度匮乏的环境下稳定运行“为什么不能像 JS 那样”因为 Shell 是胶水语言用来粘合各种小命令不是用来写复杂逻辑的“我该学到什么程度”能写50 行以内的脚本、能看懂别人写的脚本、能改 bug就完全够用一句话总结不要和 Shell 讲道理记住它的“奇葩规则”把它当工具用写完就跑。你的主业是大数据不是 Shell 专家。等你写几天 Shell再回去写 JS你会感动得流泪。Shell在不同Linux版本中语法好像有细微差异比如$ (($A$B))有些版本正确有些版本错误请使用表格总结常见差异你的观察非常敏锐$(( $A $B ))在某些系统上报错而在另一些系统上正常这确实是 Shell 脚本跨平台兼容性的经典问题。核心原因在于不同 Linux 发行版默认的/bin/sh指向不同的 Shell 实现。一、问题根源/bin/sh指向谁发行版/bin/sh实际指向特点Ubuntu / Debiandash轻量、POSIX 严格、启动快、功能少CentOS / RHELbash功能丰富、支持扩展语法Alpine Linuxbusybox ash极简、POSIX 子集macOSbash旧版或zsh取决于版本关键结论如果你用#!/bin/sh声明脚本Ubuntu 会用dash执行而 CentOS 会用bash执行。dash对语法要求更严格很多bash的“舒服写法”在dash下直接报错。你遇到的$(( $A $B ))问题正是因为dash对算术运算的语法要求更严格。二、Shell 语法差异速查表1. 算术运算语法BashDash/Zsh说明$(( a b ))✅✅标准写法通用$(( $a $b ))✅⚠️ 部分版本报错dash对$嵌套敏感$[ a b ]✅❌ 报错旧语法已废弃let a✅❌let: not foundlet是 bash 内建命令-2-7(( a ))✅❌ 语法错误C 风格循环同理✅ 通用写法result$((a b))内部变量不加$# ❌ 在 dash 中可能报错 result$(( $a $b )) # ✅ 通用写法 result$((a b))2. 条件判断语法BashDash/Zsh说明[ $a $b ]✅✅POSIX 标准[ $a $b ]✅❌ 部分报错是 bash 扩展-7[[ $a $b ]]✅❌ 语法错误[[ ]]是 bash 扩展[[ $a ~ regex ]]✅❌ 不支持正则匹配是 bash 扩展✅ 通用写法[ $a $b ]单等号双括号3. 字符串与数组语法BashDash/Zsh说明array(a b c)✅❌ 不支持数组是 bash 扩展-7${array[1]}✅❌ 不支持同上${#var}✅✅字符串长度${var:1:2}✅❌ 不支持子串截取是 bash 扩展-7${var^^}✅❌ 不支持大小写转换是 bash 扩展-7✅ 通用替代用cut、sed、awk或tr处理字符串# ❌ 子串截取 echo ${str:1:2} # ✅ 通用写法 echo $str | cut -c2-34. 函数语法BashDash/Zsh说明func() { ... }✅✅POSIX 标准function func() { ... }✅❌ 语法错误function关键字是 bash 扩展-7✅ 通用写法func() { ... }不要写function5. 循环语法BashDash/Zsh说明for i in {1..10}; do ...✅❌ 不展开{m..n}是 bash 扩展-7for ((i0;i10;i)); do ...✅❌ 语法错误C 风格循环是 bash 扩展-4-7select var in list; do ...✅❌ 不支持select是 bash 扩展-7✅ 通用写法for i in $(seq 1 10); do ...或while循环# ❌ dash 不支持 for ((i0;i10;i)); do echo $i; done # ✅ 通用写法 i0 while [ $i -lt 10 ]; do echo $i i$((i 1)) done6. 重定向与 Here Document语法BashDash/Zsh说明 string✅❌ 不支持Here String 是 bash 扩展-7word非数字✅❌ 报错err.log写法有问题-7✅ 通用写法用 Here Document 或file 21# ❌ Here String cat hello # ✅ Here Document cat EOF hello EOF7. Shebang 与执行方式场景BashDash/Zsh说明#!/bin/sh用/bin/sh执行用/bin/sh执行执行器取决于系统-1-5#!/bin/bash用 bash 执行用 bash 执行前提是系统安装了 bashsh script.sh忽略 shebang忽略 shebang强制用sh执行./script.sh按 shebang 执行按 shebang 执行尊重脚本第一行关键警告即使用了#!/bin/bash如果你用sh script.sh执行会强制使用sh忽略 shebang-7三、算术运算问题详解针对你提到的$(( $A $B ))a5 b3 # ❌ 在 dash 中可能报错 result$(( $a $b )) # dash 报错bad substitution # ✅ 通用写法内部不加 $ result$((a b)) # bash 和 dash 都支持 # ✅ 另一种通用写法 result$(expr $a $b) # 注意空格但性能较差[citation:6]为什么$(( $a $b ))在 dash 中会报错dash的解析器要求$(( ))内部不要使用$引用变量直接写变量名即可。虽然某些版本的dash可能宽容处理但为了跨平台兼容永远不要在内层加$。四、如何编写跨平台脚本方案一坚持 POSIX 标准推荐生产环境使用#!/bin/sh仅 POSIX 语法功能受限但到处能跑。#!/bin/sh # POSIX 兼容写法 a5 b3 result$((a b)) # 算术 [ $a -eq $b ] echo eq # 比较 for i in $(seq 1 10); do # 循环 echo $i done方案二明确使用 bash用#!/bin/bash声明并确保脚本以./script.sh或bash script.sh方式执行-1-7。#!/bin/bash # 大胆使用 bash 扩展 array(a b c) for ((i0;i10;i)); do echo $i done方案三测试你的脚本# 用 dash 测试Ubuntu dash script.sh # 用 bash 测试 bash script.sh # 检查语法 sh -n script.sh五、一句话总结你的问题答案为什么$(( $a $b ))在某些系统报错Ubuntu 的/bin/sh是dash要求算术运算内变量不加$通用写法是什么result$((a b))最安全的策略生产环境用#!/bin/sh POSIX 语法复杂功能用#!/bin/bash我用的Ubuntu老师用的CentOStest.sh开头的确老师推荐写的是#!/bin/sh执行的时候老师用的是 sh test.sh。我应该是用 bash test.sh执行吗你的判断完全正确而且你问到了一个非常关键、生产环境必踩的坑。结论先行在你的 Ubuntu 上应该用bash test.sh执行或者把脚本第一行改成#!/bin/bash然后用./test.sh执行。一、为什么老师用sh test.sh没事你用就会出问题环境/bin/sh实际指向sh test.sh的效果老师的 CentOSbash等于在用bash执行语法宽松你的 Ubuntudash在用dash执行语法严格很多写法报错结论同样写#!/bin/shsh test.sh在你俩机器上实际用的解释器不一样。这就是为什么老师写的脚本在你机器上可能报错你按老师的习惯写脚本可能被dash卡住二、你应该怎么做三个方案方案做法优点缺点方案一推荐学脚本第一行写#!/bin/bash执行用./test.sh需chmod x或bash test.sh语法丰富和老师教的兼容方案二最稳妥脚本第一行写#!/bin/sh但执行时用bash test.sh不依赖 shebang强制用 bash每次执行要多敲bash方案三不推荐强行适配dash只写 POSIX 语法脚本到处能跑语法限制多很痛苦不适合学习三、具体操作示例#!/bin/bash./test.sh#!/bin/bash # 第一行写 bash而不是 sh a5 b3 echo $((a b)) # 算术 array(1 2 3) # 数组也可以用 echo ${array[0]}执行方式chmod x test.sh ./test.sh # 或 bash test.sh四、验证你的环境强烈建议亲手跑一下# 1. 查看 /bin/sh 指向谁 ls -l /bin/sh # Ubuntu 输出/bin/sh - dash # CentOS 输出/bin/sh - bash # 2. 测试脚本 cat test.sh EOF #!/bin/sh if [[ a a ]]; then echo 双等号测试 fi EOF # 3. 用 sh 执行Ubuntu 会报错 sh test.sh # 报错test.sh: 2: [[: not found # 4. 用 bash 执行成功 bash test.sh # 输出双等号测试五、学习阶段的建议阶段建议写法执行方式跟着老师抄作业脚本里写#!/bin/bash用bash test.sh执行自己写练习脚本用#!/bin/bash养成好习惯考试 / 作业提交按老师要求来如果老师用 CentOS他的shbash你写#!/bin/sh在他那边也能跑一个现实建议你可以继续用#!/bin/sh写脚本但执行时一律用bash test.sh。这样语法上你和老师保持一致他读你脚本不别扭执行上你在 Ubuntu 不会踩dash的坑总结一句话在 Ubuntu 上用#!/bin/bash或bash test.sh执行才能和 CentOS 的行为对齐。不是说 bash test.sh和sh test.sh一样吗不一样这是 Shell 学习中最常见的误解之一你问到了关键点。核心结论执行方式Ubuntu 上实际用的是CentOS 上实际用的是bash test.shbashbashsh test.shdash不是 bashbashsh 指向 bash结论bash test.sh和sh test.sh在 Ubuntu 上不一样在 CentOS 上才一样。为什么会有这个误解因为很多人包括老师在 CentOS 上学习CentOS 的/bin/sh是软链接指向/bin/bash所以执行sh test.sh就等于执行bash test.sh。# CentOS 上 ls -l /bin/sh # 输出/bin/sh - bash ← sh 就是 bash # 所以这两个命令完全等价 sh test.sh # 实际执行的是 bash bash test.sh # 也是 bash但在 Ubuntu 上不一样# Ubuntu 上 ls -l /bin/sh # 输出/bin/sh - dash ← sh 是 dash不是 bash # 这两个命令不等价 sh test.sh # 实际执行的是 dash语法严格、功能少 bash test.sh # 执行的是 bash功能丰富验证实验强烈建议你自己跑一遍# 1. 创建一个测试脚本 cat test.sh EOF #!/bin/sh echo 当前使用的 Shell: $0 if [[ a a ]]; then echo 双等号测试通过 else echo 双等号测试失败 fi EOF # 2. 用 sh 执行Ubuntu 上会报错 sh test.sh # 输出 # 当前使用的 Shell: sh # test.sh: 4: [[: not found ← dash 不认识 [[ # 双等号测试失败 # 3. 用 bash 执行成功 bash test.sh # 输出 # 当前使用的 Shell: bash # 双等号测试通过 ← bash 认识 [[为什么 Ubuntu 要把/bin/sh设为dash原因说明性能dash 比 bash 轻量得多启动快 2-3 倍标准化dash 严格遵循 POSIX 标准不添加扩展语法系统脚本Ubuntu 系统自己的启动脚本都用 dash 执行加速开机代价很多在 bash 里写得很舒服的语法[[ ]]、数组、、source等在 dash 里直接报错。你在 Ubuntu 上应该怎么做你的需求推荐做法说明跟着老师学CentOS 风格用bash test.sh执行绕开 dash行为与 CentOS 一致自己写脚本练习脚本第一行写#!/bin/bash然后chmod x./test.sh养成好习惯考试/作业提交用bash test.sh测试通过后再提交确保语法正确写跨平台脚本只写 POSIX 语法用sh test.sh测试到处能跑不推荐初学者一句话记忆Ubuntu 上sh不是bash是dash。想用 bash 就写bash或#!/bin/bash。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…