尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
RH134命令行效率:历史命令、Tab补全、展开与别名实战指南
敲命令这事表面看是体力活实际是个技术活。RH134 的第一章讲的就是怎么把命令行用得又快又顺——历史命令、自动补全、展开机制、别名每一样都是实打实的内功。学完这部分你敲键盘的次数至少能降下来一半很多重复动作直接一条命令带过出错概率也跟着降。我当年备考 RHCSA 前就靠这些技巧在实验练习里抢了不少时间后来带新人做环境部署也总是先把这一章的内容按头让他们过一遍。这一章不值得“略读”它属于那种“当时觉得简单、后面天天在用”的基础功。这篇文章我就按 RH134 第一章的主线来拆把历史命令、Tab 补全、命令行展开、别名这几个话题讲透每个话题都附上我实际用下来的经验和踩过的坑最后再给一份问题速查。适合刚接触 Linux 命令行、准备考 RHCSA、或者天天泡在终端里但还没系统整理过操作习惯的人。1. 历史命令的深度使用让回车键帮你记一切1.1 历史命令的存储机制bash 在交互式终端里会把你敲过的每一条命令都记在内存里这个记录就是“历史列表”。默认情况下shell 退出时会把内存里的历史写入家目录下的.bash_history文件下次打开终端再把这些历史加载回来。这个机制每天都在运行但很多人从来没搞清楚过里面的细节导致后面遇到“历史记录丢了”“找不到刚才的命令”之类的问题。先看一个最直接的命令history它会列出当前会话能访问到的历史记录每一行前面带一个序号。比如输出第 235 行是systemctl restart httpd那你可以直接用!235精确重跑这条命令。这个序号在后面的展开操作里非常有用尤其是当你需要反复执行某条长命令时记下序号比去历史里翻半天高效太多。在.bash_history里存的是什么是纯文本一行一条命令。默认配置下历史文件里最多保存 2000 条由HISTFILESIZE控制内存历史列表里最多保存 1000 条由HISTSIZE控制。两个变量名字看着像作用位置不同HISTSIZE管的是当前终端里能 recall 多少条HISTFILESIZE管的是写盘后文件里有多少条。很多人改配置只改一个改完发现不生效大概率就是这两个变量没一起调。1.2 让历史记录更好用的几个变量日常使用中我建议至少设置这么一组值export HISTSIZE5000 export HISTFILESIZE10000 export HISTTIMEFORMAT%F %T export HISTCONTROLignoredups:ignorespaceHISTTIMEFORMAT挺有意思设置之后history命令会多显示一列时间戳格式和date命令的格式串一致。比如%F是2025-01-15这样的日期%T是14:30:22这样的时间。排查“这条命令到底是谁在什么时候敲的”时特别好用。注意这个变量只影响新写入的历史记录之前已经存进文件的旧记录不会自动补上时间所以最好趁早配上。HISTCONTROL里的两个值分别解决两类烦心事ignoredups连续重复的命令只记一次避免满屏都是ls。ignorespace以空格开头的命令不记入历史适合临时输入密码类命令时不留下痕迹。这两个值是逗号分隔的可以一起开。不过要提醒一句ignorespace只对“行首空格”生效你用sudo时命令里带密码的话密码本身并不会被特殊处理该记还是会记下来。谨慎一点的做法是设置HISTCONTROLignorespace后凡是涉及明文密码的命令都在行首加一个空格。还有一个容易忽略的开关shopt -s histappend。默认情况下bash 退出时会把内存历史“覆盖式”写回文件也就是说如果你同时开着多个终端最后退出的那个终端的历史会覆盖掉其他终端写进去的记录。开了histappend之后历史改为追加写入多个终端的历史能合并保存。这个开关我强烈建议打开否则“终端开多了历史丢失”这个问题迟早找上门。1.3 历史展开少敲几次回车history只是查看历史真正提效的是“历史展开”。bash 里用感叹号开头的一组快捷语法能直接把历史里的某条命令或某个参数“抓”过来复用。写法含义示例!!上一条完整命令重启服务后想看效果直接!!!$上一条命令的最后一个参数mkdir -p /data/logs后执行cd !$!^上一条命令的第一个参数相当于!:1!n历史中第 n 条命令!235执行第 235 条历史!string最近一条以 string 开头的命令!systemctl执行最近的systemctl ...!?string?最近一条包含 string 的命令!?httpd?匹配含 httpd 的命令!:2上一条命令的第 2 个参数参数序号从 1 开始但!:0指命令本身我举一个高频场景。部署环境时常见的操作序列mkdir -p /data/app/logs cd /data/app/logs每次都把完整路径再敲一遍很烦。这时候第二条命令直接写cd !$!$会自动展开成上一条命令的最后一个参数也就是/data/app/logs。类似地编辑完配置文件立刻重启对应服务vim /etc/httpd/conf/httpd.conf systemctl restart !$这里的!$展开后是/etc/httpd/conf/httpd.confsystemctl 拿到的参数不对所以实际用的时候要分清!$拿的是“上一条命令的最后一个单词”不是“上一条命令的主题”。要用整个命令的“核心对象”得自己判断。再说!string这个在处理“刚敲过但忘了细节”的命令时特别好用。比如你之前敲过一条很长的find /var/log -name *.log -mtime 30 -exec rm {} \;来清理 30 天前的日志过一会儿想再跑一遍不用翻历史直接!findbash 会找到最近一条以find开头的命令并执行执行前还会把完整命令回显出来你看一眼不对可以立刻按 CtrlC 取消。要注意历史展开有它的“暴脾气”如果匹配不到任何历史bash 会直接报错不会执行任何命令所以它不会造成误执行。但有个坑!string匹配的是“以 string 开头的命令”不是“包含 string 的命令”想模糊匹配得用!?string?。这两个符号粗看差不多实际行为差很多。1.4 反向搜索与 fc 命令!系列适合“我清楚记得命令大概长什么样”的场景。如果只记得某个片段用 CtrlR 更顺手。在提示符下按 CtrlR会出现(reverse-i-search)提示输入关键字终端会从历史里最近的一条往前找继续按 CtrlR 翻更早的。匹配到想要的后回车执行或者按方向键把它弄到命令行里改一改再执行。这个功能我用得太频繁了几乎是肌肉记忆比history | grep keyword快一个量级。还有一套更“正经”的工具是fc这个命令适合对历史做精细操作。基本用法fc -l # 列出最近 16 条历史 fc -l 200 220 # 列出 200 到 220 条 fc -ln # 列出时不带行号fc -s可以“重新执行”某条历史而不必把它全部找出来。比如想重新执行第 200 条命令fc -s 200额外提一个老手技巧fc -l的输出带行号可以用!200直接执行第 200 条配合fc -l快速翻找效率比一路按上箭头快得多。大家平时用 CtrlR 更多因为不用记行号但当你需要批量回放一组历史命令时fc的脚本化能力更强。2. 命令行补全把 Tab 按出肌肉记忆2.1 Tab 补全的覆盖范围默认情况下bash 的 Tab 补全由 readline 库提供它至少能补全这几类内容命令名输入sys按 Tab会补全成systemctl或列出所有以sys开头的命令。路径和文件名输入/var/l按 Tab补全到/var/log这样。变量名输入$HIST按 Tab补全成$HISTSIZE、$HISTFILESIZE等。用户名输入~ro按 Tab补全成~root。基本规则是只有一个匹配项时直接补全有多个匹配项时按第一次 Tab 不动作再按一次 Tab 列出所有候选。这个“按两下看候选”的行为在大多数发行版上默认生效。我用终端从来都是能 Tab 就不手敲路径尤其对那种长目录层级三层嵌套的目录敲几层 Tab 就进去了比手打省心太多。需要注意一点默认补全针对命令和路径没问题但像systemctl status sshd这种它补全服务名吗默认情况下不行需要安装bash-completion这个软件包。装上之后很多命令的参数、服务名、systemd 单位、软件包名都能补全。在 RHEL/Rocky/Alma 上安装dnf install -y bash-completion装完重启终端或者执行source /etc/bash_completion你会明显感觉到 Tab 补全的覆盖范围一下子变大了。比如systemctl status ss按 Tab 能补成sshddnf install ngin能补成nginx这些都是默认 bash 做不到的。很多人抱怨“我的 Tab 怎么不如别人的智能”十有八九就是少了这个包。2.2 历史补全和行内编辑快捷键Tab 补全解决的是“还没敲完的词”历史补全解决的是“敲过但不想再敲一遍的命令”。最朴素的方式是上箭头翻历史配合前缀会更精准。先输入命令开头几个字母再按上箭头bash 会直接从历史里反向匹配“以这几个字母开头”的命令。比如输入systemctl再按上箭头它翻出来的全是systemctl开头的历史命令翻两三条就能找到想要的。还有一种“更现代”的补全方式是把历史匹配的词直接塞进当前命令行用的也是 Tab。需要开启一个配置bind \e[A: history-search-backward这个配置的意思是把“上箭头”绑定成“按当前已输入内容搜索历史”。但这个属于个人习惯的深度定制不同发行版绑定方式不一样新手不建议一上来就折腾先把默认的上箭头 前缀用法练熟就够用了。行内编辑快捷键也值得一并记住因为它们配合补全使用体验是相乘的CtrlA 跳到行首CtrlE 跳到行尾。CtrlU 剪切从光标到行首CtrlK 剪切从光标到行尾。CtrlW 删除光标前一个词。CtrlY 把刚才剪切的内容粘贴回来。CtrlL 清屏。以前我改一个长命令总是反复用方向键移动光标特别慢后来记住 CtrlA 直接到行首、CtrlW 删一个词改命令的速度明显上来了。这些快捷键在绝大多数 Linux 终端和 SSH 会话里都有效属于通用能力。3. 命令行展开一条命令生成一堆参数这个过程要讲的“展开”expansion是 bash 最强大的特性之一。你写下的命令行在真正执行之前会被 bash 拆解成多个部分有些写法会被“展开”成更多内容。理解它你就理解了很多看上去很“魔法”的命令。3.1 花括号展开花括号展开是在命令行里生成多个词语的最直接方式。最常见的是数字序列echo file{1..5}.txt输出file1.txt file2.txt file3.txt file4.txt file5.txt。配合touch可以直接批量建文件touch /data/logs/app_{01..12}.log一下创建 12 个文件。这里我特意用了01两位宽度花括号展开支持“零填充”{01..12}会生成01, 02, 03 ... 12不是1, 2, 3 ... 12。日期排序的时候这个细节很关键app_1.log和app_10.log在字典序下会排在一起用零填充就没有这个问题。花括号展开还支持字母序列echo {a..e} # a b c d e以及支持步长{1..10..2}生成1 3 5 7 9。这一步在生成批量测试数据时挺好用不用写循环了。还有一种常见用法是“并列列表”逗号分隔不要求是连续值cp app.conf{,.bak}这个命令有意思它展开成cp app.conf app.conf.bak。写法里第一个参数是app.conf第二段是空字符串 .bak所以正好复制一份备份。我第一次看到这个技巧时挺震惊的写法很紧凑语义又很清楚非常适合用来快速备份配置文件。注意大括号内逗号两边不能有空格{a, b}会把空格也算进去行为就变了。实战里最典型的组合是花括号展开配合mkdir建目录结构mkdir -p /data/{logs,backup,scripts}/{2024,2025}这条命令一次创建logs/2024、logs/2025、backup/2024等 6 个目录而且展开是“两层嵌套同时进行的”比我一个一个mkdir快太多。3.2 波浪号展开与变量展开波浪号展开是最容易被忽略但每天都在用的展开。单独的~代表当前用户家目录~user代表指定用户的家目录cd ~ cd ~root两个比较少见但实际好用的形式是~和~-~展开成当前工作目录等同于$PWD。~-展开成上一次所在的工作目录等同于$OLDPWD。实际用起来cd ~-就是“切回上次目录”比先看pwd再输路径快很多。很多开发者在两个项目目录之间反复切换时其实可以只用cd ~-。变量展开则是把变量的值“翻译”到命令行里echo $HOME echo $HOME echo ${HOME}$HOME和${HOME}基本等价但后者在变量名后面紧跟其他字符时更安全。比如你想打印/home/yournameabc如果写$HOMEabcbash 会把HOMEabc当成一个变量名取不到任何值。写成${HOME}abc才能正确拼接。这个坑在拼接路径时太常见了。变量展开里还有一批带“默认值”“报错”等行为的写法RH134 第一章讲得不算深但非常实用# 变量为空时使用默认值变量本身不变 echo ${PORT:-8080} # 变量为空时设置默认值变量本身也被赋值 echo ${PORT:8080} # 变量必须存在且有值否则报错 echo ${PORT:?环境变量 PORT 未设置}我第一次用:?是在写部署脚本的时候要求脚本运行前必须传入参数否则直接退出。效果比手动判断强不少因为错误信息更明确。3.3 命令替换与算术展开命令替换的作用是把一条命令的输出“填”进另一条命令里。语法有两种反引号和$()。echo 当前目录下有 $(ls | wc -l) 个文件这里ls | wc -l的统计结果会被替换进去。推荐用$()因为反引号在嵌套时处理很麻烦比如你想在命令替换里再套一层命令替换$()可以轻松实现反引号嵌套基本没法读echo $(basename $(find /etc -name *.conf | head -1))命令替换的结果如果把两侧加双引号包起来可以防止输出里的空格被拆成多个词。这是一个影响非常大的细节比如file$(find / -name 某文件) echo $file不加引号的话如果find输出里带空格变量内容会被拆开当成多个词逻辑直接出问题。所以用命令替换赋值时养成加双引号习惯能少踩不少坑。算术展开比较直白$((...))里可以做整数运算echo $(( (100 20) * 3 )) # 360变量在算术表达式里可以直接写名字不必加$a10 echo $((a 5)) # 15bash 的算术只支持整数除法会整除取整如果要做更复杂的数学计算还是换awk或bc。最后一定要理解“展开顺序”因为不同展开的先后会影响结果。bash 的展开顺序大致是花括号展开 → 波浪号展开 → 参数展开/命令替换/算术展开 → 单词拆分 → 文件名展开。这一步里常见的坑是花括号展开不会发生在“变量值”里。举例定义range{1..5}然后echo $range并不会展开只会直接输出{1..5}。因为花括号展开在变量展开之前变量值里的花括号已经错过展开时机了。理解了顺序这类问题一眼就能看出原因。4. 命令别名给常用命令起个顺手的小名4.1 别名的定义与查看别名就是把一条长命令缩成一个短名字。定义方法很简单alias llls -l alias lals -A alias grepgrep --colorauto alias clsclear定义完直接输入ll就等于执行ls -l。不带参数执行alias命令会列出当前 shell 里所有已定义的别名。我在 RHEL 系系统上最常看到的是llls -l --colorauto这个由发行版的默认别名配置而来。为什么要有别名的概念而不直接建脚本因为别名直接“长在”交互式 shell 里不需要新增 PATH 路径也没有额外进程开销它就是 bash 在解析命令时做的一个简单替换。更关键的一点是参数传递alias llls -l之后执行ll -h /etc实际执行的是ls -l -h /etc别名展开是“把命令名替换成别名值”后面跟的参数原样保留。这一点和函数、脚本不同简单得多。定义别名时单引号和双引号效果有区别alias mylsls -l $HOME # 定义时立即展开 $HOME alias mylsls -l $HOME # 使用时才展开 $HOME工作目录之类的变量最好用双引号因为它不会变。但如果是想在执行时动态取值用单引号。我以前帮别人排查过“别名里路径写死了导致换台机器就失效”的问题根源就是定义时用了双引号把本该推迟展开的变量提前展开了。4.2 别名的持久化别名只在当前 shell 会话里有效关闭终端就没了。想让别名“永久生效”要写进 bash 的启动文件。RHEL 系里用户级别的别名通常写在~/.bashrcecho alias llls -l --colorauto ~/.bashrc source ~/.bashrc.bashrc在每次打开新交互式终端时都会被加载所以把别名放这里最合适。修改完需要立即生效时执行source ~/.bashrc或直接重新开一个终端不需要重启机器。有一点必须清楚别名只在交互式 shell 里生效非交互式 shell比如脚本默认不会展开别名。这意味着你在.bashrc里定义了别名写进一个.sh脚本里同样名字的命令执行时不会按别名的逻辑走。这个特性是刻意的因为脚本需要的是可移植、行为稳定的命令而不是依赖某个用户的自定义别名。所以在脚本里千万不要假设别名存在老老实实写完整的命令。4.3 别名的坑与绕过方法别名的优先级很高bash 在解析命令时先看别名再看关键字、函数、内建命令最后才去 PATH 里找外部命令。这个顺序导致一个典型问题你定义了alias grepgrep --colorauto以后所有交互式环境下grep都会带上颜色参数这通常是好事。但如果你临时想用“不带颜色的原始 grep”怎么绕过在别名前加反斜杠\grepbash 会跳过别名查找直接找外部命令。用unalias grep临时取消别名。另外一个坑藏在“别名里嵌套别名”。如果你定义了alias sudosudo 注意末尾有空格bash 在处理别名时会额外检查下一个词是不是别名。这意味着sudo ll会把ll也展开成ls -l。没有末尾那个空格sudo ll里的ll不会被展开。这个微妙的差异不少人都没意识到其实红帽的认证考试里也出现过类似的判断题。我自己的经验是给 sudo 加尾随空格别名是个好习惯不然sudo vi时你经常会失去自己习惯的 vim 别名。再有就是别名的可读性问题。别名定义得多了别人或者几个月后的你自己看配置时会一头雾水。建议每个别名都配上注释比如# 快速查看目录 alias llls -l --colorauto同时定期用alias命令盘点当前会话里到底定义了什么避免哪天突然发现某个命令行为“不对”其实是老早之前定义的一个别名在起作用。排查“咦这个命令怎么和以前不一样了”的问题时第一步永远是执行alias看看有没有定义同名的别名或者type 命令名看它实际解析成了什么。type 命令能直接告诉你一个命令是别名、内建命令、外部命令还是函数这个排查手法比瞎猜高效得多。5. 组合起来一套高效命令行工作流前面把历史、补全、展开、别名分开讲了实际价值在于组合使用。这里拿一个真实场景串一下假设要给业务服务写一份备份脚本快速创建目录结构、准备备份文件、验证路径。第一步用花括号展开建目录mkdir -p /data/service/{backup,logs,run} cd /data/service/logs第二步创建一批带日期的占位日志文件touch access_$(date %Y%m%d)_{01..05}.log这里命令替换和花括号展开同时用上了生成access_20250115_01.log到access_20250115_05.log日期自动填今天的。以前我建这种文件得手动敲日期经常敲错现在完全不用管日期了。第三步编辑某个文件后快速重启服务。通常我会先查服务名用 Tab 补全把服务名补出来然后执行重启systemctl restart $(systemctl list-units --typeservice | grep 某服务 | awk {print $1})这个写法看着复杂但理解命令替换后很容易读先列出所有服务单元过滤出目标再取第一列名字作为重启参数。更常见的其实是直接敲systemctl restart sshd服务名固定时没必要动态获取但当你面对一堆相似命名的服务时动态获取比每次查一遍快得多。第四步把最常用的操作定义成别名写进.bashrcalias svsystemctl alias sstatsystemctl status alias jg/var/log/某服务/这样以后每次想查看这个服务的状态输入sstat就够了。我见过有些老手会把一组固定目录路径做成 cd 别名比如alias webcd /data/www/某项目在多个项目间切换时体感极佳。组合用的时候有几个细节要注意。第一命令替换里的命令如果是交互式的要确认它确实会自动结束否则会一直卡在等输入。第二花括号展开生成的词如果特别多比如{1..100000}bash 会一次性生成十万个词内存和参数长度都会告急不要这么玩。第三别名不要和已有命令同名得太随意尤其不要覆盖ls、cd这类基础命令否则换到别人的机器上完全没有这些别名时操作习惯直接崩掉。我自己的习惯是能 Tab 补全就不手敲能!$就不粘贴长路径能用花括号展开就不写 for 循环每个持续使用的别名都写注释。还有一个小习惯就是写复杂命令之前先按一下 CtrlR看看历史里有没有类似的命令可以直接改这比从零开始敲要省太多事。6. 高频问题与排查速查表这一节把我在实际环境中遇到比较多的问题整理成表按“现象—原因—解决办法”排列方便你遇到问题时直接查。现象原因解决办法历史记录不显示时间没有设置HISTTIMEFORMATexport HISTTIMEFORMAT%F %T 注意只对新记录生效多终端开久了历史丢失默认历史写入是覆盖式执行shopt -s histappend或写进.bashrc按 Tab 补全不出“自定义命令”参数缺少 bash-completion 包安装bash-completion并重新加载配置!$拿到的不是想要的参数对“最后一个词”理解有误比如结尾是重定向符号先确认上一条命令的最后一个词是什么必要时改用!^脚本中别名不生效非交互式 shell 默认不展开别名脚本里写完整命令不要依赖别名想临时绕过别名别名优先级高于外部命令命令前加\如\grep花括号展开没反应可能写进了变量值里错过展开时机直接写在命令行里不要在变量里依赖展开文件名里带空格导致命令替换出错命令替换结果被拆词变量和命令替换外面加双引号$VARabc取不到值变量名被当成VARabc写成${VAR}abc命令历史里搜不到某条命令命令以空格开头且开了ignorespace检查HISTCONTROL配置CtrlR 找不到内容历史文件里根本没有对应记录看HISTSIZE是否太小或者是不是在别的终端敲的历史没有合并设置完.bashrc不生效新终端没开或当前会话没 source执行source ~/.bashrc或重新登录看完这张表你会发现大部分问题都和执行顺序、变量作用域、展开时机相关。这些正是 bash 的难点所在。RH134 这一章的价值正在于此它把命令行从“工具”提升成“效率系统”让你知道每一次回车背后发生了什么。之后你再去学更复杂的 shell 脚本很多原本难懂的行为都能从这里找到解释。我个人在实际操作中的体会是命令行效率不在于记住多少冷门技巧而在于把几个基础动作练成肌肉记忆。历史展开、Tab 补全、花括号展开、别名这四个东西任何一种单独拿出来都不难真正改变工作流的是组合使用。很多人在终端里慢慢吞吞敲命令不是不会这些技巧而是没想到该用。这篇文章讲的内容值得你花一个下午全部在终端里过一遍之后你的操作速度会有肉眼可见的提升。最后分享一个小技巧每周挑一天把自己那天敲过的命令用history | awk {$1;print} | sort | uniq -c | sort -rn | head -20统计一下那些出现次数最多的命令就是最值得为它们建别名、写展开技巧的组合。我试过这个办法找出自己的“高频命命令”之后针对性优化了一阵子整体操作效率提升非常大。
RELATED

相关推荐

面试问答list构造机制(I+S+T模式)

面试问答list构造机制(I+S+T模式)

针对HR问答,需要提前准备“一个问题对应一个IST”在人力资源面试的理论体系中,面试官提出的问题从来不是随机闲聊,而是围绕岗位胜任力所设计的“证据采集器”。候选人若想让回答有逻辑、有厚度、有可验证性,就不能只背“万能话术”…

📅 2026/10/18 6:22:19
OpenAI Codex Security扫描120万次提交,发现10561个高危漏洞:用TaoToken统一Key复现扫描链路

OpenAI Codex Security扫描120万次提交,发现10561个高危漏洞:用TaoToken统一Key复现扫描链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/18 6:22:19
微信多账号管理:统一收件箱工作法,摆脱切换之苦

微信多账号管理:统一收件箱工作法,摆脱切换之苦

你是不是也这样:手机里两个微信来回切,电脑上还挂着一个企业微信,客户消息来了先愣一下"我现在登的是哪个号",发给错人更是家常便饭。我前几年做社群运营,手里同时管着三个微信号,一度把"退…

📅 2026/10/18 6:22:19
MORE NEWS

更多资讯

📰

SQL进阶必学:连接、视图、事务、约束与权限管理实战

其实在大二的数据库课上学到这里的时候,我并没有觉得"中级SQL"有什么特别的,无非是多记几个语法。直到后来真刀真枪写业务查询、维护线上数据,才意识到这一章其实是整个SQL能力体系里最实用的一段——单表查询是基础,但…

📰

数字后端log高效排查指南:综合到签核的完整阶段拆解与实战

带过我的师傅说过一句话,做数字后端的人,一半时间在跑流程,另一半时间在看log。当时我以为是夸张,等自己真正开始盯综合、布局布线、时钟树综合、时序收敛、物理验证这一整条线之后,才发现这句话几乎就是日常工作写照。…

📰

VS2019 C++连接Oracle实战:OCCI配置与避坑指南

1. 为什么在2024年还要聊VS2019连Oracle这件事先把场景说清楚。手上有一个基于Windows平台的数据处理工具,或者一个工业上位机软件,或者一个内部使用的数据同步服务,技术栈定在了C,编译器用的是Visual Studio 2019,数据…

📰

ArtCraft:面向手作教育的Python本地化设计工具

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"artcraft",但未提供任何实质性的【项目正文】、【关键词】或【摘要描述】;所谓“相关热搜词”和“最新网络热词”字段为空,未给出具体词汇&…

📰

机器学习大作业实战指南:从数据清洗到模型调优的完整流程

简介:这份资源是电子科技大学机器学习课程大作业的完整配套资料,面向正在修读机器学习、人工智能相关课程的高校学生,以及希望系统梳理算法理论与工程实践的自学者。内容围绕监督学习、无监督学习、半监督学习与强化学习等范式展开&#xff0…

📰

写给大一新生:比分数更重要的生存与发展建议

如果回到大一开学那天,我最想做的一件事,就是把这篇写给大一的建议塞给当时的自己。标题里有"大一"和"建议"两个词,但这里面没有任何一条是关于"怎么考高分"的。因为比起分数,真正影响大学四年走向…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬