当AI沉默时,你还能敲出那行命令吗?
朋友们,不知道你们有没有同感。自从有了ChatGPT、Copilot这些“赛博外挂”,我的编码效率那是坐着火箭往上蹿。以前要翻半天手册的sed命令,现在只要对AI说一句:“诶,帮我把文件里所有的foo换成bar,要原地替换。” 它秒回,还附赠三种不同写法,贴心程度堪比老母亲。我曾经也以为,把一切重复性劳动外包给AI,是程序员进化的终极形态。直到那天,我被一个路径问题干趴下了整整一个小时。事情是这样
朋友们,不知道你们有没有同感。
自从有了ChatGPT、Copilot这些“赛博外挂”,我的编码效率那是坐着火箭往上蹿。以前要翻半天手册的sed命令,现在只要对AI说一句:“诶,帮我把文件里所有的foo换成bar,要原地替换。” 它秒回,还附赠三种不同写法,贴心程度堪比老母亲。
我曾经也以为,把一切重复性劳动外包给AI,是程序员进化的终极形态。直到那天,我被一个路径问题干趴下了整整一个小时。
事情是这样的:我写个脚本,里面有个路径变量。我,以及我连续问的三个AI(从claude-4.5到gpt5,甚至换了不同的Agent),都理所当然地以为那是个相对路径。结果它喵的是个绝对路径!
我像个傻子一样,对着相同的需求,在新的聊天窗口里,对着新的AI模型,一遍又一遍地复读:“帮我看下为啥没编译成功?”新AI们礼貌而又自信地,用各种姿势把同样的错误又推理了一遍。那一刻,我感觉自己不是在debug,而是在参加一场“AI回声室”里的无效会议。(最后,还是最原始的echo大法拯救了我。)
by the way,我当时的需求是:如何取出一个绝对路径的第二段?(without ai你能回答出来么,亲爱的~)
我对着终端,手指悬空,脑子里闪过cut, sed, xargs……它们像熟悉的陌生人,名字都叫得出,但就是组不成一句完整的咒语。于是,我痛定思痛,决定发起这个极度“无聊”且“自虐”的活动——《指令听写》。
这玩意儿,就跟“早读八股”(对着镜子背诵HashMap原理)和“手抄代码”(在纸上默写快排)一样,是我们这一代“AI喂养”出来的程序员,对抗技能退化的行为艺术。没啥大用,纯粹是为了在AI集体抽风或者你想在人前秀一下“老手艺”时,不至于太过狼狈。
下面,就是我们的听写本。请合上你的AI聊天窗口,试试看,这些“肌肉记忆”你还剩下多少?
第一单元:Linux 生存指令听写
需求1: 找出当前目录下(包括子目录)所有包含“TODO”的文本文件,并显示匹配的行。
需求2: 优雅地让一个后台运行的程序滚去前台。
需求3: 统计一个日志文件app.log中,错误ERROR出现的次数。
需求4: 打包压缩/path/to/folder成folder.tar.gz,就现在。
需求5: 给我看看8888端口被哪个“小可爱”占用了。
第二单元:文本处理三剑客(grep, sed, awk)听写
需求1: 快速删除一个文件config.txt的第10行。
需求2: 把docker ps的输出结果整理一下,只显示容器ID和镜像名。
需求3: 把所有.txt文件里的“macOS”批量替换成“MacOS”。
需求4: 一个绝对路径 /home/user/project/src,我如何在bash里快速取出第二段(即user)?
答案
答案1
# 答案1
grep -r "TODO" .
# 答案2
# 先用 jobs 查看后台任务列表,然后用 fg %n (n是任务号)
jobs
fg %1
# 答案3
grep -c "ERROR" app.log
# 答案4
tar -czf folder.tar.gz /path/to/folder
# 答案5
# 方法一(netstat版)
netstat -tulpn | grep :8888
# 方法二(lsof版,更优雅)
lsof -i :8888
答案2
# 答案1
sed -i '10d' config.txt
# 答案2
docker ps | awk '{print $1, $2}'
# 或者更精确一点,从第二行开始
docker ps | awk 'NR>1 {print $1, $2}'
# 答案3
# 方法一:sed 原地替换
find . -name "*.txt" -exec sed -i 's/macOS/MacOS/g' {} \;
# 方法二:搭配 xargs (Bonus!)
find . -name "*.txt" | xargs sed -i 's/macOS/MacOS/g'
# 答案4 (就是这个坑了我!)
# 方法一:用 cut
echo "/home/user/project/src" | cut -d'/' -f3
# 方法二:用 awk
echo "/home/user/project/src" | awk -F'/' '{print $3}'
# 方法三:用纯bash数组操作
path="/home/user/project/src"
arr=(${path//\// })
echo ${arr[1]}
结束语
好了,今天的“听写”就到这里。AI是强大的坐骑,但我们自己,也得记得怎么走路,对吧?
下次当你又想为一行命令去“麻烦”AI时,不妨先自己挣扎30秒。这30秒的挣扎,就是我们对抗“赛博痴呆”的倔强。
欢迎在评论区留下你最近“提笔就忘”的那行命令,让我们互相伤害,共同进步!😉
更多推荐



所有评论(0)