首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
搜索
登录
搜索
一笑痕
人生若只如初见,
是可喜亦或者是可悲?
累计撰写
259
篇文章
累计收到
7
条评论
首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
包含标签 【Shell】 的文章
2026-10-14
kill 掉脚本的 PID,它拉起的子进程为什么还在
sleep 300 甩到后台,杀掉脚本自己的 PID 后终端只回了 Terminated,那个 sleep 还挂在进程表里。进程组怎么用 kill 表达、nohup 挡不住什么,都在本机跑过一遍。
2026年-10月-14日
66 阅读
0 评论
开发工具
2026-10-7
管道里的 while 循环,为什么改不动外面的变量
逐行计数用管道接 while,循环里每行都加了一,循环外读到的却是 0。原因是管道两端各起一个进程,循环在第一段之外的子 shell 里跑。附重定向、进程替换、zsh 三种写法的实测对比,以及 $$ 为什么判断不了这件事。
2026年-10月-7日
63 阅读
0 评论
开发工具
2026-9-30
同一条命令,终端里跑得通,放进定时任务就找不到
脚本里的 node 一行,在终端里正常,交给调度器之后退出码是 127。排查顺序:先看 127 是谁返回的,再对着两边的环境变量查目录,最后定位到非交互 shell 不读启动文件。附四种启动方式的 PATH 实测。
2026年-9月-30日
89 阅读
0 评论
开发工具
2026-9-29
-exec 分号每个文件起一次进程,加号一次装上三百个
同一个目录 300 个文件,-exec 后面写分号,命令被调用了 300 次、花了 603 毫秒;写加号,调用 1 次、6 毫秒。加号还会按 ARG_MAX 切批,4000 个长名文件被切成三次。连退出码都不一样:命令失败时分号让 find 返回 0,加号返回 1。
2026年-9月-29日
85 阅读
0 评论
开发工具
2026-9-28
数行数别只看 wc -l,末尾缺一个换行符就少一行
一个三行的文件,wc -l 报 2;另一个三行的文件,同一个命令报 3。差的不是内容,是最后那个字节是不是换行符。wc -l、grep -c、awk 的 NR、wc -m 在几个小文件上的读数全跑了一遍,哪种数法要哪个数字也就清楚了。
2026年-9月-28日
103 阅读
0 评论
开发工具
2026-9-26
--exclude 写在目录后面,tar 当它是要打包的文件
打包脚本里最有杀伤力的不是通配符写错,而是选项站错了位置:--exclude 摆在源目录后面,bsdtar 会把它当成一个要添加的成员去 stat,排除规则一条不生效。本机把十处位置与顺序的差别跑了一遍,逐条给出结论和最小命令。
2026年-9月-26日
115 阅读
0 评论
开发工具
2026-9-25
-mtime +1 漏掉两个文件,它的边界按整周期算
七个文件的年龄从 1 小时排到 73 小时,用 find -mtime +1 想捞出一天以上没动过的,只捞出 2 个,24 到 48 小时之间的两个被静默漏掉。判据取的是整数个 24 小时周期,要表达「超过一天」得写 -mtime +0。
2026年-9月-25日
88 阅读
0 评论
开发工具
2026-9-24
grep 没匹配到内容时退出码是 1,脚本 set -e 会直接中断
grep 无匹配返回 1,文件不存在返回 2,两者可区分。但 1 在 set -e 下会终止脚本,管道下游还会把真实退出码改成 0,要拿回来得靠 PIPESTATUS。
2026年-9月-24日
103 阅读
0 评论
开发工具
2026-9-23
sort -k2 和 -k2,2 排出两种顺序,差别在并列之后
同一份订单导出,sort -k2 与 sort -k2,2 给出两种行序,四条记录里只有两条换了位置。分歧全部发生在第二列取值相同的行上:-k2 的键延伸到行尾,会继续拿后面的列比;-k2,2 到此为止,剩下的顺序交给整行兜底比较。
2026年-9月-23日
93 阅读
0 评论
开发工具
2026-9-22
加一个 LC_ALL=C,百万行排序从 1.45 秒到 0.19 秒
POSIX 定义里的 locale 决定的不只是界面语言,还有排序键、字符类与大小写折叠。同一批文件在 en_US.UTF-8 与 C 两个 locale 下排出来顺序不同,一百万个随机串的耗时差七倍;中文名字在 en_US.UTF-8 下甚至等于没排。
2026年-9月-22日
116 阅读
0 评论
开发工具
2026-9-18
bash 的 # 和 % 删东西,贪婪与否看几个字符就够了
${v#-} 和 ${v##-} 差在哪、替换为什么会把相邻斜杠折叠、什么时候该用 dirname 而不是参数展开,全按问答排开。所有输出来自 bash 实跑,脚本在 tools/verify-param-expansion.sh。
2026年-9月-18日
98 阅读
0 评论
开发工具
2026-9-15
脚本以 141 退出,日志上看不出原因
同一段加了 set -euo pipefail 的脚本,会在两个地方给出相反的答案:该失败的地方它继续跑,跟错误无关的地方它退了,退出码 141。16 个用例在这台机器上逐个跑过一遍。
2026年-9月-15日
124 阅读
0 评论
开发工具