命令列介面

在腳本內使用引數

使用 julia 執行腳本時,您可以傳遞額外的引數給您的腳本

$ julia script.jl arg1 arg2...

這些額外的命令列引數會傳遞到全域常數 ARGS 中。腳本本身的名稱會傳遞到全域 PROGRAM_FILE 中。請注意,當使用命令列上的 -e 選項提供 Julia 表達式時,也會設定 ARGS(請參閱下方的 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 檔案,你可能需要建立它們。

若要讓啟動程式碼只在 Julia REPL 中執行(而不是在 julia 例如 執行在指令碼上時),請在 startup.jl 中使用 atreplinit

atreplinit() do repl
    # ...
end

Julia 的命令列開關

有各種方法可以執行 Julia 程式碼並提供選項,類似於 perlruby 程式可用的選項

julia [switches] -- [programfile] [args...]

以下是啟動 julia 時可用的命令列開關完整清單('*' 標示預設值,若適用;標示為 '($)' 的設定可能會觸發套件預編譯)

開關說明
-v, --version顯示版本資訊
-h, --help列印命令列選項(此訊息)。
--help-hidden-h 未顯示的不常見選項
--project[={<dir>|@.}]設定 <dir> 為首頁專案/環境。預設 @. 選項將搜尋父目錄,直到找到 Project.tomlJuliaProject.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 會根據作業系統特定的關聯性指派介面(如果支援,例如 Linux 和 Windows)使用指派給此 julia 程序的 CPU 數量。如果不支援(macOS)或未設定程序關聯性,它會使用 CPU 執行緒數量。
--gcthreads=N[,M]使用 N 個執行緒進行 GC 的標記階段,以及 M 個執行緒 (0 或 1) 進行 GC 的並發掃描階段。N 設定為運算執行緒數的一半,而 M 如果未指定則設定為 0。
-p, --procs {N|auto}整數值 N 會啟動 N 個額外的本機工作程序;auto 會啟動與本機 CPU 執行緒 (邏輯核心) 數量一樣多的工作程序
--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>限制 CPU 功能的使用,最高為 <target>;設定為 help 以查看可用的選項
-O, --optimize={0,1,2*,3}設定最佳化層級 (如果在沒有層級的情況下使用 -O,則層級為 3) ($)
--min-optlevel={0*,1,2,3}設定每個模組最佳化的下限
-g, --debug-info={0,1*,2}設定偵錯資訊產生的層級 (如果在沒有層級的情況下使用 -g,則層級為 2) ($)
--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}]計算每個原始碼行配置的位元組(省略設定等同於「user」)
--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 位元碼(.bc)
--output-bc <name>產生 LLVM 位元碼(.bc)
--output-asm <name>產生組譯檔(.s)
--output-incremental={yes|no*}產生增量輸出檔(而非完整檔)
--trace-compile={stderr,name}列印執行期間編譯方法的預編譯陳述式或儲存至路徑
--image-codegen強制在影像模式中產生程式碼
--heap-size-hint=<size>如果記憶體使用量高於該值,則強制進行垃圾回收。記憶體提示可以以 MB (例如,500M) 或 GB (例如,1G) 指定
Julia 1.1

在 Julia 1.0 中,預設的 --project=@. 選項不會從 Git 儲存庫的根目錄向上搜尋 Project.toml 檔案。從 Julia 1.1 開始,它會執行此操作。