我提交了有没有办法从您拥有的软件包中找到需要测试的补丁?我得到了一个有效的脚本 -
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done
现在,当命令起作用时 - 输出令人困惑,这几行是输出 -
[$] for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done
781691
725728
805989
677570
772688
823072
现在如果有办法的话那就太好了——
A。以降序方式列出列表,以便可以比早期的补丁先了解/理解/尝试较新/令人兴奋的补丁。
b.应该列出它所属的包 -
例如 823072 属于 acpi-support ,它有一个补丁或 805989 属于accountsservice 。有包名会好很多。
C。最后,每次列表完成后(或者是吗?),它应该退出到命令提示符。如果由于某种原因,网络连接中断或没有发现任何错误,它应该通过声明来说明可能的原因。
是否可以 ?我在 zsh 上并使用 oh-my-zsh,所以一切都是从 ~/.oh-my-zsh 操作的
更新 - 我已经做了类似的事情来列出本地文件,但不知道如何实现上述目标 -
┌─[shirish@debian] - [~] - [6266]
└─[$] alias ll
ll='ls -lt --color=auto --time-style=long-iso'
更新 2 - 我暂时尝试过sort
,不知道sed
我看见http://www.thegeekstuff.com/2013/04/sort-files/也
http://www.howtoing.com/sort-command-linux/
并特别看到——
以下排序命令以相反的顺序对测试文件中的行进行排序,并从排序的输出中删除重复的行。
$ 排序 -r -u 测试 5 4 2 1
我尝试在共享脚本中使用相同的内容,但它给出了完全不同的输出 -
┌─[shirish@debian] - [~] - [6273]
└─[$] for source in $(dpkg-query --show -f '${source:Package}\n' | sort -r -u); do bts select source:${source} tag:patch; done
538069
831900
779566
622933
691638
776663
419233
AFAI 理解它,排序已用于确保错误编号不重复并且是唯一的(意味着列表仅一次),并不真正知道为什么反向在应该像共享示例一样工作时不起作用。也许与 zsh 有关,或者我写得不正确:(。
同时查找 sed 看看我是否能理解一些东西。
更新 3 - 由于某种原因,这似乎在 zsh 中不起作用,仅使用 sed 位 atm -
┌─[shirish@debian] - [~] - [6312]
└─[$] cat find-interesting-patches.sh
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u) do bts select source:${source} tag:patch | sed "s/^/${source} /g" done
和 -
┌─[shirish@debian] - [~] - [6313]
└─[$] ll -h find-interesting-patches.sh
-rwxr-xr-x 1 shirish shirish 141 2016-11-23 23:56 find-interesting-patches.sh
所以有执行权限
尝试运行它,我得到 -
┌─[shirish@debian] - [~] - [6315]
└─[$] ./find-interesting-patches.sh
./find-interesting-patches.sh: 1: ./find-interesting-patches.sh: Syntax error: "|" unexpected
有什么想法这里可能有什么问题吗?
答案1
从...开始
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done
对输出进行排序涉及另一种使用sort
, 以相反的顺序对整个输出进行数字排序:
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done \
| sort -n -r
${source}
要显示(源)包名称以及错误编号,最简单的选择是在正确的位置添加(源包),bts
每次运行时处理它的输出:
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u)
do bts select source:${source} tag:patch | sed "s/^/${source} /g"
done
这输出以下形式的行
linux 845422
所以我们需要更改finalsort
以对第二个字段进行排序:
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u)
do bts select source:${source} tag:patch | sed "s/^/${source} /g"
done | sort -k2,2n -r
在一行上
for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch | sed "s/^/${source} /g"; done | sort -k2,2n -r