Этот вопрос устарел, и =gnome-extra/cinnamon-3.0.7-r2
теперь доступен непосредственно в дереве портежей. Таким образом, простой emerge gnome-extra/cinnamon
должен работать на сегодняшний день. Справочная информация находится на странице Gentoo Wiki Cinnamon .
В моей системе vanille GNOME вывод выглядит следующим образом:
# emerge --ask --tree gnome-extra/cinnamon
These are the packages that would be merged, in reverse order:
Calculating dependencies... done!
[ebuild N ] gnome-extra/cinnamon-3.0.7-r2::gentoo USE="networkmanager nls" PYTHON_TARGETS="python2_7 python3_5 -python3_4" 2.994 KiB
[ebuild N ] gnome-extra/nemo-3.0.6::gentoo USE="exif introspection nls (-packagekit) {-test} -tracker -xmp" 1.332 KiB
[ebuild N ] gnome-extra/cinnamon-control-center-3.0.1::gentoo USE="colord cups systemd -debug" INPUT_DEVICES="-wacom" 3.745 KiB
[ebuild N ] x11-wm/muffin-3.0.5::gentoo USE="introspection {-test} -xinerama" 2.655 KiB
[ebuild N ] gnome-extra/cinnamon-screensaver-3.0.1::gentoo USE="pam systemd -debug -doc" PYTHON_TARGETS="python2_7" 144 KiB
[ebuild N ] gnome-extra/cinnamon-session-3.0.1::gentoo USE="ipv6 systemd -doc" 579 KiB
[ebuild N ] gnome-extra/cinnamon-settings-daemon-3.0.1::gentoo USE="colord cups systemd -smartcard {-test}" INPUT_DEVICES="-wacom" 2.845 KiB
[ebuild N ] gnome-extra/cinnamon-desktop-3.0.2:0/4::gentoo USE="introspection systemd" PYTHON_TARGETS="python2_7" 565 KiB
[ebuild N ] gnome-extra/cjs-3.0.1::gentoo USE="cairo gtk -examples {-test}" 318 KiB
[ebuild NS ] dev-lang/spidermonkey-24.2.0-r4:24::gentoo [1.8.5-r6:0/mozjs185::gentoo, 38.2.1_rc0:38::gentoo] USE="system-icu -debug -icu -jit - minimal -static-libs {-test}" 15.262 KiB
[nomerge ] x11-wm/muffin-3.0.5::gentoo USE="introspection {-test} -xinerama"
[ebuild N ] app-text/gnome-doc-utils-0.20.10-r1::gentoo PYTHON_TARGETS="python2_7" 515 KiB
[nomerge ] gnome-extra/cinnamon-3.0.7-r2::gentoo USE="networkmanager nls" PYTHON_TARGETS="python2_7 python3_5 -python3_4"
[ebuild N ] gnome-extra/cinnamon-menus-3.0.2::gentoo USE="introspection -debug" 207 KiB
[ebuild N ] dev-python/pypam-0.5.0-r3::gentoo PYTHON_TARGETS="python2_7 python3_5 -python3_4 -python3_6" 103 KiB
[ebuild N ] dev-python/pyinotify-0.9.6::gentoo USE="-examples" PYTHON_TARGETS="python2_7 python3_5 (-pypy) (-pypy3) -python3_4 -python3_6" 60 KiB
[nomerge ] app-text/gnome-doc-utils-0.20.10-r1::gentoo PYTHON_TARGETS="python2_7"
[ebuild N ] app-text/scrollkeeper-dtd-1.0-r1:1.0::gentoo 11 KiB
[nomerge ] gnome-extra/cinnamon-3.0.7-r2::gentoo USE="networkmanager nls" PYTHON_TARGETS="python2_7 python3_5 -python3_4"
[ebuild N ] dev-python/pexpect-4.2.1::gentoo USE="-doc -examples {-test}" PYTHON_TARGETS="python2_7 python3_5 (-pypy) (-pypy3) -python3_4 -python3_6" 141 KiB
[ebuild N ] dev-python/ptyprocess-0.5.1::gentoo USE="{-test}" PYTHON_TARGETS="python2_7 python3_5 (-pypy) (-pypy3) -python3_4 -python3_6" 67 KiB
[ebuild N ] dev-python/polib-1.0.7::gentoo USE="-doc" PYTHON_TARGETS="python2_7 python3_5 -python3_4 -python3_6" 153 KiB
[ebuild N ] gnome-extra/cinnamon-translations-3.0.3::gentoo 7.753 KiB
Total: 19 packages (18 new, 1 in new slot), Size of downloads: 39.440 KiB
В будущих версиях установка пакета с маской ключевого слова будет работать следующим образом в соответствии с Gentoo Handbook . Скажем, вы обнаружите, что дерево портежей заставляет вас идти в ногу с =gnome-extra/cinnamon-3.6.6.-r2
, тогда вы вручную принимаете для него ключевое слово:
$ eix -s cinnamon
* gnome-extra/cinnamon
Verfügbare Versionen: 3.0.7-r2 ~3.2.0-r2 ~3.2.6-r1 ~3.2.7-r1 ~3.4.2-r1 ~3.4.6 ~3.6.6-r2 {+networkmanager +nls PYTHON_TARGETS="python2_7 python3_4 python3_5"}
Startseite: http://developer.linuxmint.com/
Beschreibung: A fork of GNOME Shell with layout similar to GNOME 2
Согласно базе знаний, добавьте запись, относящуюся к версии , помеченной ~
, которую вы хотите/etc/portage/package.keyword/gnome-extra
# echo "=gnome-extra/cinnamon-3.6.6-r2" >> /etc/portage/package.keywords/gnome-extra
А затем emerge
этот пакетный атом (и см. здесь вики-страницу Сакаки для терминологии). Я добавил --pretend
, чтобы показать, что будет сделано:
# emerge --ask --verbose --pretend --tree =gnome-extra/cinnamon-3.6.6-r2
Полученный список, скорее всего, даст вам больше пакетов, которые нужно разоблачить. Затем вы можете решить, какую версию использовать, в зависимости от последующих -изменений версии, которые могут потребоваться одному пакету, повторите команду, опуская --pretend
, когда вы закончите. Проверьте опции portage для добавления ключевого слова и автоматического снятия маски для более подробной информации.
Предполагая, что этот вопрос касается обращения списка, полученного в результате шаблона подстановки имени файла, а не повторной реализации точного вывода ls -r
.
Получить результат совпадения glob, например,. позиционные параметры:
set -- *
Затем переверните этот список:
names=()
for name do
shift
names[$#]=$name
done
Это создает массив с именем names
, который содержит совпадения шаблона подстановки *
в обратном порядке.
Реверсирование выполняется путем итерации по позиционным параметрам (результата сопоставления )по порядку и для каждой записи путем вставки ее в положение, которое она занимала бы в обратном списке. $#
— это количество позиционных параметров, (совпадений с нашим шаблоном подстановки ), а shift
удаляет один из этого списка, уменьшая $#
на единицу на каждой итерации, поэтому мы вставляем элементы с начала список позиционных параметров в конец массива names
.
Получив массив names
, распечатайте его:
printf '%s\n' "${names[@]}"
... или делайте с ним все, что вам нужно.
Это не будет таким же, как ls -r *
, так как команда ls
будет отображать содержимое любого каталога, соответствующего глобусу *
.
Если шаблон ничему не соответствует, bash
оставит шаблон нераскрытым. Используйте shopt -s nullglob
для установки опции оболочки nullglob
, которая при активации полностью удалит шаблон, если он не соответствует ни одному имени. Для сопоставления скрытых имен дополнительно установите параметр оболочки dotglob
.
Переносится на большинство оболочек, избегайте ошибок с одним файлом (используя только seq
и оболочку, заданную printf
, set
иeval
):
set -- *
[ $# -gt 1 ] && eval set -- "$(printf "\"\${%s}\" " $(seq "$#" -1 1))"
printf '%s ' "$@"
Разумно установить nullglob и failglob там, где они доступны.
Вы не говорите, какую оболочку вы используете, я еще ни разу не сталкивался с оболочкой, которая размещалась бы в каком-либо порядке, кроме восходящего буквенно-цифрового. Так что это то, что вам нужно сделать с ls
, sort
или что-то в этом роде. См. вики shellcheck , чтобы узнать, почему перебор вывода ls
ненадежен и что с этим делать. По сути, есть две основные проблемы, на которые следует обратить внимание: :1 ), когда каталог пуст, echo *
по умолчанию печатает *
. 2 )Если у вас есть файлы с пробелами в именах, это может запутать все, что читает ввод. Для (1 ), если вы используете bash, вам нужно установить параметр nullglob
. Для (2 )вы, вероятно, захотите написать что-то вроде
ls -1r | while read filename; do
...
done
(еще раз, если вы используете sh
, bash
или zsh
.)