命令行界面
在脚本中使用参数
运行脚本时使用 朱莉娅,您可以将其他参数传递给您的脚本:
$朱莉娅脚本。jl arg1arg2...
这些额外的命令行参数在全局常量中传递 阿格斯. 脚本本身的名称作为全局传入 程序文件. 请注意 阿格斯 当使用Julia表达式给出时,也会设置 -e 命令行上的选项(请参阅 朱莉娅 下面帮助输出)但是 程序文件 将是空的。 例如,要打印给脚本的参数,可以这样做:
$julia-e'println(PROGRAM_FILE);for X in ARGS;println(x);end'foo bar
[医]脚
酒吧
或者您可以将该代码放入脚本并运行它:
$echo'println(PROGRAM_FILE);for X in ARGS;println(x);end'>脚本。jl
$朱莉娅脚本。jl foo酒吧 剧本。jl
[医]脚 酒吧
该 -- 分隔符可用于将脚本文件的命令行参数与Julia的参数分开:
$julia--color=yes-O--script。jl arg1arg2..
请参阅 脚本有关编写Julia脚本的更多信息。
该 主要。主要 入口点
截至朱莉娅,1.11, 基地 导出宏 @主. 此宏扩展到符号 主要,但在执行脚本或表达式结束时, 朱莉娅 将尝试执行 主要。主(基地。ARGS) 如果这样的功能 主要。主要 已被定义,并通过使用 @主 宏。
此功能旨在帮助统一已编译和交互式工作流。 在编译的工作流中,加载定义 主要 函数可以在空间上和时间上与调用分开。 但是,对于交互式工作流,该行为等效于显式调用 出口(主要(ARGS)) 在计算的脚本或表达式的末尾。
|
兼容性
Julia1.11特殊入口点 |
要查看此功能的作用,请考虑以下定义,尽管没有显式调用,但它仍将执行print函数 主要:
$julia-e'(@main)(args)=println("Hello World!")'
你好世界! $
只有 主要 绑定在 主要 模块具有此行为,并且仅当宏 @主 在定义模块中使用。
例如,使用 你好! 而不是 主要 不会导致 你好! 函数执行:
$julia-e'hello(args)=println("Hello World!")'
$
一个简单的定义也不会 主要:
$julia-e'main(args)=println("Hello World!")'
$
但是,选择加入不必在定义时发生:
$julia-e'main(args)=println("Hello World!");@主'
你好世界! $
该 主要 绑定可以从包中导入。 一个_hello world_包定义为
module Hello
出口主要
(@main)(args)=println("你好从包!")
结束
可用作:
$julia-e'使用Hello' 包裹里的你好!
$julia-e'import Hello'#N.B.:执行取决于绑定而不是包是否加载 $
但是,请注意,当前的最佳实践建议是不要在同一个包中混合应用程序和可重用库代码。 帮助程序应用程序可以作为单独的包分发,也可以作为具有单独的脚本分发 主要 包裹的入口点 宾 文件夹。
并行模式
Julia可以在并行模式下启动 -p 或 --机器-档案 选择。 -p n 将推出一个额外的 n 工作进程,而 --机器-档案档案 将为文件中的每一行启动一个worker 档案. 中定义的机器 档案 必须通过无密码访问 ssh 登录,Julia安装在与当前主机相同的位置。 每个机器定义采用以下形式 [计数*][用户@]主机[:端口][bind_addr[:端口]]. 用户 默认为当前用户, 港口 到标准的ssh端口。 计数 节点上要生成的worker数,默认为1。 可选项 bind-to bind_addr[:端口] 指定其他工作程序应用于连接到此工作程序的IP地址和端口。
Julia的命令行开关
有多种方法可以运行Julia代码并提供选项,类似于可用于 perl的 和 红宝石 计划:
julia [switches] -- [programfile] [args...]
以下是启动julia时可用的命令行开关的完整列表(如果适用,'*'标记默认值;标记为'($)'的设置可能会触发包预编译):
| 开关/描述|
|:--------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| -v, --版本 /显示版本信息|
| -h, --帮助 /打印命令行选项(此消息)|
| --帮助-隐藏 /打印不常见的选项 -h |
| --项目[={<dir>\|@temp\|@.}] /套装 <目录> 作为活动项目/环境。 或者,创建一个临时环境 @温度. 默认值 @. 选项将搜索父目录,直到 工程。汤姆尔 或 朱利亚项目。汤姆尔 文件被找到。 |
| -J, --sysimage<文件> /启动给定的系统映像文件|
| -H, --首页<目录> /设定 朱莉娅 可执行|
| --启动-文件={yes*\|no} /负荷 JULIA_DEPOT_PATH/config/startup。jl;如果 JULIA_DEPOT_PATH环境变量未设置,加载 ~/.朱莉娅/配置/启动。jl |
| --句柄-信号={yes*\|no} /启用或禁用Julia的默认信号处理程序|
| --sysimage-native-code={yes*\|no} /如果可用,请使用系统映像中的本机代码|
| --编译模块={yes*\|no\|existing\|strict} /启用或禁用模块的增量预编译。 该 现有 选项允许使用以前预编译的现有编译模块,但不允许创建新的预编译文件。 该 严格的 选项类似,但如果没有找到预编译文件,则会出错。 |
| --pkgimages={yes*\|no\|existing} /以pkgimages的形式启用或禁用本机代码缓存的使用。 该 现有 选项允许使用现有的pkgimages,但不允许创建新的|
| -e, --eval<expr> /评估 <expr> |
| -E, --打印<expr> /评估 <expr> 并显示结果|
| -m, --模块<包>[args] /运行入口点 包裹 (@主 功能)与 args|/
| `-L /负荷 , --加载<文件><文件> 立即在所有处理器|| -t, --线程 {auto\|N[,auto\|M]} /启用N[+M]个线程;N个线程分配给 违约情况 线程池,如果指定了M,则将M个线程分配给 互动式 线程池; 汽车 尝试推断要使用的有用的默认线程数,但确切的行为可能会在将来更改。 当前,如果支持(Linux和Windows),则将N设置为基于特定于操作系统的关联性分配接口分配给此Julia进程的Cpu数,如果不支持(MacOS)或未配置进程关联性,则将M设置为1。 | | --gcthreads=N[,M] /GC的标记阶段使用N个线程,GC的并发扫描阶段使用M(0或1)个线程。 N设置为计算线程数,如果未指定,M设置为0。 有关更多详细信息,请参阅[内存管理和垃圾回收](/manual/memory-management#man-memory-management)。 | | -p, --procs {N\|auto} /整数值N启动n个额外的本地工作进程; 汽车 启动与本地CPU线程(逻辑内核)数量一样多的worker|| --机器-文件<文件> /在列出的主机上运行进程 <文件> | | -我, --互动 /交互模式;REPL运行和 isinteractive() 是真的|| -q, --安静 /安静启动:无横幅,抑制REPL警告|| --横幅={yes\|no\|short\|auto*} /启用或禁用启动横幅|| --颜色={yes\|no\|auto*} /启用或禁用彩色文本|| --历史-档案={yes*\|no} /加载或保存历史记录|| --depwarn={yes\|no*\|error} /启用或禁用语法和方法弃用警告(错误 将警告变成错误)|| --警告-复盖={yes\|no*} /启用或禁用方法复盖警告|| --警告-范围={yes*\|no} /启用或禁用不明确的顶级范围的警告|| -C, --cpu-目标<目标> /限制CPU功能的使用率高达 <目标>;设为 救命! 查看可用选项|| -O, --优化={0\|1\|2*\|3} /设置优化级别(如果级别为3 -O 是在没有等级的情况下使用的)($)|| --min-optlevel={0*\|1\|2\|3} |设置每个模块优化的下限|/ -g, --调试-信息={0\|1*\|2} /设置调试信息生成的级别(如果 -g 是在没有等级的情况下使用的)($)|| --内联={yes\|no} /控制是否允许内联,包括重写 @内联 声明|| --检查边界={yes\|no\|auto*} /发出边界检查始终、从不或尊重 @inbounds 声明(元)|| --数学模式={ieee\|user*} /永远跟随 ieee 浮点语义或尊重 @fastmath 声明|| --波莉={yes*\|no} /启用或禁用多面体优化器Polly(复盖@polly声明)|| --代码复盖率[={none*\|user\|all}] /计数源行的执行(省略设置等效于 用户) | | --code-coverage=@ /计数执行,但只在给定文件路径/目录下的文件中执行。 该 @ 选择此选项需要前缀。 A @ 没有路径将跟踪当前目录。 | | --code-coverage=tracefile.info /将复盖信息附加到LCOV tracefile(文件名支持格式标记)。 | | --轨道分配[={none*\|user\|all}] /计数每个源行分配的字节(省略设置相当于"用户")|| --track-allocation=@ /计数字节,但仅限于位于给定文件路径/目录下的文件。 该 @ 选择此选项需要前缀。 A @ 没有路径将跟踪当前目录。 | | --任务指标={yes\|no*} |启用每个任务指标的收集|/ --bug-报告=种类 /启动错误报告会话。 它可用于启动REPL、运行脚本或计算表达式。 它首先尝试使用BugReporting。jl安装在当前环境中,并回落到最新的兼容BugReporting。jl如果没有。 有关详细信息,请参阅 --bug-报告=帮助. | | --heap-size-hint= /如果内存使用率高于给定值,则强制垃圾回收。 该值可以指定为字节数(可选单位为KB、MB、GB或TB),也可以指定为物理内存的百分比(带%)。 有关更多详细信息,请参阅[内存管理和垃圾回收](/manual/memory-management#man-memory-management)。 | | --编译={yes*\|no\|all\|min} /启用或禁用JIT编译器,或请求穷举或最小编译|| --输出-o<名称> |生成目标文件(包括系统图像数据)|/ --输出-ji<名称> /生成系统映像数据文件(。吉)|| --条带-元数据 |从系统映像中删除文档字符串和源位置信息|/ --条带-ir |删除已编译函数的IR(中间表示)|/ --输出-unopt-bc<名称> /生成未优化的LLVM位码(。bc)|| --输出-bc<名称> /生成LLVM bitcode(。bc)|| --输出-asm<名称> /生成程序集文件(.s)|| --输出-增量={yes\|no*} |生成增量输出文件(而不是完整的)|/ --跟踪-编译={stderr\|name} /打印在执行过程中编译的方法的预编译语句,或保存到stderr或路径。 如果不支持颜色,重新编译的方法将以黄色打印或带有尾随注释|| --跟踪-编译-定时 /如果 --跟踪-编译 已启用显示每个编译需要多长时间在ms|| --跟踪-调度={stderr\|name} /打印在执行期间调度的方法的预编译语句或保存到stderr或路径。 | | --图像-codegen |在成像模式下强制生成代码|/ --permalloc-pkgimg={yes\|no*} |将包映像的数据部分复制到内存中|/ --修剪={no*\|safe\|unsafe\|unsafe-warn} /构建一个sysimage,只包含通过调用标记的方法可证明可访问的代码 入口点. 三个非默认选项在处理动态呼叫站点的方式上有所不同。 在安全模式下,此类站点会导致编译时错误。 在不安全模式下,允许这样的站点,但生成的二进制文件可能缺少所需的代码,并可能引发运行时错误。 使用unsafe-warn,此类站点将在编译时触发警告,并可能在运行时出错。 |
具有表单的选项 --选项={...} 可以指定为 --选项=值 或作为 --期权价值. 例如, 朱莉娅—班纳=不 相当于 茱莉亚—班纳不. 这对于采用文件名进行输出的选项尤其重要,因为忘记指定参数(比如) --跟踪-编译 将导致后面的选项被解释为文件名,可能无意中复盖它。
请注意,表单的选项 --选项[=。..] 可以*不*指定为 --期权价值,但只作为 --选项=值 (或者干脆 --选项,当没有提供参数时)。
|
兼容性
Julia1.1在Julia1.0中,默认 |