Files
reference/docs/justfile.html
2024-10-14 20:05:37 +00:00

264 lines
39 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>Justfile 备忘清单
&#x26; justfile cheatsheet &#x26; Quick Reference</title>
<meta content="width=device-width, initial-scale=1" name="viewport">
<meta description="just 为您提供一种保存和运行项目特有命令的便捷方式
入门,为开发人员分享快速参考备忘单。">
<meta keywords="justfile,reference,Quick,Reference,cheatsheet,cheat,sheet">
<meta name="author" content="jaywcjlove">
<meta name="license" content="MIT">
<meta name="funding" content="https://jaywcjlove.github.io/#/sponsor">
<meta rel="apple-touch-icon" href="../icons/touch-icon-iphone.png">
<meta rel="apple-touch-icon" sizes="152x152" href="../icons/touch-icon-ipad.png">
<meta rel="apple-touch-icon" sizes="180x180" href="../icons/touch-icon-iphone-retina.png">
<meta rel="apple-touch-icon" sizes="167x167" href="../icons/touch-icon-ipad-retina.png">
<link rel="icon" href="../icons/favicon.svg" type="image/svg+xml">
<link href="../style/style.css" rel="stylesheet">
<link href="../style/katex.css" rel="stylesheet">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="javascript:void(0);" class="searchbtn" id="searchbtn"><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><span>搜索</span><span>⌘K</span></a><a href="https://github.com/jaywcjlove/reference/blob/main/docs/justfile.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script src="../js/dark.js?v=1.8.0"></script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap h1body-exist max-container"><header class="wrap-header h1wrap"><h1 id="justfile-备忘清单"><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="currentColor" height="1em" width="1em">
<path d="M107.946667 838.4l57.173333 23.893333v-385.28l-103.68 250.026667c-17.493333 43.52 3.413333 93.44 46.506667 111.36z m832-157.866667L728.32 169.813333a85.888 85.888 0 0 0-77.226667-52.48c-11.093333 0-22.613333 1.706667-33.706666 6.4L302.933333 253.866667a85.290667 85.290667 0 0 0-46.08 110.933333l211.626667 510.72a85.248 85.248 0 0 0 110.933333 46.08l314.026667-130.133333a85.077333 85.077333 0 0 0 46.506667-110.933334zM336.213333 373.333333c-23.466667 0-42.666667-19.2-42.666666-42.666666s19.2-42.666667 42.666666-42.666667 42.666667 19.2 42.666667 42.666667-19.2 42.666667-42.666667 42.666666z m-85.333333 469.333334c0 46.933333 38.4 85.333333 85.333333 85.333333h61.866667l-147.2-355.84v270.506667z"></path>
</svg><a aria-hidden="true" tabindex="-1" href="#justfile-备忘清单"><span class="icon icon-link"></span></a>Justfile 备忘清单</h1><div class="wrap-body">
<p><a href="https://github.com/casey/just/network/dependents"><img src="https://badgen.net/github/dependents-repo/casey/just" alt="Repo Dependents"></a>
<a href="https://github.com/casey/just"><img src="https://badgen.net/badge/icon/Github?icon=github&#x26;label" alt="Github repo"></a></p>
<p><a href="https://github.com/casey/just"><code>just</code></a> 为您提供一种保存和运行项目特有命令的便捷方式</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#简单的-justfile">简单的 justfile</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#带参数的配方">带参数的配方</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#变量和子变量">变量和子变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#默认配置">默认配置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#命令的环境变量">命令的环境变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#backtick-从评估中捕获输出">backtick-从评估中捕获输出</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#别名">别名</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#带有命令-env-变量配置">带有命令 env 变量配置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#设置">设置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#配置依赖性-之前之后和周围">配置依赖性-之前、之后和周围</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#just-函数">Just 函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串-用双引号转义">字符串-用双引号转义</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#命令注释quietsuppress-invert">命令注释quiet(@)、suppre­ss(-)、invert(!)</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#条件表达式ifloop-和-while">条件表达式if、loop 和 while</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#just-命令行">Just 命令行</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#其他语言的配置">其他语言的配置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#私人配置---名称以开头-_">私人配置 - 名称以开头 _</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#注意">注意</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#作为-shell-别名的配置">作为 shell 别名的配置</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#ide-集成">IDE 集成</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="简单的-justfile"><a aria-hidden="true" tabindex="-1" href="#简单的-justfile"><span class="icon icon-link"></span></a>简单的 justfile</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token shebang important">#!/usr/bin/env just --justfile</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># hello 是配方(recipe)的名字</span>
</span><span class="code-line">hello:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Hello World!"</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="带参数的配方"><a aria-hidden="true" tabindex="-1" href="#带参数的配方"><span class="icon icon-link"></span></a>带参数的配方</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">filter PATTERN:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token punctuation">{</span><span class="token punctuation">{</span>PATTERN<span class="token punctuation">}</span><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 带有默认值的 param</span>
</span><span class="code-line">email <span class="token assign-left variable">address</span><span class="token operator">=</span><span class="token string">'master@example.com'</span><span class="token builtin class-name">:</span>
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token punctuation">{</span><span class="token punctuation">{</span>address<span class="token punctuation">}</span><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 带表达式的参数</span>
</span><span class="code-line"><span class="token builtin class-name">test</span> <span class="token assign-left variable">triple</span><span class="token operator">=</span><span class="token punctuation">(</span>arch<span class="token punctuation">(</span><span class="token punctuation">)</span> + <span class="token string">"-unknown-unknown"</span><span class="token punctuation">)</span>:
</span><span class="code-line"> ./test <span class="token punctuation">{</span><span class="token punctuation">{</span>triple<span class="token punctuation">}</span><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 变量参数:“+”接受一个或多个值</span>
</span><span class="code-line">backup +FILES:
</span><span class="code-line"> <span class="token function">scp</span> <span class="token punctuation">{</span><span class="token punctuation">{</span>FILES<span class="token punctuation">}</span><span class="token punctuation">}</span> me@example.com
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 带*的可变参数:零个或多个值</span>
</span><span class="code-line">commit MESSAGE *FLAGS:
</span><span class="code-line"> <span class="token function">git</span> commit <span class="token punctuation">{</span><span class="token punctuation">{</span>FLAGS<span class="token punctuation">}</span><span class="token punctuation">}</span> <span class="token parameter variable">-m</span> <span class="token string">"{{MESSAGE}}"</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="变量和子变量"><a aria-hidden="true" tabindex="-1" href="#变量和子变量"><span class="icon icon-link"></span></a>变量和子变量</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">version :<span class="token operator">=</span> <span class="token string">"0.2.7"</span>
</span><span class="code-line">tardir :<span class="token operator">=</span> <span class="token string">"awesomesauce-"</span> + version
</span><span class="code-line">tarball :<span class="token operator">=</span> tardir + <span class="token string">".tar.gz"</span>
</span><span class="code-line">
</span><span class="code-line">test:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token punctuation">{</span><span class="token punctuation">{</span>version<span class="token punctuation">}</span><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 仅从命令行设置/覆盖变量</span>
</span><span class="code-line">$ just <span class="token parameter variable">--set</span> version <span class="token number">1.1</span>.0
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="默认配置"><a aria-hidden="true" tabindex="-1" href="#默认配置"><span class="icon icon-link"></span></a>默认配置</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">default: lint build <span class="token builtin class-name">test</span>
</span><span class="code-line"><span class="token comment"># 显示帮助信息的默认配方</span>
</span><span class="code-line">default:
</span><span class="code-line"> @just <span class="token parameter variable">--list</span>
</span><span class="code-line"><span class="token comment"># 如果没有默认配方,则默认第一个配方</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="命令的环境变量"><a aria-hidden="true" tabindex="-1" href="#命令的环境变量"><span class="icon icon-link"></span></a>命令的环境变量</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token builtin class-name">export</span> RUST_BACKTRACE :<span class="token operator">=</span> <span class="token string">"1"</span>
</span><span class="code-line">
</span><span class="code-line">test:
</span><span class="code-line"> <span class="token comment"># 如果堆栈崩溃,将打印堆栈跟踪</span>
</span><span class="code-line"> <span class="token function">cargo</span> <span class="token builtin class-name">test</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="backtick-从评估中捕获输出"><a aria-hidden="true" tabindex="-1" href="#backtick-从评估中捕获输出"><span class="icon icon-link"></span></a>backtick-从评估中捕获输出</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">JAVA_HOME :<span class="token operator">=</span> <span class="token variable"><span class="token variable">`</span>jbang jdk home <span class="token number">11</span><span class="token variable">`</span></span>
</span><span class="code-line"><span class="token comment"># Backtick 代码块</span>
</span><span class="code-line">stuff :<span class="token operator">=</span> <span class="token punctuation">\</span>``<span class="token variable"><span class="token variable">`</span>
</span></span><span class="code-line"><span class="token variable"> <span class="token assign-left variable">foo</span><span class="token operator">=</span><span class="token string">"hello"</span>
</span></span><span class="code-line"><span class="token variable"> <span class="token builtin class-name">echo</span> $foo <span class="token string">"world"</span>
</span></span><span class="code-line"><span class="token variable"><span class="token punctuation">\</span><span class="token variable">`</span></span>`<span class="token variable"><span class="token variable">`</span>
</span></span><span class="code-line"><span class="token variable">
</span></span><span class="code-line"><span class="token variable"><span class="token keyword">done</span> <span class="token assign-left variable">BRANCH</span><span class="token operator">=</span><span class="token variable">`</span></span><span class="token function">git</span> rev-parse --abbrev-ref HEAD<span class="token variable"><span class="token variable">`</span><span class="token builtin class-name">:</span>
</span></span><span class="code-line"><span class="token variable"> <span class="token function">git</span> checkout master
</span></span><span class="code-line"><span class="token variable">
</span></span><span class="code-line"><span class="token variable">sloc:
</span></span><span class="code-line"><span class="token variable"> @echo "<span class="token variable">`</span></span><span class="token function">wc</span> <span class="token parameter variable">-l</span> *.c` lines of code"
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># Backtick 在任何地方工作:字符串/变量/参数</span>
</span></code></pre>
<p>注意: 上面示例中 <code>\`</code> 没有转义过来</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="别名"><a aria-hidden="true" tabindex="-1" href="#别名"><span class="icon icon-link"></span></a>别名</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token builtin class-name">alias</span> t :<span class="token operator">=</span> <span class="token builtin class-name">test</span>
</span><span class="code-line"><span class="token builtin class-name">alias</span> c :<span class="token operator">=</span> check
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="带有命令-env-变量配置"><a aria-hidden="true" tabindex="-1" href="#带有命令-env-变量配置"><span class="icon icon-link"></span></a>带有命令 env 变量配置</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># recipe 参数作为$符号的Env变量</span>
</span><span class="code-line">hello <span class="token variable">$name</span><span class="token builtin class-name">:</span>
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token variable">$name</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="设置"><a aria-hidden="true" tabindex="-1" href="#设置"><span class="icon icon-link"></span></a>设置</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token builtin class-name">set</span> shell :<span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">"zsh"</span>, <span class="token string">"-cu"</span><span class="token punctuation">]</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token builtin class-name">set</span> dotenv-load :<span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line">serv:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">"<span class="token variable">$DATABASE_ADDRESS</span> from .env"</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token builtin class-name">set</span> positional-arguments :<span class="token operator">=</span> <span class="token boolean">true</span>
</span><span class="code-line">foo:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token variable">$0</span>
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token variable">$1</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="配置依赖性-之前之后和周围"><a aria-hidden="true" tabindex="-1" href="#配置依赖性-之前之后和周围"><span class="icon icon-link"></span></a>配置依赖性-之前、之后和周围</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># 执行序列A-> B-> C-> D</span>
</span><span class="code-line">b: a <span class="token operator">&#x26;&#x26;</span> c d
</span><span class="code-line"><span class="token comment"># 执行配方(recipe)“A”</span>
</span><span class="code-line">b:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">'B start!'</span>
</span><span class="code-line"> just a
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">'B end!'</span>
</span><span class="code-line"><span class="token comment"># 通过表达式依赖参数</span>
</span><span class="code-line">default: <span class="token punctuation">(</span>build <span class="token string">"main"</span><span class="token punctuation">)</span>
</span><span class="code-line">
</span><span class="code-line">build target:
</span><span class="code-line"> @echo <span class="token string">'Building {{target}}...'</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="just-函数"><a aria-hidden="true" tabindex="-1" href="#just-函数"><span class="icon icon-link"></span></a>Just 函数</h3><div class="wrap-body">
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line">hello name:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token punctuation">{</span><span class="token punctuation">{</span>os<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token punctuation">{</span><span class="token punctuation">{</span>uppercase<span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 函数类别</span>
</span><span class="code-line">* 系统信息
</span><span class="code-line">* 系统信息
</span><span class="code-line">* Justfile 和 Justfile目录
</span><span class="code-line">* 字符串操纵
</span><span class="code-line">* 路径操纵
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># String contact: (key + ":" + value)</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串-用双引号转义"><a aria-hidden="true" tabindex="-1" href="#字符串-用双引号转义"><span class="icon icon-link"></span></a>字符串-用双引号转义</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">tring-with-tab :<span class="token operator">=</span> <span class="token string">"<span class="token entity" title="\t">\t</span>"</span>
</span><span class="code-line">string-with-newline :<span class="token operator">=</span> <span class="token string">"<span class="token entity" title="\n">\n</span>"</span>
</span><span class="code-line">escapes :<span class="token operator">=</span> <span class="token string">'\t\n\r\"\\'</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 该字符串将评估为`foo\nbar\n`</span>
</span><span class="code-line">x :<span class="token operator">=</span> <span class="token string">''</span>'
</span><span class="code-line"> foo
</span><span class="code-line"> bar
</span><span class="code-line"><span class="token string">''</span>'
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="命令注释quietsuppress-invert"><a aria-hidden="true" tabindex="-1" href="#命令注释quietsuppress-invert"><span class="icon icon-link"></span></a>命令注释quiet(@)、suppre­ss(-)、invert(!)</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">hello:
</span><span class="code-line"> @ <span class="token builtin class-name">echo</span> <span class="token string">"command will not be echoed"</span>
</span><span class="code-line"> - <span class="token builtin class-name">echo</span> <span class="token string">"ignore none-zero exit status and continue"</span>
</span><span class="code-line">
</span><span class="code-line">@hello2:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">"command will not be echoed"</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 反转命令退出状态!- shell 功能</span>
</span><span class="code-line">hello3:
</span><span class="code-line"> <span class="token comment"># 如果命令成功退出状态为0请仅退出</span>
</span><span class="code-line"> <span class="token operator">!</span> <span class="token function">git</span> branch <span class="token operator">|</span> <span class="token function">grep</span> <span class="token string">'* master'</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="条件表达式ifloop-和-while"><a aria-hidden="true" tabindex="-1" href="#条件表达式ifloop-和-while"><span class="icon icon-link"></span></a>条件表达式if、loop 和 while</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line"><span class="token comment"># 正则表达匹配</span>
</span><span class="code-line">fo :<span class="token operator">=</span> <span class="token keyword">if</span> <span class="token string">"hi"</span> <span class="token operator">=~</span> <span class="token string">'h.+'</span> <span class="token punctuation">{</span> <span class="token string">"match"</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token string">"mismatch"</span> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line">test:
</span><span class="code-line"> <span class="token keyword">if</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token keyword">then</span> <span class="token builtin class-name">echo</span> <span class="token string">'True!'</span><span class="token punctuation">;</span> <span class="token keyword">fi</span>
</span><span class="code-line"> <span class="token keyword">for</span> <span class="token for-or-select variable">file</span> <span class="token keyword">in</span> <span class="token variable"><span class="token variable">`</span><span class="token function">ls</span> <span class="token builtin class-name">.</span><span class="token variable">`</span></span><span class="token punctuation">;</span> <span class="token keyword">do</span> <span class="token builtin class-name">echo</span> <span class="token variable">$file</span><span class="token punctuation">;</span> <span class="token keyword">done</span>
</span><span class="code-line"> <span class="token keyword">while</span> <span class="token variable"><span class="token variable">`</span>server-is-dead<span class="token variable">`</span></span><span class="token punctuation">;</span> <span class="token keyword">do</span> <span class="token function">ping</span> <span class="token parameter variable">-c</span> <span class="token number">1</span> server<span class="token punctuation">;</span> <span class="token keyword">done</span>
</span><span class="code-line">
</span><span class="code-line">foo bar:
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token punctuation">{</span><span class="token punctuation">{</span> <span class="token keyword">if</span> bar <span class="token operator">==</span> <span class="token string">"bar"</span> <span class="token punctuation">{</span> <span class="token string">"hello"</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token string">"bye"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="just-命令行"><a aria-hidden="true" tabindex="-1" href="#just-命令行"><span class="icon icon-link"></span></a>Just 命令行</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># 运行配方(recipe)</span>
</span><span class="code-line">$ just hello param1
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 按字母顺序列出配方(recipe)</span>
</span><span class="code-line">$ just <span class="token parameter variable">--list</span>
</span><span class="code-line">$ just <span class="token parameter variable">--summary</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 显示有关配方(recipe)的完整信息</span>
</span><span class="code-line">just <span class="token parameter variable">--show</span> <span class="token builtin class-name">test</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># 选择以交互方式运行的配方(recipe)</span>
</span><span class="code-line">$ just <span class="token parameter variable">--choose</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># shell 完成</span>
</span><span class="code-line">just --comp­letions <span class="token function">zsh</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="其他语言的配置"><a aria-hidden="true" tabindex="-1" href="#其他语言的配置"><span class="icon icon-link"></span></a>其他语言的配置</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">bash-test:
</span><span class="code-line"> <span class="token comment">#!/usr/bin/env bash</span>
</span><span class="code-line"> <span class="token builtin class-name">set</span> <span class="token parameter variable">-euxo</span> pipefail
</span><span class="code-line"> <span class="token assign-left variable">hello</span><span class="token operator">=</span><span class="token string">'Yo'</span>
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">"<span class="token variable">$hello</span> from bash!"</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="私人配置---名称以开头-_"><a aria-hidden="true" tabindex="-1" href="#私人配置---名称以开头-_"><span class="icon icon-link"></span></a>私人配置 - 名称以开头 _</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">test: _test-helper
</span><span class="code-line"> ./bin/test
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># ommited from 'just --list'</span>
</span><span class="code-line">_test-helper:
</span><span class="code-line"> ./bin/super-secret-test-helper-stuff
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="注意"><a aria-hidden="true" tabindex="-1" href="#注意"><span class="icon icon-link"></span></a>注意</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># 每个命令行都由一个新的 shell 执行</span>
</span><span class="code-line"><span class="token comment"># 如果一个命令行执行失败just会退出</span>
</span><span class="code-line"><span class="token comment"># 后面的命令行不会执行</span>
</span><span class="code-line">change-working-dir:
</span><span class="code-line"> <span class="token builtin class-name">cd</span> bar <span class="token operator">&#x26;&#x26;</span> <span class="token builtin class-name">pwd</span>
</span><span class="code-line"> <span class="token comment"># 多行构造 - 用斜线转义换行符</span>
</span><span class="code-line"> <span class="token keyword">if</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token keyword">then</span> <span class="token punctuation">\</span>
</span><span class="code-line"> <span class="token builtin class-name">echo</span> <span class="token string">'True!'</span><span class="token punctuation">;</span> <span class="token punctuation">\</span>
</span><span class="code-line"> <span class="token keyword">fi</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment"># justfile 不区分大小写Justfile、JUSTFILE 等</span>
</span><span class="code-line"><span class="token comment"># justfile 可以被隐藏:'.justfile'</span>
</span><span class="code-line"><span class="token comment"># 从子目录调用配方:`~/app1/target>$ just build`</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="作为-shell-别名的配置"><a aria-hidden="true" tabindex="-1" href="#作为-shell-别名的配置"><span class="icon icon-link"></span></a>作为 shell 别名的配置</h3><div class="wrap-body">
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token keyword">for</span> <span class="token for-or-select variable">recipe</span> <span class="token keyword">in</span> <span class="token variable"><span class="token variable">`</span>just <span class="token parameter variable">-f</span> ~/.justfile <span class="token parameter variable">--summary</span><span class="token variable">`</span></span><span class="token punctuation">;</span> <span class="token keyword">do</span>
</span><span class="code-line"> <span class="token builtin class-name">alias</span> <span class="token variable">$recipe</span><span class="token operator">=</span><span class="token string">"just -f ~/.justfile -d. <span class="token variable">$recipe</span>"</span>
</span><span class="code-line"><span class="token keyword">done</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="ide-集成"><a aria-hidden="true" tabindex="-1" href="#ide-集成"><span class="icon icon-link"></span></a>IDE 集成</h3><div class="wrap-body">
<ul>
<li>VS Code: <a href="https:%C2%AD//m%C2%ADark%C2%ADetp%C2%ADlac%C2%ADe.v%C2%ADisu%C2%ADals%C2%ADtud%C2%ADio.c%C2%ADom%C2%AD/it%C2%ADems%C2%AD?it%C2%ADemN%C2%ADame%C2%AD=sk%C2%ADell%C2%ADock.just">https:­//m­ark­etp­lac­e.v­isu­als­tud­io.c­om­/it­ems­?it­emN­ame­=sk­ell­ock.just</a></li>
<li>JetBrains: <a href="https:%C2%AD//p%C2%ADlug%C2%ADins.je%C2%ADtbr%C2%ADain%C2%ADs.c%C2%ADom/%C2%ADplu%C2%ADgin%C2%AD/18%C2%AD658%C2%AD-just">https:­//p­lug­ins.je­tbr­ain­s.c­om/­plu­gin­/18­658­-just</a></li>
</ul>
</div></div></div></div></div></div><script src="https://giscus.app/client.js" data-repo="jaywcjlove/reference" data-repo-id="R_kgDOID2-Mw" data-category="Q&#x26;A" data-category-id="DIC_kwDOID2-M84CS5wo" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="dark" data-lang="zh-CN" crossorigin="anonymous" async></script><div class="giscus"></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 <a href="https://wangchujiang.com/#/app" target="_blank">Kenny Wang</a>.</footer></footer><script src="../data.js?v=1.8.0" defer></script><script src="../js/fuse.min.js?v=1.8.0" defer></script><script src="../js/main.js?v=1.8.0" defer></script><div id="mysearch"><div class="mysearch-box"><div class="mysearch-input"><div><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><input id="mysearch-input" type="search" placeholder="搜索" autocomplete="off"><div class="mysearch-clear"></div></div><button id="mysearch-close" type="button">搜索</button></div><div class="mysearch-result"><div id="mysearch-menu"></div><div id="mysearch-content"></div></div></div></div></body>
</html>