Командная строка
Использование аргументов внутри скриптов
При запуске скрипта с помощью julia, вы можете передать дополнительные аргументы своему скрипту:
$ julia script.jl arg1 arg2...
Эти дополнительные аргументы командной строки передаются в глобальной константе ARGS. Название самого скрипта передаётся в качестве глобальной PROGRAM_FILE. Обратите внимание, что ARGS также устанавливается, когда выражение Julia задаётся с помощью опции -e в командной строке (см. вывод справки julia ниже), но PROGRAM_FILE будет пустым. Например, чтобы просто вывести аргументы, переданные скрипту, можно сделать так:
$ julia -e 'println(PROGRAM_FILE); for x in ARGS; println(x); end' foo bar foo bar
Или вы можете поместить этот код в скрипт и запустить его:
$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x); end' > script.jl $ julia script.jl foo bar script.jl foo bar
Разделитель -- может использоваться для разделения аргументов командной строки, предназначенных для файла скрипта, от аргументов, предназначенных для Julia:
$ julia --color=yes -O -- script.jl arg1 arg2..
См. также Скрипты для получения дополнительной информации о написании скриптов Julia.
Параллельный режим
Julia можно запустить в параллельном режиме с помощью опций -p или --machine-file. -p n запустит дополнительные n рабочих процессов, а --machine-file file запустит рабочий процесс для каждой строки в файле file. Машины, определённые в file, должны быть доступны через ssh вход без пароля, с установленной Julia в том же месте, что и на текущем хосте. Каждое определение машины имеет вид [count*][user@]host[:port] [bind_addr[:port]]. user по умолчанию равен текущему пользователю, port – стандартному порту ssh. count – количество рабочих процессов, запускаемых на узле, и по умолчанию равно 1. Необязательная опция bind-to bind_addr[:port] указывает IP-адрес и порт, которые другие рабочие процессы должны использовать для подключения к этому рабочему процессу.
Файл автозапуска
Если у вас есть код, который вы хотите выполнить всякий раз, когда запускается Julia, вы можете поместить его в ~/.julia/config/startup.jl:
$ echo 'println("Greetings! 你好! 안녕하세요?")' > ~/.julia/config/startup.jl
$ julia
Greetings! 你好! 안녕하세요?
...
Обратите внимание, что хотя у вас должна быть папка ~/.julia после первого запуска Julia, вам может потребоваться создать папку ~/.julia/config и файл ~/.julia/config/startup.jl в случае её использования.
Чтобы код автозапуска выполнялся только в The Julia REPL (а не при запуске на скрипте), используйте atreplinit в startup.jl:
atreplinit() do repl
# ...
end
Командно-строчные переключатели для Julia
Существует множество способов запуска кода Julia и предоставления опций, аналогичных тем, которые доступны для программ perl и ruby:
julia [switches] -- [programfile] [args...]
Ниже приведён полный список командно-строчных переключателей, доступных при запуске julia (* обозначает значение по умолчанию, если применимо; настройки, помеченные '($)', могут вызывать предварительную компиляцию пакетов):
| Переключатель | Описание |
|---|---|
-v, --version
|
Отобразить информацию о версии |
-h, --help
|
Вывести параметры командной строки (это сообщение). |
--help-hidden |
Необычные параметры, не отображаемые -h
|
--project[={<dir>|@.}] |
Установить <dir> как домашний проект/среду. По умолчанию @. опция будет искать в родительских каталогах, пока не будет найден файл Project.toml или JuliaProject.toml. |
-J, --sysimage <file>
|
Запустить с указанным файлом образа системы |
-H, --home <dir>
|
Указать расположение исполняемого файла julia |
--startup-file={yes*|no} |
Загрузить JULIA_DEPOT_PATH/config/startup.jl; если переменная окружения JULIA_DEPOT_PATH не задана, загрузить ~/.julia/config/startup.jl
|
--handle-signals={yes*|no} |
Включить или выключить обработчики сигналов по умолчанию Julia |
--sysimage-native-code={yes*|no} |
Использовать нативный код из образа системы, если доступен |
--compiled-modules={yes*|no} |
Включить или выключить инкрементальную предкомпиляцию модулей |
--pkgimages={yes*|no} |
Включить или выключить использование кеширования нативного кода в виде pkgimages |
-e, --eval <expr>
|
Оценить <expr>
|
-E, --print <expr>
|
Оценить <expr> и отобразить результат |
-L, --load <file>
|
Загрузить <file> немедленно на всех процессорах |
-t, --threads {N|auto}
|
Включить N потоков; auto пытается вывести полезное значение по умолчанию для количества потоков, но точное поведение может измениться в будущем. В настоящее время auto использует количество ЦП, назначенных этому процессу julia, на основе интерфейса задания сродства, специфичного для ОС, если он поддерживается (Linux и Windows). Если это не поддерживается (macOS) или сродство процессов не настроено, используется количество потоков ЦП. |
--gcthreads=N[,M] |
Использовать N потоков для фазы маркировки GC и M (0 или 1) потоков для фазы одновременного подметания GC. N устанавливается в половину от числа вычислительных потоков, а M в 0, если не указано иное. |
-p, --procs {N|auto}
|
Целочисленное значение N запускает N дополнительных локальных рабочих процессов; auto запускает столько рабочих процессов, сколько локальных потоков ЦП (логических ядер) |
--machine-file <file> |
Запустить процессы на хостах, перечисленных в <file>
|
-i |
Интерактивный режим; REPL запускается и isinteractive() имеет значение true |
-q, --quiet
|
Тихий запуск: без баннера, подавление предупреждений REPL |
--banner={yes|no|auto*} |
Включить или выключить заставку при запуске |
--color={yes|no|auto*} |
Включить или выключить цветной текст |
--history-file={yes*|no} |
Загрузить или сохранить историю |
--depwarn={yes|no*|error} |
Включить или выключить предупреждения о устаревших синтаксисе и методах (error преобразует предупреждения в ошибки) |
--warn-overwrite={yes|no*} |
Включить или выключить предупреждения о перезаписи методов |
--warn-scope={yes*|no} |
Включить или выключить предупреждения об неоднозначности в глобальной области видимости |
-C, --cpu-target <target>
|
Ограничить использование функций ЦП до <target>; установите значение help для просмотра доступных вариантов |
-O, --optimize={0,1,2*,3}
|
Установить уровень оптимизации (уровень равен 3, если -O используется без указания уровня) ($) |
--min-optlevel={0*,1,2,3} |
Установить нижнюю границу оптимизации на модульный основе |
-g, --debug-info={0,1*,2}
|
Установить уровень генерации отладочной информации (уровень равен 2, если -g используется без указания уровня) ($) |
--inline={yes|no} |
Управлять разрешением встраивания, включая переопределение объявлений @inline |
--check-bounds={yes|no|auto*} |
Выводить проверки границ всегда, никогда или учитывать объявления @inbounds ($) |
--math-mode={ieee,fast} |
Запретить или разрешить небезопасные оптимизации с плавающей точкой (переопределяет объявление @fastmath) |
--code-coverage[={none*|user|all}] |
Подсчитывать выполнение строк исходного кода (опускание настройки эквивалентно user) |
--code-coverage=@<path> |
Подсчитывать выполнение, но только в файлах, которые попадают в заданный путь к файлу/каталогу. Для выбора этого параметра требуется префикс @. @ без пути отслеживает текущую директорию. |
--code-coverage=tracefile.info |
Добавить информацию о покрытии в файл отслеживания LCOV (имя файла поддерживает токены формата). |
--track-allocation[={none*|user|all}] |
Подсчитывать байты, выделенные каждой строкой исходного кода (опускание настройки эквивалентно «пользователю») |
--track-allocation=@<path> |
Подсчитывать байты, но только в файлах, которые попадают в заданный путь к файлу/каталогу. Для выбора этого параметра требуется префикс @. @ без пути отслеживает текущую директорию. |
--bug-report=KIND |
Запустить сеанс отчёта об ошибках. Можно использовать для запуска REPL, выполнения скрипта или оценки выражений. Сначала пытается использовать BugReporting.jl, установленный в текущей среде, и переходит к последней совместимой версии BugReporting.jl, если нет. Для получения дополнительной информации см. --bug-report=help. |
--compile={yes*|no|all|min} |
Включить или выключить компилятор JIT или запросить исчерпывающую или минимальную компиляцию |
--output-o <name> |
Сгенерировать файл объекта (включая данные образа системы) |
--output-ji <name> |
Сгенерировать файл данных образа системы (.ji) |
--strip-metadata |
Удалить строковые пояснения и информацию о местоположении исходного кода из образа системы |
--strip-ir |
Удалить IR (промежуточное представление) скомпилированных функций |
--output-unopt-bc <name> |
Сгенерировать неоптимизированный LLVM bitcode (.bc) |
--output-bc <name> |
Сгенерировать LLVM bitcode (.bc) |
--output-asm <name> |
Сгенерировать файл ассемблера (.s) |
--output-incremental={yes|no*} |
Сгенерировать инкрементный выходной файл (а не полный) |
--trace-compile={stderr,name} |
Вывести прекомпиляционные инструкции для методов, скомпилированных во время выполнения, или сохранить их в путь |
--image-codegen |
Принудительно сгенерировать код в режиме создания изображений |
--heap-size-hint=<size> |
Вызывает сборку мусора, если использование памяти превышает указанное значение. Указание на объём памяти может быть задано в мегабайтах (например, 500M) или гигабайтах (например, 1G) |
В Julia 1.0, опция --project=@. по умолчанию не искала вверх от корневой директории Git-репозитория в поисках файла Project.toml. Начиная с Julia 1.1, она это делает.
© 2009–2024 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.10/manual/command-line-interface/