命令列介面
在腳本內使用引數
使用 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 程式碼並提供選項,類似於 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 會根據作業系統特定的關聯性指派介面(如果支援,例如 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.0 中,預設的 --project=@.
選項不會從 Git 儲存庫的根目錄向上搜尋 Project.toml
檔案。從 Julia 1.1 開始,它會執行此操作。