Какой удар расширится {1.. $VAR} таким же образом, что zsh делает

Если Вы используете Red Hat Enterprise Linux, я не думаю, что ncdu находится в репозиториях сервера RHEL. У меня нет машины, где я могу проверить, находится ли это в репозиториях рабочей станции, но я подозреваю, что это не. Если это не, одна опция является использованием EPEL (часто задаваемые вопросы):

EPEL (Дополнительные Пакеты для Предприятия Linux) является основанным на волонтере общественным усилием из проекта Fedora создать репозиторий высококачественных дополнительных пакетов, которые дополняют основанный на Fedora Red Hat Enterprise Linux (RHEL) и его совместимые ответвления, такие как CentOS и Научный Linux.

ncdu действительно кажется, находится в репозиториях EPEL, предназначенных для работы с RHEL 4 и RHEL 5. Направления для того, как использовать эти репозитории, могут быть найдены здесь:

http://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F

С другой стороны, можно всегда загружать инструмент с восходящего веб-сайта:

http://dev.yorhel.nl/ncdu

и следуйте за направлениями в файле УСТАНОВКИ. Однако это потребует, чтобы, чтобы упорно искать зависимости и установить инструменты необходимо было разработать проект.

6
13.04.2017, 15:13
3 ответа

Я вполне уверен, человек, задающий вопрос на отказе сервера, неправ. Они или не учитывают некоторую деталь намеренно или не знают о некоторой странной конфигурации на машине (/bin/bash как ссылка на что-то еще). Я примерил двухнедельный удар 4,2 выпуска на ударе 3.2 от CentOS 5, и на ударе 2.05a (с 2001), который я создал сам сейчас для попытки.

Самый старый источник на ftp.gnu.org 1.14, но это не создает чисто, и я не уверен попытка, это стоит. Документация для того выпуска содержит те же самые ключевые фразы как в современной документации:

 The order of expansions is: brace  expansion,  tilde  expan-
 sion, parameter, variable, command, and arithmetic substitu-
 tion (done in a left-to-right fashion), word splitting,  and
 pathname expansion.

Но на самом деле, теперь, когда я думаю о нем, это бессмысленно, начиная с "{x.. y}" синтаксис был добавлен в ударе 3.0, делая смотрящий перед этим бесполезный.

Так, позвольте мне попробовать 3.0... правильно. То же поведение.

Так да. Я чрезвычайно скептически настроен. Что-то не складывает.


(Позже...)

Ага! Корреспондент отказа сервера признает "Извините. моя ошибка. Я поместил для фактического числа в меня в {1.. 10}, таким образом, это работало хорошо". Так, там Вы идете.

Ответ на этот вопрос не является "никакой версией работ удара как этот".:)

4
27.01.2020, 20:25
  • 1
    , я начинал задаваться вопросом, была ли это некоторая странная версия удара на OSX или чем-то. –   25.02.2011, 19:02

Для расширения этого, необходимо было бы использовать eval:

$ echo {1..5}
1 2 3 4 5
$ NUM=5
$ echo {1..$NUM}
{1..5}
$ eval "echo {1..$NUM}"
1 2 3 4 5

Будьте очень, очень осторожны с eval хотя! Удостоверьтесь, что Вы проверяете, что это - действительно число перед выполнением чего-то вроде этого при принятии ввода данных пользователем. Поскольку мой коллега наблюдал:"eval является злым!"

3
27.01.2020, 20:25
  • 1
    Спасибо, я на самом деле пытаюсь узнать как получается, что OP в связанном вопросе может утверждать, что их удар расширяется {1.. $NUM} в последовательность 1 2 3... ЦИФРА. –   24.02.2011, 19:08
  • 2
    не является тем же как злом. eval (и в целом способность взять некоторую строку или текст и рассматривать его как код), мощно (просто смотрят на Lisp и весь удивительный материал, который можно сделать с ним или языки, которые одалживают у него!) –  iconoclast 14.07.2011, 23:14

Расширение фигурной скобки не разворачивает переменные, потому что расширение фигурной скобки является самым первым шагом расширения оболочки, и переменные расширены позже.

Из страницы справочника удара:

Расширение фигурной скобки выполняется, прежде чем любые другие расширения и любые символы, особенные для других расширений, сохраняются в результате. Это является строго текстовым. Bash не применяет синтаксической интерпретации к контексту расширения или текста между фигурными скобками.

Так:

NUM=4
for i in {1..$NUM}
do
    echo $i
done

печать

{1..4}
2
27.01.2020, 20:25
  • 1
    @dogbone: Спасибо, я на самом деле пытаюсь узнать как получается, что OP в связанном вопросе может утверждать, что их удар расширяется {1.. $NUM} в последовательность 1 2 3... ЦИФРА –   24.02.2011, 19:08

Теги

Похожие вопросы