Вы можете использоватьyum history
.
Например, (в контейнере CentOS, который иногда обновлялся):
[root@centos7-amd64bis ~]# yum history
Loaded plugins: fastestmirror
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
33 | install sudo | 2018-09-24 22:06 | Install | 1
32 | install selinux-policy | 2018-09-14 21:28 | Install | 1
31 | install iptables-service | 2018-08-20 18:33 | Install | 1
30 | install conntrack-tools | 2018-08-20 18:32 | Install | 4
29 | install mariadb-server | 2018-08-11 10:24 | Install | 12
28 | install psacct | 2018-07-28 15:22 | Install | 2
27 | install socat | 2018-07-26 22:21 | Install | 1
26 | upgrade | 2018-07-14 20:34 | I, U | 116 EE
25 | -y install strace | 2018-05-14 20:43 | Install | 1
24 | install lsof | 2018-05-14 20:15 | Install | 1
23 | install nc | 2018-04-14 07:33 | Install | 1
22 | install xfsprogs | 2018-04-11 22:27 | Install | 1
21 | install lxc-templates | 2018-04-10 17:12 | Install | 1
20 | install lxc | 2018-04-10 17:11 | Install | 7
19 | install nftables | 2018-04-06 19:34 | Install | 3
18 | install centos-release-s | 2018-03-23 20:01 | Install | 1
17 | upgrade | 2018-03-21 20:56 | Update | 18
16 | install tcpdump | 2018-03-01 20:45 | Install | 2
15 | upgrade | 2018-01-23 18:44 | Update | 3
14 | install rh-php56-php | 2017-12-10 11:08 | Install | 5
history list
[root@centos7-amd64bis ~]# yum history info 26
Loaded plugins: fastestmirror
[...]
Transaction performed with:
Updated rpm-4.11.3-25.el7.x86_64 @base
Updated yum-3.4.3-154.el7.centos.1.noarch @updates
Installed yum-metadata-parser-1.1.4-10.el7.x86_64 @base
Updated yum-plugin-fastestmirror-1.1.31-42.el7.noarch @base
Packages Altered:
[...]
Updated acl-2.2.51-12.el7.x86_64 ?
Update 2.2.51-14.el7.x86_64 @base
Updated audit-libs-2.7.6-3.el7.x86_64 @base
Update 2.8.1-3.el7.x86_64 @base
Updated audit-libs-python-2.7.6-3.el7.x86_64 @base
Update 2.8.1-3.el7.x86_64 @base
Updated bash-4.2.46-29.el7_4.x86_64 @updates
Update 4.2.46-30.el7.x86_64 @base
Updated bind-libs-lite-32:9.9.4-51.el7_4.2.x86_64 @updates
Update 32:9.9.4-61.el7.x86_64 @base
Updated bind-license-32:9.9.4-51.el7_4.2.noarch @updates
Update 32:9.9.4-61.el7.noarch @base
[...]
Используйте namerefs (в Bash >= 4.3):
$ armin=(foo bar doo)
$ declare -n gral=armin # 'gral' references array 'armin'
$ gral[123]=quux # same as 'armin[123]=quux'
$ echo "${gral[@]}"
foo bar doo quux
$ echo "${gral[1]}"
bar
$ echo "${!gral[@]}" # listing the indexes works too
0 1 2 123
Как отвечает @ilkkachu, namerefs — это инструмент, который можно использовать здесь. Они упрощают передачу массивов функциям. Например:
dumpArray() {
local -n ary=$1
for i in "${!ary[@]}"; do
printf "%s\t%s\n" "$i" "${ary[$i]}"
done
}
Эта функция может обрабатывать массивы и ассоциативные массивы:
$ declare -a armin=([1]=milk [2]=cow [7]=bugle [9]=pla9ne)
$ dumpArray armin
1 milk
2 cow
7 bugle
9 pla9ne
$ declare -A map=([foo]=bar [baz]=qux)
$ dumpArray map
foo bar
baz qux
Единственная реальная проблема заключается в том, что вам неудобно делать ссылку на nameref ссылкой на массив с тем же именем:
$ ary=(a b c)
$ dumpArray ary
bash: local: warning: ary: circular name reference
bash: warning: ary: circular name reference
bash: warning: ary: circular name reference
bash: warning: ary: circular name reference
bash: warning: ary: circular name reference
0 a
bash: warning: ary: circular name reference
bash: warning: ary: circular name reference
1 b
bash: warning: ary: circular name reference
bash: warning: ary: circular name reference
2 c
Таким образом, в функции массиву присваивается нечетное имя, например
dumpArray() {
local -n __dumpArray_ary=$1
do_stuff_with "${__dumpArray_ary[@]}"
}
хорошо,
ответ к разыменование массива по имени, переданному как переменная(частично напоминает указатель)
используется (пример выше относительно -):
eval echo "\$$(eval echo "{$gral[@]}")"
где $gral содержит имя массива
Результат:
дойная корова волнистый попугайчик pla9ne
Теперь вы можете расширить это решение для итерации массива bash (проиндексированного И связанного )контента с использованием записей индекса.
Рад, что нашел ответ. Спасибо за вашу помощь!
Accessing the contents of the contents of a variable.
Есть подсказки, ведущие к результату в руководстве abs -:
https://tldp.org/LDP/abs/html/abs-guide.html#IVR
Совершено благодаря Менделю Куперу; так благодарны, что у нас есть этот замечательный подарок под названием Advanced Bash -Scripting Guide .
ОК,
eval уродлив из-за проблем с безопасностью.
Попробуйте найти получше...