diff --git a/blog/2021-06-22-nushell_0_33.md b/blog/2021-06-22-nushell_0_33.md index 6981dc0b83f..bfc20324305 100644 --- a/blog/2021-06-22-nushell_0_33.md +++ b/blog/2021-06-22-nushell_0_33.md @@ -38,7 +38,7 @@ Behind the scenes, we've also refactored completions into their own crate, so th Sometimes, when you're working on a pipeline, you want to refer to values coming in using an xargs style. With 0.33, we've introduced a new built-in variable called `$in`. The `$in` variable will collect the pipeline into a value for you, allowing you to access the whole stream as a parameter. -```shell +```nu > echo 1 2 3 | $in.1 * $in.2 6 ``` diff --git a/blog/2022-09-06-nushell-0_68.md b/blog/2022-09-06-nushell-0_68.md index 41f29b52b53..9c8d9d27b92 100644 --- a/blog/2022-09-06-nushell-0_68.md +++ b/blog/2022-09-06-nushell-0_68.md @@ -174,7 +174,7 @@ This change is intended to test it with a larger audience to decide which one we This example shows that the `edit distance` is one edit step difference using the Levenshtein algorithm. -```sh +```nu > 'nushell' | str distance 'nutshell' ╭──────────┬───╮ │ distance │ 1 │ @@ -187,7 +187,7 @@ We'd eventually like to add more similarity comparison functionality to nushell. The new parameter on `into duration` `--convert` allows you to convert from string durations into named durations. -```sh +```nu > '7min' | into duration --convert sec 420 sec ``` diff --git a/blog/2023-02-21-nushell_0_76.md b/blog/2023-02-21-nushell_0_76.md index 3ce2a2382b2..e48cb01be1b 100644 --- a/blog/2023-02-21-nushell_0_76.md +++ b/blog/2023-02-21-nushell_0_76.md @@ -56,7 +56,7 @@ _Note: There are known limitations that the profiler can't run. For example, it - [`timeit`](https://github.com/nushell/nushell/pull/8018) (formerly known as benchmark, same functionality) -```bash +```nu 〉timeit { ls | sort-by name type -i | get name } 2ms 509µs 900ns ``` @@ -69,7 +69,7 @@ _Note: There are known limitations that the profiler can't run. For example, it - [`view source`](https://github.com/nushell/nushell/pull/7989) (formerly known as `view-source`, same functionality) -```bash +```nu 〉def my-cmd [arg] { echo $arg } 〉my-cmd hi hi diff --git a/blog/2023-03-14-nushell_0_77.md b/blog/2023-03-14-nushell_0_77.md index 79470b0b2e5..4becc4fdaab 100644 --- a/blog/2023-03-14-nushell_0_77.md +++ b/blog/2023-03-14-nushell_0_77.md @@ -200,7 +200,7 @@ Let's take the `merge` command as an example! Before the change, the output of `help merge` would give -```bash +```nu Examples: Add an 'index' column to the input table > [a b c] | wrap name | merge ( [1 2 3] | wrap index ) diff --git a/blog/2023-09-19-nushell_0_85_0.md b/blog/2023-09-19-nushell_0_85_0.md index 052b3ffe44e..20c373cd938 100644 --- a/blog/2023-09-19-nushell_0_85_0.md +++ b/blog/2023-09-19-nushell_0_85_0.md @@ -67,7 +67,7 @@ Please use `into float` instead of `into decimal` and `random float` instead of After the type returned by `describe` has been `float` for a while, we now also change which type name is allowed when specifying command argument or input/output types. -```sh +```nu # Argument with a specfic type def foo [bar: float] {} # Command taking only floating point input from the pipeline and returning the same type. diff --git a/book/custom_commands.md b/book/custom_commands.md index d1af49b8dce..2fd44c9935e 100644 --- a/book/custom_commands.md +++ b/book/custom_commands.md @@ -423,7 +423,7 @@ def my-ls [] { ls } We can use the output from this command just as we would [`ls`](/commands/docs/ls.md). -``` +```nu > my-ls | get name ───┬─────────────────────── 0 │ myscript.nu diff --git a/book/working_with_tables.md b/book/working_with_tables.md index 5596c0966d9..39c511c4855 100644 --- a/book/working_with_tables.md +++ b/book/working_with_tables.md @@ -232,7 +232,7 @@ Let's add a third table: We could join all three tables together like this: -``` +```nu > $first | merge $second | merge $third ───┬───┬───┬───┬───┬───┬─── # │ a │ b │ c │ d │ e │ f diff --git a/de/book/custom_commands.md b/de/book/custom_commands.md index 5316b2e2586..61e8da6258b 100644 --- a/de/book/custom_commands.md +++ b/de/book/custom_commands.md @@ -243,7 +243,7 @@ def my-ls [] { ls } Die Ausgabe dieses Befehls, kann identisch zur Ausgabe von `ls` verwendet werden. -``` +```nu > my-ls | get name ───┬─────────────────────── 0 │ myscript.nu diff --git a/de/book/operators.md b/de/book/operators.md index 9800fcff9c6..b66218db677 100644 --- a/de/book/operators.md +++ b/de/book/operators.md @@ -43,7 +43,7 @@ Mathematische Operationen werden in der folgenden Reihenfolge ausgewertet (von d - Klammern (`()`) - Potenzieren (`**`) -- Multiplizieren (`*`), Dividieren (`/`), Abrundungs Division (`//`), und Modulo (`mod`) +- Multiplizieren (`*`), Dividieren (`/`), Abrundungs Division (`//`), und Modulo (`mod`) - Addieren (`+`) and Subtrahieren (`-`) - Bit Shiften (`bit-shl`, `bit-shr`) - Vergleich Operations (`==`, `!=`, `<`, `>`, `<=`, `>=`), Mitglieds Tests (`in`, `not-in`, `starts-with`, `ends-with`), regex Übereinstimmungen (`=~`, `!~`), und Listen anfügen (`++`) @@ -91,7 +91,7 @@ Fundierte Kenntnisse in Regluären Ausdrücke werdne dafür nicht benötigt - es Zum Beispiel: -```bash +```nu foobarbaz =~ bar # gibt true zurück foobarbaz !~ bar # gibt false zurück ls | where name =~ ^nu # Gibt alle Dateien zurück, deren Namen mit "nu" beginnen. @@ -105,19 +105,19 @@ Operatoren beachten grundsätzlich die Gross- Kleinschreibung bei Textoperatione 1. Beim regulären Ausdruck Operator, kann die `(?i)` Modifikation angewendet werden: -```bash +```nu "FOO" =~ "foo" # gibt false zurück "FOO" =~ "(?i)foo" # gibt true zurück ``` 2. Verwenden des `--insensitive` Parameters für den [`str contains`](/commands/docs/str_contains.md) Befehl: -```bash +```nu "FOO" | str contains --insensitive "foo" ``` 3. Konvertieren von allen Zeichen in einem Text zu Kleinbuchstaben mittels [`str downcase`](/commands/docs/str_downcase.md) vor einem Vergleich: -```bash +```nu ("FOO" | str downcase) == ("Foo" | str downcase) ``` diff --git a/de/book/scripts.md b/de/book/scripts.md index 2d8c98e8470..b6b4e47720e 100644 --- a/de/book/scripts.md +++ b/de/book/scripts.md @@ -66,7 +66,7 @@ Argumente werden an ein Skript übergeben indem sie nach dem Skriptnamen angefü Zum Beispiel: -```bash +```nu # myscript.nu def main [x: int] { diff --git a/de/book/working_with_lists.md b/de/book/working_with_lists.md index 8038ac35ce1..2ae4f172840 100644 --- a/de/book/working_with_lists.md +++ b/de/book/working_with_lists.md @@ -12,14 +12,14 @@ Zum Beispiel, `[foo bar baz]` oder `[foo, bar, baz]`, Mit den zwei Befehlen `update` und `insert` können Listen in einer Pipeline verändert werden, zum Beispiel fügt folgende Zeile den Wert `10` in der Mitte, also an Stelle 2 ein. -```bash +```nu > [1, 2, 3, 4] | insert 2 10 # [1, 2, 10, 3, 4] ``` Mit dem Befehl `update` ersetzen wir hingegen das 2. Element mit dem Wert `10`. -```bash +```nu > [1, 2, 3, 4] | update 1 10 # [1, 10, 3, 4] ``` @@ -29,7 +29,7 @@ Diese fügen Werte am Anfang einer Liste oder am Ende ein. Zum Beispiel: -```bash +```nu let colors = [yellow green] let colors = ($colors | prepend red) let colors = ($colors | append purple) @@ -43,7 +43,7 @@ mit Nu-Code folgt, der auf jedes Element der Liste angewendet wird. Der Block Pa entspricht normalerweise dem Element der Liste, was jedoch mit dem `--numbered` (`-n`) Flag geändert werden kann in die zwei Parameter `index` und `item`. zum Beispiel: -```bash +```nu let names = [Mark Tami Amanda Jeremy] $names | each { |it| $"Hello, ($it)!" } # Outputs "Hello, Mark!" and three more similar lines. @@ -55,14 +55,14 @@ $names | enumerate | each { |it| $"($it.index + 1) - ($it.item)" } Der [`where`](/commands/docs/where.md) Befehl kann verwendet werden um einen Filter auf eine Liste anzuwenden. Das folgende Beispiel gibt alle Farben zurück, deren Namen auf "e" enden. -```bash +```nu let colors = [red orange yellow green blue purple] echo $colors | where ($it | str ends-with 'e') ``` In diesem Beispiel werden nur Werte behalten, die höher als `7` sind. -```bash +```nu # The block passed to where must evaluate to a boolean. # This outputs the list [orange blue purple]. @@ -77,7 +77,7 @@ wird das `--fold` (`-f`) Flag gesetzt. Um den Iterator `it` zu ändern nach `ind das `--numbered` (`-n`) Flag verwendet. Zum Beispiel: -```bash +```nu let scores = [3 8 4] echo "total =" ($scores | reduce { |it, acc| $acc + $it }) # 15 @@ -93,14 +93,14 @@ echo $scores | reduce -n { |it, acc| $acc.item + $it.index * $it.item } # 3 + 1* Um auf ein Element einer Liste zuzugreifen, wird `$name.index` verwendet, wobei in der `$name` Variablen eine Liste enthalten sein muss. Zum Beispiel kann in folgender Liste das 2. Element mit `$names.1` verwendet werden. -```bash +```nu let names = [Mark Tami Amanda Jeremy] $names.1 # gives Tami ``` Wenn der Index in einer Variablen wie `$index` enthalten ist, kann dieser mit dem `get` Befehl extrahiert werden. -```bash +```nu let names = [Mark Tami Amanda Jeremy] let index = 1 $names | get $index # gives Tami @@ -112,7 +112,7 @@ Zum Beispiel, `[red green blue] | length` ergibt `3`. Der [`is-empty`](/commands/docs/is-empty.md) Befehl ermittelt, ob ein String, eine Liste oder eine Tabelle leer ist. Mit einer Liste wird er so verwendet: -```bash +```nu let colors = [red green blue] $colors | is-empty # false @@ -123,7 +123,7 @@ $colors | is-empty # true Der `in` und `not-in` Operator wird verwendet, um zu testen, ob ein Wert in einer Liste vorhanden ist oder nicht. Zum Beispiel: -```bash +```nu let colors = [red green blue] 'blue' in $colors # true 'yellow' in $colors # false @@ -133,7 +133,7 @@ let colors = [red green blue] Der [`any`](/commands/docs/any.md) Befehl ermittelt, ob irgend ein Element der Liste einer Bedingung entspricht. Zum Beispiel: -```bash +```nu # Do any color names end with "e"? $colors | any {|it| $it | str ends-with "e" } # true @@ -150,7 +150,7 @@ $scores | any {|it| $it mod 2 == 1 } # true Der [`all`](/commands/docs/all.md) Befehl wiederum ermittelt, ob jedes Element der Liste einer Bedingung entspricht. Zum Beispiel: -```bash +```nu # Do all color names end with "e"? $colors | all {|it| $it | str ends-with "e" } # false @@ -171,7 +171,7 @@ indem eine verschachtelte Liste in die Top-Level Liste integriert werden. Dies kann mehrere Male aufgerufen werden, um verschachtelte Listen jeglicher Tiefe zu integrieren. Zum Beispiel: -```bash +```nu echo [1 [2 3] 4 [5 6]] | flatten # [1 2 3 4 5 6] echo [[1 2] [3 [4 5 [6 7 8]]]] | flatten | flatten | flatten # [1 2 3 4 5 6 7 8] @@ -180,7 +180,7 @@ echo [[1 2] [3 [4 5 [6 7 8]]]] | flatten | flatten | flatten # [1 2 3 4 5 6 7 8] Der [`wrap`](/commands/docs/wrap.md) Befehl konvertiert eine Liste in eine Tabelle. Jedes Listen-Element wird in eine eigene Zeile mit einer einzigen Spalte überführt. -```bash +```nu let zones = [UTC CET Europe/Moscow Asia/Yekaterinburg] # Show world clock for selected time zones diff --git a/pt-BR/book/instalacao.md b/pt-BR/book/instalacao.md index 587d3702414..f0ec874053b 100644 --- a/pt-BR/book/instalacao.md +++ b/pt-BR/book/instalacao.md @@ -132,7 +132,7 @@ nushell> cargo build --workspace --features=stable; cargo run --features=stable Você também pode fazer o build e rodar o Nu em modo release: -```bash +```nu nushell> cargo build --release --workspace --features=stable; cargo run --release --features=stable ``` diff --git a/zh-CN/book/3rdpartyprompts.md b/zh-CN/book/3rdpartyprompts.md index 669aadd30e9..fa3cced03b4 100644 --- a/zh-CN/book/3rdpartyprompts.md +++ b/zh-CN/book/3rdpartyprompts.md @@ -53,7 +53,7 @@ $env.PROMPT_INDICATOR = $"(ansi y)$> (ansi reset)" 下面是一个关于 Starship 的配置示例: -```bash +```nu $env.STARSHIP_SHELL = "nu" def create_left_prompt [] { diff --git a/zh-CN/book/aliases.md b/zh-CN/book/aliases.md index edfe5efda8a..ba1833e60e2 100644 --- a/zh-CN/book/aliases.md +++ b/zh-CN/book/aliases.md @@ -4,13 +4,13 @@ Nushell 中的别名提供了一种简单的文本替换方式,这允许你为 例如,让我们创建一个名为 `ll` 的别名,它将展开为 `ls -l`。 -```bash +```nu > alias ll = ls -l ``` 我们可以通过别名来调用它: -```bash +```nu > ll ``` diff --git a/zh-CN/book/coming_from_bash.md b/zh-CN/book/coming_from_bash.md index 8c110137328..98cbca4eab0 100644 --- a/zh-CN/book/coming_from_bash.md +++ b/zh-CN/book/coming_from_bash.md @@ -3,7 +3,7 @@ 如果你是来自 Windows 上的`Git Bash`用户,那么你习惯的外部命令(bash、grep 等)在`nu`中默认是不可用的(除非你在 Windows 路径环境变量中明确包含了它们)。 要使这些命令在`nu`中可用,请在你的`config.nu`中添加以下一行,用`append`或`prepend`。 -```bash +```nu $env.Path = ($env.Path | prepend 'C:\Program Files\Git\usr\bin') ``` diff --git a/zh-CN/book/configuration.md b/zh-CN/book/configuration.md index dc84374bf58..28e1cd419ea 100644 --- a/zh-CN/book/configuration.md +++ b/zh-CN/book/configuration.md @@ -17,7 +17,7 @@ _(你可以把 Nushell 的配置加载顺序想象成在启动时执行两行 [R Nushell 的主要设置是以记录的形式保存在 `config` 环境变量中。这个记录可以用以下方式创建: -```bash +```nu $env.config = { ... } @@ -25,7 +25,7 @@ $env.config = { 你也可以隐藏(shadow)`$env.config`并更新它: -```bash +```nu $env.config = ($env.config | upsert ) ``` @@ -35,7 +35,7 @@ $env.config = ($env.config | upsert ) 你可以在 Nushell 会话期间使用 `$env. = ` 在 `env.nu` 文件中设置环境变量。比如: -```bash +```nu $env.FOO = 'BAR' ``` @@ -72,7 +72,7 @@ Nushell 遵循如下的规则来匹配编辑器: 你可以通过在另一个 Shell(如 Bash)中运行 Nu 来建立完整的环境变量集。一旦你进入 Nu,你可以运行这样的命令: -```bash +```nu $env | reject config | transpose key val | each {|r| echo $"$env.($r.key) = '($r.val)'"} | str join (char nl) ``` @@ -80,7 +80,7 @@ $env | reject config | transpose key val | each {|r| echo $"$env.($r.key) = '($r 接下来,在一些发行版上,你还需要确保 Nu 在`/etc/shells`列表中: -```bash +```nu > cat /etc/shells # /etc/shells: valid login shells /bin/sh @@ -108,7 +108,7 @@ $env | reject config | transpose key val | each {|r| echo $"$env.($r.key) = '($r 由于 Nushell 有自己的[`open`](/commands/docs/open.md)命令,它有不同的语义并隐藏了`/usr/bin/open`,这样某些工具在试图使用它时将出错。 一个解决这个问题的方法是为 Nushell 的`open`定义一个自定义命令,并在你的`config.nu`文件中为系统的`open`创建一个别名,像这样: -```bash +```nu def nuopen [arg, --raw (-r)] { if $raw { open -r $arg } else { open $arg } } alias open = ^open ``` diff --git a/zh-CN/book/creating_errors.md b/zh-CN/book/creating_errors.md index 209965c12fa..75973d99ca7 100644 --- a/zh-CN/book/creating_errors.md +++ b/zh-CN/book/creating_errors.md @@ -9,19 +9,19 @@ 首先,你可以从参数的来源中获取标注范围: -```bash +```nu let span = (metadata $x).span; ``` 接下来你可以通过 `error make` 命令来创建一个错误,该命令需要一个可以描述待创建错误的记录作为输入: -```bash +```nu error make {msg: "this is fishy", label: {text: "fish right here", start: $span.start, end: $span.end } } ``` 与你的自定义命令放在一起后,它可能看起来像这样: -```bash +```nu def my-command [x] { let span = (metadata $x).span; error make { @@ -37,7 +37,7 @@ def my-command [x] { 现在当传入一个值调用时,我们会看到一个错误信息返回: -```bash +```nu > my-command 100 Error: diff --git a/zh-CN/book/custom_commands.md b/zh-CN/book/custom_commands.md index 32331583af7..68a6ebe4cdc 100644 --- a/zh-CN/book/custom_commands.md +++ b/zh-CN/book/custom_commands.md @@ -6,7 +6,7 @@ Nu 具备组合长管道的能力使你对数据和系统有很强的控制力 下面看一个自定义命令的例子: -```bash +```nu def greet [name] { echo "hello" $name } @@ -16,7 +16,7 @@ def greet [name] { 要运行上述命令,我们可以像调用内置命令一样调用它: -```bash +```nu > greet "world" ``` @@ -53,7 +53,7 @@ _注意:在 Nushell 中,通常的做法是用`-`来分隔命令的多个单 你也可以使用空格来定义命令的子命令(Subcommand)。例如,如果我们想给`str`添加一个新的子命令,可以通过命名我们的子命令以 "str" 开头来做到。比如: -```bash +```nu def "str mycommand" [] { echo hello } @@ -61,7 +61,7 @@ def "str mycommand" [] { 现在我们可以像调用`str`的内置子命令一样调用我们的自定义命令: -```bash +```nu > str mycommand ``` @@ -69,7 +69,7 @@ def "str mycommand" [] { 在定义自定义命令时,你可以为每个参数命名并选择性地设置其类型。例如,你可以把上面的内容写成: -```bash +```nu def greet [name: string] { echo "hello " $name | str join } @@ -79,7 +79,7 @@ def greet [name: string] { 例如,假设你需要输入一个`int`类型: -```bash +```nu def greet [name: int] { echo "hello " $name | str join } @@ -169,7 +169,7 @@ def congratulate [age: int = 18] { 我们可以在一个位置参数的名字后面加上一个问号(`?`),将其标记为可选参数。比如: -```bash +```nu def greet [name?: string] { echo "hello" $name | str join } @@ -181,7 +181,7 @@ greet 当一个可选参数没有被传递,它在命令体中的值等于`null`和`$nothing`。我们可以利用这一点来对没有传递参数的情况进行处理: -```bash +```nu def greet [name?: string] { if ($name == null) { echo "hello, I don't know your name!" @@ -203,7 +203,7 @@ greet 比如: -```bash +```nu def greet [ name: string --age: int @@ -216,13 +216,13 @@ def greet [ 你可以用以下方法调用上述内容: -```bash +```nu > greet world --age 10 ``` 或者: -```bash +```nu > greet --age 10 world ``` @@ -236,7 +236,7 @@ def greet [ 让我们扩展前面的例子,为`age`添加一个缩写标志: -```bash +```nu def greet [ name: string --age (-a): int @@ -285,7 +285,7 @@ def greet [ 在某些情况下, 你可能想定义一个需要任意数量的位置参数的命令。我们可以用一个剩余参数(Rest Parameter)来实现这一点,通过下面的`...`语法: -```bash +```nu def greet [...name: string] { print "hello all:" for $n in $name { @@ -300,7 +300,7 @@ greet earth mars jupiter venus 剩余参数可以和位置参数一起使用: -```bash +```nu def greet [vip: string, ...name: string] { print $"hello to our VIP ($vip)" print "and hello to everybody else:" @@ -320,7 +320,7 @@ greet moon earth mars jupiter venus 以我们之前的例子为例: -```bash +```nu def greet [ name: string --age (-a): int @@ -347,7 +347,7 @@ Flags: 为了改进这个帮助,我们可以在定义中加入描述,这些描述将在帮助中显示出来: -```bash +```nu # A greeting command that can greet the caller def greet [ name: string # The name of the person to greet @@ -379,19 +379,19 @@ Flags: 自定义命令会像内置命令一样流式输出。例如,假设我们想重构这个管道: -```bash +```nu > ls | get name ``` 让我们把[`ls`](/commands/docs/ls.md)移到我们编写的命令中: -```bash +```nu def my-ls [] { ls } ``` 我们就可以像使用[`ls`](/commands/docs/ls.md)一样使用这个命令的输出: -``` +```nu > my-ls | get name ───┬─────────────────────── 0 │ myscript.nu @@ -408,7 +408,7 @@ def my-ls [] { ls } 让我们创建一个把所有接收值都加倍的命令: -```bash +```nu def double [] { each { |it| 2 * $it } } diff --git a/zh-CN/book/custom_completions.md b/zh-CN/book/custom_completions.md index d310100e66a..370a2012a10 100644 --- a/zh-CN/book/custom_completions.md +++ b/zh-CN/book/custom_completions.md @@ -8,7 +8,7 @@ 我们来看一个例子: -```bash +```nu > def animals [] { ["cat", "dog", "eel" ] } > def my-command [animal: string@animals] { print $animal } >| my-command @@ -27,7 +27,7 @@ cat dog eel 让我们把上面的例子放在一个模块中: -```bash +```nu module commands { def animals [] { ["cat", "dog", "eel" ] @@ -49,7 +49,7 @@ module commands { 如果你仔细看一下默认配置中的例子,你会看到这个: -```bash +```nu export extern "git push" [ remote?: string@"nu-complete git remotes", # the name of the remote refspec?: string@"nu-complete git branches"# the branch / refspec diff --git a/zh-CN/book/environment.md b/zh-CN/book/environment.md index 738b949b361..ad220c34bb5 100644 --- a/zh-CN/book/environment.md +++ b/zh-CN/book/environment.md @@ -29,13 +29,13 @@ Nushell 中使用的环境变量的实际值在`value`列下。 使用`$env.VAR = "val"`命令是最直接的方法: -```bash +```nu > $env.FOO = 'BAR' ``` 因此,如果你想扩展`PATH`变量,你可以这样做: -```bash +```nu $env.PATH = ($env.PATH | prepend '/path/you/want/to/add') ``` @@ -46,7 +46,7 @@ $env.PATH = ($env.PATH | prepend '/path/you/want/to/add') 如果你有一个以上的环境变量需要设置,你可以使用`load-env`并创建一个键/值对记录(Record),以用于加载多个环境变量: -```bash +```nu > load-env { "BOB": "FOO", "JAY": "BAR" } ``` @@ -78,7 +78,7 @@ BAR 这里有一个小例子来演示环境变量作用域: -```bash +```nu > $env.FOO = "BAR" > do { $env.FOO = "BAZ" @@ -99,14 +99,14 @@ Shell 中常见的任务是用[`cd`](/commands/docs/cd.html)命令来改变目 在 Bash 和其他软件的启发下,有一个常用的简便方法,可以设置一次性环境变量: -```bash +```nu > FOO=BAR echo $env.FOO BAR ``` 你也可以使用[`with-env`](/commands/docs/with-env.html)来更明确地做同样的事情: -```bash +```nu > with-env { FOO: BAR } { echo $env.FOO } BAR ``` @@ -119,7 +119,7 @@ BAR 要做到这一点,请在 [Nu 配置文件](configuration.md) 中设置一个环境变量。 比如: -```bash +```nu # In config.nu $env.FOO = 'BAR' ``` @@ -129,7 +129,7 @@ $env.FOO = 'BAR' 由于作用域规则,在自定义命令中定义的任何环境变量都只存在于该命令的作用域内。 然而,用[`def-env`](/commands/docs/def-env.html)而不是[`def`](/commands/docs/def.html)定义的命令(它也适用于`export def`,见 [模块](modules.md))将在调用者一方保留环境设置: -```bash +```nu > def-env foo [] { $env.FOO = 'BAR' } @@ -151,7 +151,7 @@ BAR 让我们用一个例子来说明转换的情况。 把以下内容放在你的`config.nu`中: -```bash +```nu $env.ENV_CONVERSIONS = { # ... you might have Path and PATH already there, add: FOO : { @@ -163,7 +163,7 @@ $env.ENV_CONVERSIONS = { 现在,在一个 Nushell 实例内执行: -```bash +```nu > with-env { FOO : 'a-b-c' } { nu } # runs Nushell with FOO env. var. set to 'a-b-c' > $env.FOO @@ -175,13 +175,13 @@ $env.ENV_CONVERSIONS = { 你可以看到`$env.FOO`现在是一个新的 Nushell 实例中的列表,配置已经更新。 你也可以通过以下方式手动测试转换: -```bash +```nu > do $env.ENV_CONVERSIONS.FOO.from_string 'a-b-c' ``` 现在,为了测试列表->字符串的转换,运行: -```bash +```nu > nu -c '$env.FOO' a-b-c ``` @@ -200,7 +200,7 @@ _(重要! 环境转换字符串->值发生在 `env.nu` 和 `config.nu` 被运行 只有当一个环境变量被设置在当前作用域中时,你才能通过 [`hide`](/commands/docs/hide.html) 命令“删除”它: -```bash +```nu > $env.FOO = 'BAR' ... > hide FOO @@ -208,7 +208,7 @@ _(重要! 环境转换字符串->值发生在 `env.nu` 和 `config.nu` 被运行 隐藏也是有作用域的,这既允许你暂时删除一个环境变量,又可以防止你从子作用域内修改父环境: -```bash +```nu > $env.FOO = 'BAR' > do { hide FOO diff --git a/zh-CN/book/escaping.md b/zh-CN/book/escaping.md index ae43bb91624..6395343f12e 100644 --- a/zh-CN/book/escaping.md +++ b/zh-CN/book/escaping.md @@ -4,12 +4,12 @@ Nu 提供了一套你可以在不同操作系统中使用的命令(也成为" Nu 的内部命令: -```bash +```nu > ls ``` 转移到外部命令: -```bash +```nu > ^ls ``` diff --git a/zh-CN/book/externs.md b/zh-CN/book/externs.md index d9bc7065088..40d0b2b3674 100644 --- a/zh-CN/book/externs.md +++ b/zh-CN/book/externs.md @@ -4,7 +4,7 @@ 这就是 `extern` 的作用。`extern`关键字允许你为 Nushell 之外的命令写一个完整的签名,这样你就能得到上述所有的好处。如果你看一下默认配置,你会发现其中有一些`extern`调用。下面是其中之一: -```bash +```nu export extern "git push" [ remote?: string@"nu-complete git remotes", # the name of the remote refspec?: string@"nu-complete git branches" # the branch / refspec diff --git a/zh-CN/book/line_editor.md b/zh-CN/book/line_editor.md index dfbcd550519..2b43db2dd75 100644 --- a/zh-CN/book/line_editor.md +++ b/zh-CN/book/line_editor.md @@ -8,7 +8,7 @@ Nushell 的行编辑器 [Reedline](https://github.com/nushell/reedline) 是一 Reedline 允许你使用两种模式来编辑文本:vi 和 emacs。如果没有指定,默认的编辑模式是 emacs 模式。若要自行设置喜欢的模式,你可以修改配置文件为相应模式。比如: -```bash +```nu $env.config = { ... edit_mode: emacs @@ -113,7 +113,7 @@ Vi 正常操作快捷键 如前所述,Reedline 管理并存储所有被编辑并发送给 Nushell 的命令。要配置 Reedline 可以存储的最大记录数,你需要在配置文件中调整这个值: -```bash +```nu $env.config = { ... max_history_size: 1000 @@ -125,7 +125,7 @@ Vi 正常操作快捷键 Reedline 的提示语也是高度可定制的。为了构建你的完美提示符,你可以在配置文件中定义下面的环境变量: -```bash +```nu # Use nushell functions to define your right and left prompt def create_left_prompt [] { let path_segment = ($env.PWD) @@ -151,7 +151,7 @@ $env.PROMPT_COMMAND_RIGHT = { create_right_prompt } 你也可以通过修改以下环境变量来定制行编辑器的提示符: -```bash +```nu $env.PROMPT_INDICATOR = "〉" $env.PROMPT_INDICATOR_VI_INSERT = ": " $env.PROMPT_INDICATOR_VI_NORMAL = "〉" @@ -168,7 +168,7 @@ Reedline 按键绑定是一个强大的结构,它允许你建立一连串的 例如,我们假设你想把补全菜单绑定到 `Ctrl + t` 这组快捷键上(默认是`tab`)。你可以添加下面的条目到你的配置文件: -```bash +```nu $env.config = { ... @@ -215,7 +215,7 @@ Reedline 按键绑定是一个强大的结构,它允许你建立一连串的 键盘绑定条目的事件部分是定义要执行的动作的地方。在这个字段,你可以使用一个记录或一个记录列表。比如这样: -```bash +```nu ... event: { send: Enter } ... @@ -223,7 +223,7 @@ Reedline 按键绑定是一个强大的结构,它允许你建立一连串的 或者 -```bash +```nu ... event: [ { edit: Clear } @@ -236,7 +236,7 @@ Reedline 按键绑定是一个强大的结构,它允许你建立一连串的 后一个按键绑定的例子是向引擎发送一系列的事件。它首先清除提示,插入一个字符串,然后输入该值。 -```bash +```nu $env.config = { ... @@ -262,7 +262,7 @@ Reedline 按键绑定是一个强大的结构,它允许你建立一连串的 上面按键绑定的缺点是,插入的文本将被验证处理并保存在历史记录中,这使得按键绑定的执行速度有点慢,而且会用相同的命令来填充命令历史。出于这个原因,可以采用 `ExecuteHostCommand` 类型的事件。下一个例子以更简单的方式做了与前一个相同的事情,发送了一个单一的事件给引擎: -```bash +```nu $env.config = { ... @@ -289,13 +289,13 @@ Reedline 按键绑定是一个强大的结构,它允许你建立一连串的 要找到 `send` 的所有可用选项,你可以使用: -```bash +```nu keybindings list | where type == events ``` 而 `send` 事件的语法如下: -```bash +```nu ... event: { send: } ... @@ -307,7 +307,7 @@ keybindings list | where type == events 这条规则有两个例外:`Menu`和`ExecuteHostCommand`。这两个事件需要一个额外的字段来完成,`Menu` 需要有一个菜单的名称才能触发(自动补全菜单或历史命令菜单): -```bash +```nu ... event: { send: menu @@ -318,7 +318,7 @@ keybindings list | where type == events 而 `ExecuteHostCommand` 需要一个有效的命令,它将被发送到引擎: -```bash +```nu ... event: { send: ExecuteHostCommand @@ -333,13 +333,13 @@ keybindings list | where type == events `edit`类型是`Edit([])`事件的简化。`event`类型简化了定义复杂编辑事件的按键绑定。要列出可用的选项,你可以使用下面的命令: -```bash +```nu keybindings list | where type == edits ``` 以下是编辑的常用语法: -```bash +```nu ... event: { edit: } ... @@ -347,7 +347,7 @@ keybindings list | where type == edits 列表中带有 `()` 的编辑的语法有一点变化,因为这些编辑需要一个额外的值来进行完全定义。例如,如果我们想在提示符所在的位置插入一个字符串,那么你将不得不使用如下方式: -```bash +```nu ... event: { edit: InsertString @@ -358,7 +358,7 @@ keybindings list | where type == edits 或者说你想向右移动,直到第一个`S`: -```bash +```nu ... event: { edit: MoveRightUntil @@ -379,7 +379,7 @@ keybindings list | where type == edits 下一个键盘绑定就是这种情况: -```bash +```nu $env.config = { ... @@ -408,7 +408,7 @@ keybindings list | where type == edits 例如,下一个按键绑定将总是发送一个`down`,因为该事件总是成功的。 -```bash +```nu $env.config = { ... @@ -438,7 +438,7 @@ keybindings list | where type == edits 例如,在所有的编辑模式下,禁用 `Ctrl + l` 清除屏幕: -```bash +```nu $env.config = { ... @@ -473,7 +473,7 @@ keybindings list | where type == edits 帮助菜单可以通过修改以下参数进行配置: -```bash +```nu $env.config = { ... @@ -508,7 +508,7 @@ keybindings list | where type == edits 默认情况下,补全菜单是通过按`tab`访问的,它可以通过修改配置对象中的这些值来进行配置: -```bash +```nu $env.config = { ... @@ -543,7 +543,7 @@ keybindings list | where type == edits 历史菜单可以通过修改配置对象中的这些值进行配置: -```bash +```nu $env.config = { ... @@ -574,13 +574,13 @@ keybindings list | where type == edits 要在你的命令历史中搜索,你可以开始输入你要找的命令的关键词。一旦菜单被激活,你输入的任何内容都会被历史记录中选定的命令所取代。例如,假设你已经输入了以下内容: -```bash +```nu let a = () ``` 你可以把光标放在 `()` 内并激活菜单,你可以通过输入关键词来过滤历史记录,一旦你选择了一个条目,输入的词就会被替换: -```bash +```nu let a = (ls | where size > 10MiB) ``` @@ -588,7 +588,7 @@ let a = (ls | where size > 10MiB) 菜单的另一个很好的特性是能够快速选择其中的内容。假设你已经激活了你的菜单,它看起来像这样: -```bash +```nu > 0: ls | where size > 10MiB 1: ls | where size > 20MiB @@ -616,7 +616,7 @@ let a = (ls | where size > 10MiB) 满足这些所需的菜单将看起来像这样: -```bash +```nu $env.config = { ... @@ -651,7 +651,7 @@ let a = (ls | where size > 10MiB) 记录所需的结构如下: -```bash +```nu { value: # The value that will be inserted in the buffer description: # Optional. Description that will be display with the selected value @@ -673,7 +673,7 @@ let a = (ls | where size > 10MiB) 如果你想改变两个菜单的默认激活方式,可以通过定义新的按键绑定来实现。例如,接下来的两个按键绑定设置分别将`Ctrl+t`和`Ctrl+y`定义为触发自动补全和历史菜单: -```bash +```nu $env.config = { ... diff --git a/zh-CN/book/loading_data.md b/zh-CN/book/loading_data.md index 3c3e9077283..48ee3b87d7b 100644 --- a/zh-CN/book/loading_data.md +++ b/zh-CN/book/loading_data.md @@ -37,7 +37,7 @@ Nu 目前支持直接从以下格式加载表数据: 但是,当你加载其他的文本文件时会发生什么呢?让我们试一试: -```bash +```nu > open README.md ``` diff --git a/zh-CN/book/metadata.md b/zh-CN/book/metadata.md index 4e95f4193e6..7d5fa4a58d1 100644 --- a/zh-CN/book/metadata.md +++ b/zh-CN/book/metadata.md @@ -28,7 +28,7 @@ error: Expected a string from pipeline 目前,我们只追踪值来自何处的起止范围(span)。让我们进一步仔细看看: -```bash +```nu > metadata (open Cargo.toml) | get span ╭───────┬────────╮ │ start │ 212970 │ diff --git a/zh-CN/book/modules.md b/zh-CN/book/modules.md index c8a10891844..8a49c9fed3e 100644 --- a/zh-CN/book/modules.md +++ b/zh-CN/book/modules.md @@ -9,7 +9,7 @@ _注意! 目前对模块的实现是相当基本的,并将在未来进一步 一个简单的模块可以像这样定义: -```bash +```nu > module greetings { export def hello [name: string] { $"hello ($name)!" @@ -23,7 +23,7 @@ _注意! 目前对模块的实现是相当基本的,并将在未来进一步 或者在一个与你要创建的模块名相同的文件中: -```bash +```nu # greetings.nu export def hello [name: string] { @@ -43,7 +43,7 @@ export def hi [where: string] { 模块本身并不做任何事情,要使用模块导出的定义,我们需要[`use`](/commands/docs/use.md)它: -```bash +```nu > use greetings > greetings hello "world" @@ -81,7 +81,7 @@ hi there! Nushell 让你隐含地把一个源文件当作一个模块。 让我们先把模块定义的主体保存到一个文件中: -```bash +```nu # greetings.nu export def hello [name: string] { @@ -95,7 +95,7 @@ export def hi [where: string] { 现在,你可以直接在文件上调用[`use`](/commands/docs/use.md): -```bash +```nu > use greetings.nu > greetings hello "world" @@ -111,7 +111,7 @@ Nushell 会自动从文件名("greetings",没有".nu"扩展名)推断出 任何在模块中定义的自定义命令,如果没有`export`关键字,将只在该模块的作用域内工作: -```bash +```nu # greetings.nu export def hello [name: string] { @@ -129,7 +129,7 @@ def greetings-helper [greeting: string, subject: string] { 然后,在 Nushell 里我们可以从 "greetings.nu" 中导入所有定义: -```bash +```nu > use greetings.nu * > hello "world" @@ -146,7 +146,7 @@ hi there! 到目前为止,我们只是用模块来导入自定义命令,用同样的方法导出环境变量也是可能的。 其语法与你可能习惯的直接修改 `$env` 或 [`load-env`](/commands/docs/load-env.md)等命令略有不同: -```bash +```nu # greetings.nu export env MYNAME { "Arthur, King of the Britons" } @@ -158,7 +158,7 @@ export def hello [name: string] { `use` 的工作方式与自定义命令相同: -```bash +```nu > use greetings.nu > $env."greetings MYNAME" @@ -170,7 +170,7 @@ hello Arthur, King of the Britons! 你可能注意到我们没有直接给`MYNAME`赋值,相反,我们给了它一个代码块(`{ ...}`),它在我们每次调用[`use`](/commands/docs/use.md)时都会被执行。例如,我们可以用[`random`](/commands/docs/random.md)命令来演示这一点: -```bash +```nu > module roll { export env ROLL { random dice | into string } } > use roll ROLL @@ -210,7 +210,7 @@ hello Arthur, King of the Britons! (注意,现在还不能从模块中导出别名,但它们仍然可以被隐藏。) 我们用[`hide`](/commands/docs/hide.md)命令来实现隐藏: -```bash +```nu > def foo [] { "foo" } > foo @@ -242,7 +242,7 @@ foo 让我们看几个例子。前面已经看到了直接隐藏一个自定义命令的例子,现在让我们试试环境变量: -```bash +```nu > $env.FOO = "FOO" > $env.FOO @@ -255,7 +255,7 @@ FOO 第一种情况也适用于从一个模块导入的命令/环境变量(使用上面定义的 "greetings.nu" 文件): -```bash +```nu > use greetings.nu * > $env.MYNAME @@ -275,7 +275,7 @@ hello world! 最后,当名称为模块名时(假设是之前的`greetings`模块): -```bash +```nu > use greetings.nu > $env."greetings MYNAME" diff --git a/zh-CN/book/operators.md b/zh-CN/book/operators.md index 74765fe8978..51ce2141d39 100644 --- a/zh-CN/book/operators.md +++ b/zh-CN/book/operators.md @@ -57,7 +57,7 @@ Nushell 支持以下常见的数学、逻辑和字符串操作的运算符: 例如: -```bash +```nu foobarbaz =~ bar # returns true foobarbaz !~ bar # returns false ls | where name =~ ^nu # returns all files whose names start with "nu" @@ -71,19 +71,19 @@ ls | where name =~ ^nu # returns all files whose names start with "nu" 1. 在正则表达式运算符中,指定`(?i)`不区分大小写的模式修饰器: -```bash +```nu "FOO" =~ "foo" # returns false "FOO" =~ "(?i)foo" # returns true ``` 2. 使用[`str contains`](/commands/docs/str_contains.md) 命令的`--insensitive`标志: -```bash +```nu "FOO" | str contains --insensitive "foo" ``` 3. 在比较前用[`str downcase`](/commands/docs/str_downcase.md)将字符串转换为小写: -```bash +```nu ("FOO" | str downcase) == ("Foo" | str downcase) ``` diff --git a/zh-CN/book/parallelism.md b/zh-CN/book/parallelism.md index c2a449c03a3..0ed0b77678f 100644 --- a/zh-CN/book/parallelism.md +++ b/zh-CN/book/parallelism.md @@ -12,7 +12,7 @@ Nushell 现在已经初步支持并行运行代码了,这允许你使用更多 假设你想计算当前目录下每个子目录下的文件数量。使用[`each`](/commands/docs/each.md)你可以这样写。 -```bash +```nu > ls | where type == dir | each { |it| { name: $it.name, len: (ls $it.name | length) } } @@ -24,7 +24,7 @@ Nushell 现在已经初步支持并行运行代码了,这允许你使用更多 现在,由于这个操作可以并行运行,让我们把上面的操作转换为并行的,把[`each`](/commands/docs/each.md)改为[`par-each`](/commands/docs/par-each.md): -```bash +```nu > ls | where type == dir | par-each { |it| { name: $it.name, len: (ls $it.name | length) } } @@ -34,7 +34,7 @@ Nushell 现在已经初步支持并行运行代码了,这允许你使用更多 顺便提一下:由于 [环境变量是有作用域的](environment.md#作用域),你可以使用`par-each`在多个目录中并行工作(注意 `cd` 命令): -```bash +```nu > ls | where type == dir | par-each { |it| { name: $it.name, len: (cd $it.name; ls | length) } } diff --git a/zh-CN/book/pipelines.md b/zh-CN/book/pipelines.md index c886e789473..3848399a1cf 100644 --- a/zh-CN/book/pipelines.md +++ b/zh-CN/book/pipelines.md @@ -6,7 +6,7 @@ Nu 的核心设计之一是管道,这个设计思想可以追溯到几十年 一个管道由三部分组成:输入、过滤器和输出。 -```bash +```nu > open "Cargo.toml" | inc package.version --minor | save "Cargo_new.toml" ``` @@ -27,7 +27,7 @@ Nu 的核心设计之一是管道,这个设计思想可以追溯到几十年 如果一个管道对一行来说有些长,你可以把它放在`(`和`)`里,以创建一个子表达式: -```bash +```nu ( "01/22/2021" | parse "{month}/{day}/{year}" | diff --git a/zh-CN/book/plugins.md b/zh-CN/book/plugins.md index 6151519a6f0..df7647662cf 100644 --- a/zh-CN/book/plugins.md +++ b/zh-CN/book/plugins.md @@ -10,13 +10,13 @@ Nu 的插件是可执行的;Nu 在需要时启动它们,并通过 [stdin, st Linux+macOS: -```bash +```nu > register --encoding=capnp ./my_plugins/my-cool-plugin ``` Windows: -```bash +```nu > register --encoding=capnp .\my_plugins\my-cool-plugin.exe ``` @@ -28,7 +28,7 @@ Windows: 一旦注册,该插件就可以作为你的命令集的一部分被使用: -```bash +```nu > help commands | where is_plugin == true ``` diff --git a/zh-CN/book/scripts.md b/zh-CN/book/scripts.md index 50bd0076c35..43d04a3787d 100644 --- a/zh-CN/book/scripts.md +++ b/zh-CN/book/scripts.md @@ -2,19 +2,19 @@ 在 Nushell 中,你可以用 Nushell 语言编写和运行脚本。要运行一个脚本,你可以把它作为一个参数传递给`nu`命令行程序: -```bash +```nu > nu myscript.nu ``` 这将在一个新的 Nu 实例中运行脚本直至完成。你也可以使用[`source`](/commands/docs/source.md)在 Nu 的 **当前** 实例中运行脚本: -```bash +```nu > source myscript.nu ``` 我们来看一个脚本文件的例子吧: -```bash +```nu # myscript.nu def greet [name] { echo "hello" $name @@ -27,7 +27,7 @@ greet "world" 在上面的例子中,首先`greet`是由 Nushell 解释器定义的,这使得我们之后可以调用这个定义,我们可以把上面的内容写成: -```bash +```nu greet "world" def greet [name] { @@ -47,7 +47,7 @@ Nushell 并不要求定义必须放在脚本中调用该定义之前,你可以 为了更好地理解 Nushell 是如何看待代码行的, 我们来看一个脚本的例子: -```bash +```nu a b; c | d ``` @@ -58,7 +58,7 @@ b; c | d 脚本文件可以选择性地包含一个特殊的 "main" 命令。`main`将在任何其他 Nu 代码之后运行,主要用于向脚本添加参数。你可以在脚本名称后面传递参数(`nu