GoGPT Best VPN GoSearch

Значок OnWorks

makepp_builtins - Интернет в облаке

Запустите makepp_builtins в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда makepp_builtins, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


makepp_builtins - Встроенные команды в makepp

ОПИСАНИЕ


A: AWK, C: &Кот,
команда chgrp,
& chmod,
Чаун,
& cp,
CPP,
&резать, D: даты, E: & эхо,
& выражение, F: ложный,
FMT, G: & grep, H: , I: &установить, L: & ln, M: m4,
& mkdir,
и мв, P: & Perl,
& препроцесс,
& printf, R: & rm,
RmDir, S: & sed,
&Сортировать, T: хвост,
&шаблон,
&трогать,
tr, U: & удалить,
& uniq, Y: &да

Есть специальная возможность, как в Shell, вызывать встроенные команды в правиле. Единственный
Распознаваемыми метасимволами являются знаки комментария, обратная косая черта, одинарные и двойные кавычки. Только
одна команда может быть дана для каждой строки, и перенаправление ввода / вывода недоступно (см. «-i» и «-o»
ниже).

Эти команды начинаются с символа «&», который является функциональным символом в Perl, а не допустимым
первый персонаж в Shell. Если не удается найти встроенную команду с таким именем, это также
синтаксис для вызова внешнего сценария в экземпляре Perl, выполняющего правило.
Смотрите "беги".

Эти команды, а также ваши собственные команды и сценарии Perl также можно назвать
make, возвращая стандартный вывод. Это требует, чтобы Perl был построен для PerlIO.
Новые строки преобразуются в пробелы, кроме случаев, когда они оцениваются в операторе «определить».

ПЕРВЫЕ СЛОВА; = $ (& cut -d '' -f0 $ (ФАЙЛЫ))

Если эти команды не имеют отступа как действия правил, они выполняются при чтении
makefile. Вы также можете получить доступ к этим командам автономно, например, если вам нужны некоторые функции
недоступно в аналоге Unix с помощью команды makeppbuiltin.

Эти команды в основном основаны на варианте GNU. Но многие варианты (например, --backup,
--interactive или --recursive) не имеют смысла в make-файле. Итак, хотя
их было бы легко реализовать на Perl, они не учитывались. Также много команд Unix
предлагают множество вариантов, которые охватывают довольно сложные случаи (например, поле сортировки
спецификации), хотя по сути своей ограничены. Разрешение доступа к Perl, который
все равно присутствует, дает здесь гораздо больше мощности.

Списки имен файлов могут быть пустыми, что позволяет безопасно вызывать эти команды с непроверенным
список. Параметры в их краткой форме могут быть склеены, как в «-ab» вместо «-a -b».
В развернутой форме аргументы могут быть либо наклеены знаком «=», либо отдельно.
В кратком виде они могут быть наклеены напрямую или по отдельности.

Стандарт кредита
Некоторые параметры являются общими для нескольких встроенных функций, хотя краткая форма иногда скрывается
собственная опция команды (например, "& cut -f"):

-A имя файла
--args-file =имя файла
--arguments-file =имя файла
Прочтите файл и проанализируйте его как, возможно, заключенные в кавычки, разделенные пробелами и / или новой строкой.
настройки.

-f
--сила
Принудительно создавать файлы, указанные в параметрах, даже если они другого типа.
файла или пустой каталог с таким именем уже существует. Это должно предшествовать "-o,
--output = filename ", если он должен иметь какое-либо влияние на это.

-i команда оболочки
--inpipe =команда оболочки
Запустите команду (-ы) Shell и направьте вывод во встроенный. При желании может быть
быть завершающим "|" символ, чтобы указать, что это труба. С этой опцией нет
необходимо указать имена файлов. Но если вы хотите выполнить встроенную функцию как для файлов, так и для
вывод канала, вы должны использовать «-» в качестве имени файла для вывода канала. Труба
опорожняется, но, если вы также не укажете "--infail", команда не будет ждать, поэтому она
может заканчиваться параллельно. Эта опция необходима, потому что нет перенаправления
синтаксис.

-I
- неудачно
Если команда оболочки "--inpipe" не работает, это также приводит к сбою текущей встроенной команды.
В настоящее время это не работает на Strawberry и Win ActiveState из-за
нерешительно они эмулируют Unix fork / exec. Однако Cygwin понимает это правильно.

-o имя файла
--output =имя файла
Записывайте вывод в этот файл, а не в стандартный вывод. Имя файла может иметь любое из этих
формы:

имя файла
>имя файла
Просто напишите в файл.

>>имя файла
Добавить в (не обязательно) существующий файл.

+<имя файла
Также откройте файл для ввода, позволяя редактировать на месте. С этим вариантом опции
вводить имена файлов не нужно. Но если вы хотите выполнить встроенный
больше файлов, вы должны использовать "-" в качестве имени входного файла для этого файла. Фактически
вывод записывается во временный файл, который в конце перемещается в имя файла.

|команда оболочки
По конвейеру вывод встроенной функции передается командам оболочки.

Эта опция необходима, потому что нет синтаксиса перенаправления.

-O
- неудача
Если команда оболочки "--output" не работает, это также приводит к сбою текущей встроенной функции.

-r номер
- размер записи =номер
Локально устанавливает $ / для текущей встроенной функции. Это разбивает ввод на записи длины
номер а не построчно. Если номер равен нулю, каждый входной файл в целом равен одному
записи.

-s string
--separator =string
Локально устанавливает $ / для текущей встроенной функции. Это разбивает ввод на string а не линия
по строке.

-S
- синклинали
Создать "#line"«НЕТ»"" ""ФАЙЛ""" "и" # строка "«НЕТ» линии, понятные многим C-подобным
языках.

-v
--подробный
Задокументируйте изменения в файловой системе. Это должно предшествовать другим параметрам, если необходимо
задокументировать их действие. Если вы передадите эту опцию самому makepp, это будет как если бы у вас
дано для каждой встроенной команды.

Builtin команды
Есть две причины для наличия встроенных команд в makepp. Первый - предложить
набор утилит, которые, в отличие от команд Shell, гарантированно работают одинаково
везде, например "& echo -n" или "& mkdir -p", и избавляет вас от хлопот по поиску пути
для & установки и выяснения его дико меняющихся опций. В среде компиляции
полезно иметь параметр "--synclines", который обычно предоставляет только "m4", для всех
фильтры.

Другой - вопрос эффективности. В общем, следует избегать дорогостоящих форков / исполнителей.
где это возможно. В эмуляциях Unix, таких как Cygwin или BS2000 / Posix, это становится
заметный выигрыш. Но даже в Linux, когда набор тестов makepp был преобразован из
внешние команды для встроенных, общая экономия использования ЦП пользователя составила 3% и 15%
загрузка ЦП системы. (Тесты, конечно, тяжелы для примитивных действий и вряд ли вызывают
компилятор.)

Согласованность также является проблемой, хотя мы не собираемся реформировать Unix. Обычно команды
имеют различные нюансы регулярных выражений. И многие изобретают своего рода языки, каждый
разные, конечно, для чего-то (например, "expr", "sed" ...) или сложные варианты для
указание полей, разделителей, столбцов (например, «вырезать», «отсортировать» ...).

Здесь вместо этого Perl просто обрабатывает все причудливые вещи, обеспечивая согласованность между ними.
все команды и гораздо больше возможностей, чем целый набор опций. А еще лучше любой Перлкод
эти команды запускаются за вас, запускаются в пакете Makefile. Так что, а не
вставьте код Perl в действие правила, вы можете определять функции и переменные и использовать их
внутри команд:

под мой_фильтр {
# Вернуть истину, если желательно $ _
}
% .out:% .in Makeppfile
& grep & my_filter $ (ввод) -o $ (вывод)

Если вы используете в своих командах функции или переменные Perl, makepp не распознает это как
зависимость. Обычно безопаснее сообщать makepp все, поэтому правила, использующие Perl
элементы должны зависеть от make-файла или модуля, предоставляющего эти элементы, как показано в
выше пример.

С другой стороны, незнание может быть желательным, если у вас есть программа, которая смешивает программные
и аспекты конфигурации в одном файле. Примером может служить файл WSDL, содержащий как
определение интерфейса веб-службы и IP-адрес. Вы можете предварительно обработать этот файл с помощью
команду & template для внесения исправлений в конфигурацию, но не позволяя makepp заметить это.

&Кот [вариант ...] имя файла ...
Объединяет все файлы в один.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -i,
--inpipe = команда оболочки, -I, --infail, -o, --output = имя файла, -O, --outfail, -S,
--synclines, -v, --verbose "

& chmod [вариант ...] Режим имя файла ...
Наборы Режим для всех заданных файлов. Режим должен быть восьмеричной строкой.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -v, --verbose»

& cp [вариант ...] исходный файл Destfile
& cp [вариант ...] исходный файл
& cp [вариант ...] исходный файл ... конечный каталог
Копировать исходный файл в Destfile, один исходный файл в текущий каталог или несколько
исходный файлс к конечный каталог с таким же именем.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -v,
--подробный"

-l
--ссылка
Попробуй связать файлы. Если это не удается, попробуйте символическую ссылку, если это тоже
запрошено, иначе скопируйте.

-s
--символический
--символическая ссылка
--симлинк
Попробуйте символически связать файлы. Если это не удается, скопируйте.

См. Примечание под & ln.

&резать [вариант ...] имя файла ...
Распечатать выбранные части строк из каждого файла или выбранных строк, считая по всем
файлы. Вывод разделяется разделителем, который по умолчанию TAB для полей и
пустая строка для символов.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, --force, -i,
--inpipe = команда оболочки, -I, --infail, -o, --output = имя файла, -O, --outfail, -r,
--record-size = число, --separator = строка, -S, --synclines, -v, --verbose "

-c список
--characters =список
Выведите все символы, указанные в список. Список может быть любым выражением Perl
возвращает список целых чисел. Целые числа могут быть положительными, начиная с
ноль для отсчета с начала или отрицательный для отсчета с конца. В отличие от Unix
"вырезать", заказ, который вы запрашиваете, соблюдается.

В отличие от оператора среза Perl, где диапазон ".." должен быть либо положительным, либо
отрицательный, & cut позволяет начинать с положительного и кончить отрицательным. Но
это доступно, только если ваше выражение состоит только из чисел, запятых и
"..". Например, «1 ..- 2» означает все, кроме первого (0) и последнего (-1).

Выражение списка может смотреть на всю строку в $ _. Изменения в этом будут
игнорируется, однако, потому что, когда это выражение оценивается, строка уже
был разделен на Perl-переменную autosplit @ :: F. На самом деле числа, которые вы возвращаете,
индексы к этому списку.

-d string
--delimiter =string
Установите новый разделитель для полей ввода и вывода. В отличие от Unix "вырезать", это может иметь
любой длины.

-E
--нет выхода
Считайте "\" обычными литералами для "-p, --printf = format".

-f список
--fields =список
Вывести все группы, указанные в список. Список как описано в "-c,
--characters = list ". Обратите внимание, что при этом скрывается стандартный параметр" -f ", который должен быть
задано как "--force".

-l список
--lines =список
Вывести все строки, указанные в список. Список как описано в "-c,
--characters = list "с одним важным отличием: первая строка имеет номер 1, там
нет строки 0. Это определенно неэффективно для больших файлов, если у вас смешанный
от положительного до отрицательного диапазона в вашем списке, так как он считывает все в памяти.
В противном случае Perl мог бы это оптимизировать, но я не знаю, так ли это.

-m
--соответствие
Печатайте только совпадающие строки, т. Е. Те, в которых достаточно символов или полей. Этот
подразумевает "--only-delimited", поэтому вы пропустите строки с одним полем с
"--fields = 0".

-p формат
--printf =формат
Применить формат (с \ escape-символами) ко всем полям или символам.

-s
--only-разделитель
Печатать только строки, содержащие разделители.

& cut -c 10-20, -5,25- $ (ввод)
& cut -c 'grep $$ _% 3, 0..99' $ (input) # Первые 1 столбцов не кратны 100
& cut -d: --fields 0,4 --printf = '% 10s - это% s \ n' / И т.д. / пароль

& эхо [вариант ...] string ...
& printf [вариант ...] формат аргумент ...
&да [вариант ...] string ...
Записывает все строки в стандартный вывод или в указанный файл вывода. Оба & echo и & yes добавляют новую строку
в конце. Строки или для формата & printf могут содержать экранирующие символы "\", поскольку они
известны из C или современных Unix или Shell "echo". Однако они, как и в Perl, имеют двойной характер.
кавычки, что означает некоторые различия, например, одиночный завершающий символ "\" не допускается.
У Perl есть еще несколько интересных выходов, но те, которые вы можете ожидать, что-нибудь сделают
разные бывают:

\ cA - это управляющий символ ^ A.

\ u Загибает следующее письмо.

\ U Упорядочивает остальные или до следующего "\ E" или "\ L", если обнаружено.

\xHH, \Икс{Чччч}
Значение символа данного шестнадцатеричного кода. Обратите внимание, что числовые коды не
переносимость на платформы EBCDIC!

В отличие от Unix "yes", & yes в точности похоже на & echo, за исключением того, что он повторяет вывод для
до тех пор, пока это возможно, обычно до "--output '| команда '" прекращается. И, если & да
не имеет аргументов, по умолчанию - «y».

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -o,
--output = имя файла, -O, --outfail, -v, --verbose "

-E
--нет выхода
Считайте "\" обычными литералами.

-n
--nonewline
Не добавляйте новую строку после последней строки. (Не понимает & printf.)

& выражение [вариант ...] Perlcode ...
Выведите скалярное значение perlcode, которое может быть записано как один или несколько аргументов.
Обратите внимание, что встроенные команды не анализируются оболочкой, поэтому "*", "(" или ">" не
особый. Но строковые кавычки анализируются makepp, поэтому строки Perl должны быть заключены в кавычки.
дважды, если вы не хотите использовать голые слова. Если значение ложно, это не удается. Примечание
что - в отличие от "expr" в Unix - индексная функция Perl начинается с 0 (ложь) и возвращает
-1 (истина) в случае неудачи.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -o,
--output = имя файла, -O, --outfail, -v, --verbose "

-n
--nonewline
Не добавляйте новую строку после вывода.

& expr ($ (VAR) - 3) * 2 <1 && -1 || 1
& expr "$ (VAR) - 3 * 2 <1? 'радость': 'печаль'" -o $ (вывод)
- & expr $ (VAR) - 3 * 2 -o >> $ (вывод)

& grep [вариант ...] Perlcode имя файла ...
& perl [вариант ...] Perlcode имя файла ...
& sed [вариант ...] Perlcode имя файла ...
Все файлы читаются построчно (если вы не указали параметр "--separator"), и
Perlcode оценивается для каждой строки перед печатью. & sed похож на
"perl -pe", а & grep выводит только те строки, для которых Perlcode возвращает истину
ценить. & perl похож на "perl -ne", выводит только то, что вы явно напечатали.
в Perlcode. Содержимое строки доступно в $ _, которое можно изменить.

Из этих трех только & grep завершится ошибкой, если ничего не выдаст. Обратите внимание, что нет
игнорировать регистр, так как вы бы сделали это с помощью "/regexp / i ".

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -i,
--inpipe = команда оболочки, -I, --infail, -o, --output = имя файла, -O, --outfail, -r,
--record-size = число, -s, --separator = строка, -S, --synclines, --verbose "

Параметр "--synclines" имеет смысл только с & perl, если вы используете & Mpp :: Cmds :: print для
вывод $ _. Только & grep имеет дополнительные параметры:

-c
--считать
Подавить нормальный вывод; вместо этого выведите количество совпадающих строк. С помощью "-v"
--invert-match "(см. ниже), подсчитывать несовпадающие строки.

-l
--список
- файлы с совпадениями
Выведите только имена тех файлов с совпадениями. Когда это сочетается с "-v",
--invert-match ", вывести имена файлов с несоответствующими строками (немного
абсурдно, но совместим с Unix -vl). Когда это сочетается с удвоенным
"-vv", вывести имена файлов без совпадений.

-v
--наоборот
--revert-match
--invert-match
Измените смысл совпадения, чтобы выбрать несовпадающие строки. Обратите внимание, что это скрывает
стандартный параметр "-v", который должен быть указан как "--verbose".

-w имя файла
--waste-file =имя файла
Дополнительная корзина для мусора для сбора отбракованных линий. Это не только для
отладка кода выбора, а также для разделения ввода на две части. Как и в случае с
нормальный вывод, вы можете изменить $ _ перед возвратом false.

& sed s / foo / bar / f1 f2 f3 -o outfile # как sed s / foo / bar / f1 f2 f3> outfile
& sed '$$ _ = uc' f1 f2 f3 -o outfile # как tr '[: lower:]' '[: upper:]' f1 f2 f3
& grep '$$. % 3 'f1 f2 f3 -o outfile # удалить каждую 3-ю строку
& grep -c / match / i f1 f2 f3 # подсчитать строки, соответствующие 'match' для STDOUT

Не заставляя вас массово генерировать аксессоры, вот как вы могли бы сделать это, просто
помещая комментарий RO или RW между каждым типом и желаемым именем переменной, все на одном
линия. Сгенерированные методы получения и, возможно, установщика переходят в следующий найденный
публичный или защищенный раздел:

# Создать метод get и, возможно, установить из "type / * R [OW] * / member;".
суб cxx_accessors {
$ acc || = ''; # Кандидат в состояние 5.10.0
if (m! ^ \ s * (. +?) \ s * / \ * \ s * R ([OW]) \ s * \ * / \ s * (. +?) \ s * ;!) {
$ acc. = "# строка $. \ n"; # Сообщите C ++, откуда это взялось
$ acc. = "void set \ u $ 3 (const $ 1 & __ tmp) {$ 3 = __tmp;}"
если $ 2 экв. 'W';
$ acc. = "const $ 1 & get \ u $ 3 () const {return $ 3;} \ n";
} elsif (/ ^ \ s * (?: public | protected) \ s *: /) {
$ _. = $ acc;
$ acc = '';
}
}

% .cc:% .cc.in # Использовать & sed для обработки ввода-вывода
& sed --sync-lines & cxx_accessors $ (ввод) -o $ (вывод)

&установить [вариант ...] исходный файл Destfile
&установить [вариант ...] исходный файл ... конечный каталог
& установить --directory [вариант ...] каталог ...
Переместить или переименовать исходный файл в Destfile, или несколько исходный файлс к конечный каталог с
то же имя. Это предпочтительный способ переноса результатов сборки в их окончательный вид.
места установки.

Каждое изменение файловой системы, выполненное программой & install, регистрируется до конца
файл, на который указывает переменная среды $ INSTALL_LOG, или, если она не установлена, но
мы находимся в каталоге с RootMakeppfile (.mk), в файл .install_log в этом
каталог или в этот файл в текущем каталоге. Вы можете удалить
log перед серией вызовов & install.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -v, --verbose»

-c
- копия
Копируйте файлы, а не перемещайте их. Это предпочтительнее, так как это не заставляет
makepp, чтобы восстановить файл в следующий раз. Но это не по умолчанию, так как
совместимость с другими установочными программами.

-d
- каталог
В третьей форме этой команды создайте все заданные каталоги и любые
необходимые родительские каталоги.

-g группы
--group =группы
Измените групповое владение файлами назначения. Группа может быть предоставлена
имя или численно.

-l
--ссылка
Попробуй связать файлы. Если это не удается, скопируйте.

--log =имя файла
--logfile =имя файла
Используйте имя файла вместо обычного файла журнала.

-m Режим
--mode =Режим
Наборы Режим для всех файлов или каталогов назначения. Режим должен быть восьмеричной строкой.

-o владелец
--owner =владелец
Измените владельца файлов назначения. Владелец может быть указан по имени или
численно.

-r
--решать
--resolve-символический
--resolve-символическая-ссылка
--resolve-символическая ссылка
-S
--символический
--символическая ссылка
--симлинк
Создает символические ссылки вместо перемещения. Эти параметры передаются в & ln и
описано там.

-s
--полоска
Вызывает служебную программу «strip», которая должна быть в $ PATH для файлов назначения.

& ln [вариант ...] исходный файл Destfile
& ln [вариант ...] исходный файл
& ln [вариант ...] исходный файл ... конечный каталог
Ссылка исходный файл в Destfile, один исходный файл в текущий каталог или несколько
исходный файлс к конечный каталог с таким же именем.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -v,
--подробный"

-r
--решать
--resolve-символический
--resolve-символическая-ссылка
--resolve-символическая ссылка
Это то, что вы всегда хотели, чтобы "ln -s" делал. Создавайте символические, а не жесткие
ссылки не на указанные строки, а на указанные файлы.

-s
--символический
--символическая ссылка
--симлинк
Создавайте символические, а не жесткие ссылки.

Примечание: В различных файловых или операционных системах эта операция не поддерживается. Или это
используется, например, Cygwin, но не распознается родными компиляторами Windows, если вы его используете.
Для make-файла, который нельзя изменить, чтобы получить хоть какой-то результат, & ln и "& cp -l
-s "может вместо этого скопировать файлы (но не каталоги). Для этого вы
перед вызовом makepp необходимо экспортировать следующую переменную:

экспорт MAKEPP_LN_CP = 1
& ln --resolve или --symbolic скопирует файлы вместо создания символического
ссылку.

экспорт MAKEPP_LN_CP = 2
& ln скопирует файлы вместо создания жесткой ссылки.

экспорт MAKEPP_LN_CP = 3
Все вызовы & ln будут копировать файлы вместо создания любого вида
ссылку.

& mkdir [вариант ...] каталог ...
Создайте каталоги.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -v,
--подробный"

-m Режим
--mode =Режим
Наборы Режим для всех созданных каталогов, независимо от umask. Режим должен быть
восьмеричная строка.

-p
- родитель
Также создайте все необходимые родительские каталоги. Игнорировать ошибку создания каталога
из-за того, что каталог уже существует (даже если он был одновременно создан
другой процесс).

& mv [вариант ...] исходный файл Destfile
& mv [вариант ...] исходный файл
& mv [вариант ...] исходный файл ... конечный каталог
Переместить или переименовать исходный файл в Destfile, один исходный файл в текущий каталог или несколько
исходный файлс к конечный каталог с таким же именем.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -v,
--подробный"

& препроцесс [вариант ...] переменная = определение ... имя файла ...
Это обрабатывает файлы точно так же, как makepp делает для make-файлов. Это
более мощный, чем & template, но синтаксически не подходит для файлов с большим количеством
«$» - знаки, вроде Makefiles или скриптов.

Условные операторы, а также операторы "include" / "_ include" (которые здесь
не создавайте файл и не ищите вверх), "perl" / "makeperl" / "perl_begin" или
"sub" / "makeub" или любые операторы, которые вы определяете в файле, обрабатываются. Пустой
и строки комментариев удалены.

Но вместо того, чтобы изучать правила сборки, он выведет все оставшиеся строки после
Расширение выражения "$ (...)". Чтобы заявление не было распознано как таковое,
вы можете предварять их пустым выражением «$ ()». То же самое относится к строкам, которые вы
хотят остаться пустыми или оставить начальный знак комментария. Аналогично, если
завершающая обратная косая черта не должна соединять строку со следующей, после нее ставится «$ ()».

Обычная строка выводится как есть.
Строка с $ (MAKEEXPRESSIONS) расширяется и выводится.
ifdef WANTTHIS # не выводится независимо от того, определено оно или нет
может не получить результат
ENDIF
включить несколько файлов
_include некоторые файлы, которые могут не существовать # или -include
$ () include пустое выражение предотвращает распознавание ключевого слова.
# Строки комментариев и пустые строки проглатываются.

$ () # Если они не замаскированы пустым выражением.
$ ()
Пустое выражение предотвращает \ $ ()
продолжение обратной косой черты от распознавания.

может дать:

Обычная строка выводится как есть.
Строка с тем, что расширяется и выводится.
здесь много невнятного содержания ...
включить пустое выражение предотвращает распознавание ключевого слова.
# Если только они не замаскированы пустым выражением.

Пустое выражение предотвращает \
продолжение обратной косой черты от распознавания.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -o,
--output = имя файла, -O, --outfail, -S, --synclines, -v, --verbose "

-a
--назначение
Также обрабатывайте назначения в файлах, как makepp. Увы, таких строк быть не может
маскируется пустым символом "$ ()", потому что допустимо создавать имена переменных с
выражения. Это дополнительно распознает утверждения "определить",
«экспорт» / «не экспорт» и «переопределение» (они могут быть замаскированы с помощью «$ ()»).

-ч \\%хэш
--hashref = \\%хэш
Это позволяет предварительно назначать значения переменных, в том числе длинные, которые нелегко.
перешел в команду. Переданное выражение может быть любым кодом Perl, который возвращает
ссылка на хэш. Это объединяется с любыми другими переменными, переданными команде,
в том числе из другого параметра "--hashref".

& rm [вариант ...] имя файла ...
Удалите файлы, если у вас есть разрешение на запись в каталог. Это то, что в Unix "rm -f"
удалить, так как он имеет специальную защиту для интерактивного использования, которая не требуется в
Makefile.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -v, --verbose»

-f
--сила
Это предотвращает появление жалоб на несуществующие файлы. Это побочный эффект
опция есть в Unix, и единственная, которая имеет здесь смысл.

-m
--metainfo
Помимо указанных файлов, это также удаляет метаинформацию makepp.
хранит о них в каталоге .makepp. Таким образом, makepp забывает все, что когда-либо знал
о данных файлах. Если после этого каталог .makepp станет пустым, он тоже
удален.

Это также удалит указанные каталоги, но только если они пусты. Чтобы облегчить
это будет удалять каталоги последними в порядке убывания глубины. Так что вы можете
используйте выражения «**» для удаления целых иерархий. Вот пример, который можно найти в
многие файлы make верхнего уровня. Обратите внимание, что есть утилита makeppclean, которая может
это более эффективно.

$ (фальшивая чистота):
& rm -fm $ (только устаревшие ** / *)

$ (фиктивная чистота): cleanold
& rm -f $ (подстановочный знак ** / *. [ao])

$ (фальшивый distclean): чистый
& rm -fm $ (только цели ** / *)

&Сортировать [вариант ...] имя файла ...
Сортирует все файлы вместе в лексикографическом порядке. Это неэффективно для довольно больших
файлы, потому что это происходит полностью в памяти. Это не удастся, если объединенный размер
объем всех файлов превышает доступный вам объем памяти.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -i,
--inpipe = команда оболочки, -I, --infail, -o, --output = имя файла, -O, --outfail,
--record-size = число, -s, --separator = строка, -v, --verbose "

-c Perlcode
--compare =Perlcode
Perlcode представляет блок сортировки Perl с двумя кандидатами на сортировку в $ a и
$ б.

-n
--числовой
--числовая сортировка
Это числовая сортировка по началу записей. Ведущие пробелы
пропущено. Вы можете использовать "--transform" и "--detransform", если числа не в
начало.

-r
--задний ход
Выведите результаты в обратном порядке. Обратите внимание, что это скрывает стандартный вариант
«-r», который должен быть указан как «- размер-записи».

-t Perlcode
--transform =Perlcode
-d Perlcode
--detransform =Perlcode
Если у вас сложный код, сортировка становится все дороже и дороже пропорционально
количество записей n, потому что код называется O (n журнал(n)) раз. Избегать
что вы можете позволить Perl сконцентрироваться на сортировке, сначала изменив
строки, так что извлечение сложных критериев поиска происходит один раз для каждой записи,
и изменяя их обратно, как только они будут отсортированы.

Если эти параметры указаны, "--transform" Perlcode сопоставляется с записями
в $ _ один за другим, и можете их изменять. После сортировки "--detransform"
Perlcode сопоставляется с измененными записями в $ _ одну за другой и может
изменить их обратно. Обычно вы не будете использовать ни один из этих вариантов или оба, если только
вы хотите вывести измененные строки.

Превращение строк в структуру извлеченных критериев сортировки, которую вы
"--сравнивать" Perlcode может поднять, известно как преобразование Шварца (ST).
Запаковываем все в саму строку, чтобы не было "--compare" Perlcode is
необходимо, чтобы вся сортировка происходила без выполнения дорогостоящего Perl
код, известный как преобразование Гуттмана-Рослера (GRT). Вы можете найти советы от
поиск этих имен в Интернете.

# Дорогая сортировка числовых выражений по значению ($$ защищает $ от расширения makepp)
& sort --compare 'eval ($$ a) <=> eval ($$ b)' $ (ввод) -o >> $ (вывод)

# ST для сортировки без учета регистра
& sort -t '[lc, $$ _]' -c '$$ a -> [0] cmp $$ b -> [0]' -d '$$ _-> [1]' $ (ввод) - o >> $ (вывод)

# GRT с использованием функций модификации, определенных в другом месте Makeppfile
& sort -t & transform -d & detransform $ (ввод) -o >> $ (вывод)

-u
--uniq
--уникальный
После сортировки удалите дубликаты. Это либо одинаковые строки, либо если
дается опция "--compare", которая Perlcode отчеты как эквивалент.

&шаблон [вариант ...] макрос = определение ... имя файла ...
Это макропроцессор, не такой мощный, как препроцессор C или «m4».
См. & Preprocess для более мощной альтернативы. Он был вдохновлен макросом automake
замена в Makefile.am и Makefile.in. Но это выходит за рамки этого. Любой нормальный текст
проходит без изменений. Специальные конструкции по умолчанию разделяются знаком «@». Они
должен уместиться в одной строке, если вы не передадите один из "-r, --record-size" или "--separator".

@# комментарий @
Обратите внимание, что, несмотря на заимствование синтаксиса комментария конца строки сценария "#", этот
встроенный комментарий.

@MACRO@
Эта конструкция заменяется значением MACRO. Имена макросов должны начинаться с
буква или подчеркивание, за которым следует любое количество букв, подчеркиваний, минусов или
точки. В отличие от имен makepp, подчеркивание и минус не эквивалентны.

@MACRO(arg1, arg2...) @
Как и первый, но параметризованный. Аргументы заменяют от 1 до 9 долларов или
"$ {количество}" в значении. Или, если значение является функцией Perl, они передаются как
нормальные параметры. Затем результат заменяет всю конструкцию. Один уровень
вложение макросов возможно в том случае, если аргументы в скобках могут содержать простые
Вызовы «@ MACRO @», как в «@f (@x @) @», где «@ x @» раскрывается перед тем, как быть
заменен в кузов на "ф".

@включают(имя файла)@
Это единственный предопределенный макрос. Он заменяется на & шаблон-обработанный
содержимое названного файла. Как и все макросы, это может происходить в середине
линия. Увы, из-за этого "-S, --synclines" игнорирует включение файла, делая
кажется, все идет из включающего файла.

@MACRO=определение@
@MACRO?=определение@
Это определяет макрос в файле. Это ничем не заменяется. Секунда
форма вступает в силу только в том случае, если макрос не был определен, предположительно в команде
линии.

@MACRO { Перлкод }@
Это также определяет макрос, телом которого является подпрограмма Perl. Аргументы, если
есть такие, передаются как @_.

@{ Перлкод }@
Это запускает Перлкод немедленно и заменяется возвращаемым значением.

Пока что мы видели только один синтаксис для встраивания особых вещей. Есть еще одно
многострочный синтаксис, и оба варианта позволяют подавить новую строку. Эти
встроенные синтаксисы (которые можно настроить с помощью параметров ниже). Здесь SPECIAL стенды для
любая из конструкций, показанных выше:

@SPECIAL@
@SPECIAL@\
Это может быть умножено в любом месте строки. Вариант, сразу за которым следует
"\" работает только в конце строки. Он также заменяет следующий разрыв строки.

@@SPECIAL@@ нормально текст @@
@@SPECIAL@@ нормально текст @@ \
Это похоже на предыдущий. Однако обычный текст, который также заменяется,
может занимать несколько строк. Вы можете поместить специальные части в строки комментариев вокруг
исходный код, который требуется только в удаленном скрипте, который необходимо удалить или
заменены в процессе установки:

# @@ # следующие 2 строки исчезнут @@
echo Вы запускаете неустановленную версию этого скрипта
# @@
# @@ REPLAMCENT @@
echo Здесь будет что-то еще
# @@

Бессмысленный пример, показывающий различные возможности:

@ m1 = некоторое определение @ \
@ m2 = foo $ 1 бар @ \
@ middle_of_arg = iddl @ \
@ m1 @ @ m2 (m @ middle_of_arg @ e) @
@@ m2 (много строк) @@
...
@@ простой текст 1 + 2 = @ {1 + 2} @

становится

какое-то определение foo средняя полоса
foo many lines bar простой текст 1 + 2 = 3

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -i,
--inpipe = команда оболочки, -I, --infail, -o, --output = имя файла, -O, --outfail, -r,
--record-size = число, --separator = строка, -S, --synclines, -v, --verbose "

-d
--определенный
Заменять только те экземпляры макросов, которые действительно определены. Без этой опции
все неопределенные будут заменены ничем.

-ч \\%хэш
--hashref = \\%хэш
Это позволяет предварительно назначить значения макросов, в том числе длинные, которые нелегко.
перешел в команду. Переданное выражение может быть любым кодом Perl, который возвращает
ссылка на хэш. Он объединяется с любыми другими макросами, переданными команде,
в том числе из другого параметра "--hashref". Хеш-значение также может быть кодом
ссылка, в этом случае функция вызывается, как с "@macro { Перлкод } @ "
определения.

-s /префикс Суффикс/
--simple =/префикс Суффикс/
Используйте префикс и суффикс до и после SPECIAL соответственно вместо "@". В
первый символ является разделителем и не обязательно должен быть косой чертой. Эти значения - Perl
регулярные выражения. Вы не должны вводить группировку типа «(...)», но «(?: ...)» - это нормально.

-m / префикс / суффикс / послепрефикс / [афтерсуффикс /]
--multiline =/ префикс / суффикс / послепрефикс / [афтерсуффикс /]
Используйте префикс, суффикс и послепрефикс до и после SPECIAL и в конце
соответственно вместо "@@". Если после суффикса также указывается имя макроса
должен повториться перед этим. Первый символ является разделителем, и его необязательно
косая черта. Например, XML-код, к которому вы должны добавить "--defined", если хотите
сохранить другие теги, не определенные вами:

--defined --simple = | <| /> | --multiline = | <|> | |

Или, лучше, воспользуйтесь инструкциями по обработке " ", предназначенные для такой цели:

--defined --simple = '| <\? | \?> |'

Или, если вы хотите объединить это с "& entity;" синтаксис для простого макроса
замены (с сохранением числовых элементов "☺", не являющихся комментариями):

--defined --simple = '_ (?: & (?! #) | <\?) _ (?:; | \?>) _'

&трогать [вариант ...] имя файла ...
Обновляет отметки времени модификации и доступа для каждого файла до настоящего момента. Если файл
не существует, он создается.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -v, --verbose»

& удалить [вариант ...] [имя файла ...]
Удалите файлы, ранее установленные с помощью & install. В имя файлаs записываются в лог-файлы
пользователем & install. Если ни один не указан, ни опция "--inpipe", читает файл журнала по умолчанию.
из & установить.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -i,
--inpipe = shellcommand, -I, --infail, -v, --verbose "

& uniq [вариант ...] имя файла ...
Отбросьте все подряд равные строки, кроме одной.

«Стандартные параметры»: «-A, --args-file, --arguments-file = filename, -f, --force, -i,
--inpipe = команда оболочки, -I, --infail, -o, --output = имя файла, -O, --outfail, -r,
--record-size = число, -s, --separator = строка, -S, --synclines, -v, --verbose "

-c Perlcode
--compare =Perlcode
Эти Перлкод получает предыдущую и текущую строки в $ a и $ b и возвращает
истина, если он считает две строки равными.

& uniq --compare = 'lc ($$ a) eq lc $$ b' $ (входы) -o $ (выход)

Эмулируемый команды
Различные вещи не встроены, но могут быть выполнены другими командами:

awk Используйте & sed.

команда chgrp
Чаун
Эти команды в основном не переносимы! Они либо тихо ничего не сделают, либо проиграют,
в зависимости от системы. Как правило, только root может выполнять эти операции, т.е.
почему они доступны только через команду & install.

cpp Используйте & preprocess или & template.

даты
Любой из них частично делает то же самое:

& expr местное время
& expr gmtime

ложный
Используйте & expr без аргументов или 0.


хвост
Вы можете добиться того же результата с помощью & grep или "& cut --lines":

& grep 1..10 file # первые десять строк
& grep 10..eof file # все строки, начиная с десятой
& cut --lines -10 ..- 1 файл # последние десять строк

Обратите внимание, что 1..10 в & grep - это оператор триггера номера строки Perl, который досадно
начинается с 1. Не начинайте с 0, иначе триггер никогда не станет правдой.

fmt Это упоминается здесь, поскольку Perl предоставляет связанные функции. Однако у меня было
проблемы с использованием объявления "формата" в make-файле. Что работает
базовая функция "formline". Например, чтобы преобразовать файл CSV, состоящий из имен и
цены в табличном формате:

суб csv2txt {
formline "\ @ <<<<<<<<<<<<<<< ^ ###########. ## \ n", split ',';
$ _ = $ ^ A;
$ ^ A = '';
}

% .txt:% .csv
& sed & csv2txt $ (ввод) -o $ (вывод)

m4 Используйте & preprocess или & template.

RmDir
Используйте & rm.

tr Используйте & sed.

Используйте makepp_builtins в Интернете с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad




×
Реклама
❤️Совершайте покупки, бронируйте или заказывайте здесь — никаких затрат, что помогает поддерживать бесплатность услуг.