bash – 如何尽可能紧凑地确定最新的主要和完整内核版本字符串
发布时间:2020-12-15 21:16:39 所属栏目:安全 来源:网络整理
导读:所以我打算在这里做的是尽可能紧凑地确定最新的主要版本和完整的内核版本字符串(没有数量众多的grep管道). 我已经对结果非常满意了,但是如果有人有任何想法如何压缩第一行甚至最轻微的它会非常棒(它必须在有no minor patches时才能工作). kernel.org的索引仅
所以我打算在这里做的是尽可能紧凑地确定最新的主要版本和完整的内核版本字符串(没有数量众多的grep管道).
我已经对结果非常满意了,但是如果有人有任何想法如何压缩第一行甚至最轻微的它会非常棒(它必须在有no minor patches时才能工作). kernel.org的索引仅为36kB,而http://www.kernel.org/pub/linux/kernel/v3.x/的索引为136kB,这就是我使用它的原因: _major=$(curl -s http://www.kernel.org/ -o /tmp/kernel && cat /tmp/kernel | grep -A1 mainline | tail -1 | cut -d ">" -f3 | cut -d "<" -f1) pkgver=${_major}.$(cat /tmp/kernel | grep ${_major} | head -1 | cut -d "." -f6) 解决方法
在这个阶段,这只是一个思考练习,因为真正的答案在上面的评论中,但这里有一些可能的改进.
原版的: _major=$(curl -s http://www.kernel.org/ -o /tmp/kernel && cat /tmp/kernel | grep -A1 mainline | tail -1 | cut -d ">" -f3 | cut -d "<" -f1) 使用tee而不是cat: _major=$(curl -s http://www.kernel.org/ | tee /tmp/kernel | grep -A1 mainline | tail -1 | cut -d ">" -f3 | cut -d "<" -f1) 使用sed可以最小化管道数量,并使命令不可读 _major=$(curl -s http://www.kernel.org/ | tee /tmp/kernel | sed -n '/ainl/,/</s/ s|.*>([0-9.]*)</st.*|1|p') 便宜的技巧:缩短网址 _major=$(curl -s kernel.org | tee /tmp/kernel | sed -n '/ainl/,/</s/ s|.*>([0-9.]*)</st.*|1|p') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |