Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .vuepress/configs/navbar/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export const navbarZhCN: NavbarConfig = [
{ text: 'Nushell 之书', link: '/zh-CN/book/' },
{ text: '命令参考列表', link: '/commands/' },
{ text: '实战指南', link: '/zh-CN/cookbook/' },
{ text: '语言参考指南', link: '/lang-guide/' },
{ text: '语言参考指南', link: '/zh-CN/lang-guide/' },
{ text: '贡献指南', link: '/zh-CN/contributor-book/' },
],
},
Expand Down
18 changes: 18 additions & 0 deletions .vuepress/configs/sidebar/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,5 +174,23 @@ export const sidebarZhCN: SidebarConfig = {
],
},
],
'/zh-CN/lang-guide/': [
{
text: '语言参考指南',
link: '/zh-CN/lang-guide/README.md',
collapsible: false,
},
{
text: '过滤器',
link: '/zh-CN/lang-guide/chapters/filters/00_filters_overview.md',
collapsible: true,
children: [
'/zh-CN/lang-guide/chapters/filters/each-par-each.md',
'/zh-CN/lang-guide/chapters/filters/selecting_data.md',
'/zh-CN/lang-guide/chapters/filters/where-filter.md',
'/zh-CN/lang-guide/chapters/filters/select-get.md',
],
},
],
'/blog/': false,
};
65 changes: 52 additions & 13 deletions tools/i18n-meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
{
"name": "background_jobs.md",
"en": "In progress",
"zh-CN": "-",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "f08ae29d@petrisch",
"tr": "-",
Expand Down Expand Up @@ -171,7 +171,7 @@
{
"name": "control_flow.md",
"en": "Completed",
"zh-CN": "-",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
Expand All @@ -197,7 +197,7 @@
{
"name": "custom_commands.md",
"en": "Completed",
"zh-CN": "d6efb9a35a@hustcer",
"zh-CN": "ca4ed426@passionworkeer",
"fr": "-",
"de": "translated by @sebastian-xyz",
"tr": "-",
Expand All @@ -210,7 +210,7 @@
{
"name": "custom_completions.md",
"en": "Completed",
"zh-CN": "f5987a82d@hustcer",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "5993a92b@petrisch",
"tr": "-",
Expand All @@ -236,7 +236,7 @@
{
"name": "dataframes.md",
"en": "Completed",
"zh-CN": "129cc2ddea@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
Expand Down Expand Up @@ -392,7 +392,7 @@
{
"name": "loading_data.md",
"en": "Completed",
"zh-CN": "fa90895307@hustcer",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "0c788acfec@petrisch",
"tr": "-",
Expand Down Expand Up @@ -535,7 +535,7 @@
{
"name": "operators.md",
"en": "Completed",
"zh-CN": "1b7d01ac3b@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "c39efa00@petrisch",
"tr": "-",
Expand Down Expand Up @@ -587,7 +587,7 @@
{
"name": "plugins.md",
"en": "Completed",
"zh-CN": "ae23eeba3@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "translated by @sebastian-xyz",
"tr": "-",
Expand Down Expand Up @@ -662,6 +662,32 @@
"ru": "-",
"ko": "-"
},
{
"name": "sorting.md",
"en": "Completed",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
"ja": "-",
"es": "-",
"pt-BR": "-",
"ru": "-",
"ko": "-"
},
{
"name": "special_variables.md",
"en": "Completed",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
"ja": "-",
"es": "-",
"pt-BR": "-",
"ru": "-",
"ko": "-"
},
{
"name": "standard_library.md",
"en": "In progress",
Expand All @@ -678,7 +704,7 @@
{
"name": "stdout_stderr_exit_codes.md",
"en": "Completed",
"zh-CN": "73ef7f3153@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
Expand Down Expand Up @@ -730,7 +756,7 @@
{
"name": "thinking_in_nu.md",
"en": "Completed",
"zh-CN": "fa90895307@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "4a47be5a@Loic Riegel",
"de": "c39efa00@petrisch",
"tr": "-",
Expand All @@ -756,7 +782,7 @@
{
"name": "types_of_data.md",
"en": "Completed",
"zh-CN": "73ef7f3153@hustcer",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
Expand All @@ -769,7 +795,7 @@
{
"name": "variables.md",
"en": "Completed",
"zh-CN": "1b7d01ac3b@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "translated by @sebastian-xyz",
"tr": "-",
Expand All @@ -782,7 +808,7 @@
{
"name": "working_with_lists.md",
"en": "Completed",
"zh-CN": "73ef7f3153@hustcer",
"zh-CN": "ad327bb7@passionworkeer",
"fr": "-",
"de": "ad03c8d55c@petrisch",
"tr": "-",
Expand All @@ -792,6 +818,19 @@
"ru": "-",
"ko": "-"
},
{
"name": "working_with_records.md",
"en": "Completed",
"zh-CN": "ff1c4786@passionworkeer",
"fr": "-",
"de": "-",
"tr": "-",
"ja": "-",
"es": "-",
"pt-BR": "-",
"ru": "-",
"ko": "-"
},
{
"name": "working_with_strings.md",
"en": "Completed",
Expand Down
16 changes: 8 additions & 8 deletions zh-CN/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ tagline: 一种新的 Shell
actionText: 点此了解更多 →
actionLink: /zh-CN/book/
features:
- title: 利用管道控制任意系统
- title: 跨平台
details: Nu 可以在 Linux、macOS、BSD 和 Windows 上运行。一次学习,处处可用。
- title: 一切皆数据
details: Nu 管道使用结构化数据,你可以用同样的方式安全地选择,过滤和排序。停止解析字符串,开始解决问题。
Expand All @@ -18,7 +18,7 @@ features:

### Nu 可以与现有数据一起工作

Nu 开箱即用支持 [JSON、YAML、SQLite、Excel 等](/zh-CN/book/loading_data.md)。无论是文件、数据库还是网络 API 中的数据,都可以很容易地引入 Nu 管道:
Nu 开箱即用支持 [JSON、YAML、SQLite、Excel 等](./book/loading_data.md)。无论是文件、数据库还是网络 API 中的数据,都可以很容易地引入 Nu 管道:

<img src="https://www.nushell.sh/frontpage/fetch-example.png" alt="Screenshot showing fetch with a web API" class="hero"/>

Expand All @@ -30,7 +30,7 @@ Nu 在类型化的数据上操作,所以它能捕捉到其他 Shell 无法捕

## 获取 Nu

Nushell 可以通过 [你喜欢的软件包管理器](https://repology.org/project/nushell/versions) 来安装,可以下载 [二进制文件](https://github.com/nushell/nushell/releases),可以在 [GitHub Action](https://github.com/marketplace/actions/setup-nu) 中使用,此外也可以以 [源码](https://github.com/nushell/nushell)方式获得。在此阅读 [详细的安装说明](/zh-CN/book/installation.md) 或直接开始:
Nushell 可以通过 [你喜欢的软件包管理器](https://repology.org/project/nushell/versions) 来安装,可以下载 [二进制文件](https://github.com/nushell/nushell/releases),可以在 [GitHub Action](https://github.com/marketplace/actions/setup-nu) 中使用,此外也可以以 [源码](https://github.com/nushell/nushell)方式获得。在此阅读 [详细的安装说明](./book/installation.md) 或直接开始:

#### macOS / Linux:

Expand Down Expand Up @@ -59,11 +59,11 @@ winget install nushell --scope machine

## 文档

- [入门](/zh-CN/book/getting_started.md) 指引你熟悉 Nushell
- [Nu 之异同](/zh-CN/book/coming_to_nu.md) 描述了 Nu 与其他语言和 Shell 的异同之处
- [Nu 基础](/zh-CN/book/nu_fundamentals.md) 是对 Nu 基础知识更详尽、更有条理的描述
- [Nu 编程](/zh-CN/book/programming_in_nu.md) 将 Nu 作为一门编程语言进行描述
- [作为 Shell 的 Nu](/zh-CN/book/nu_as_a_shell.md) 让你深入了解 Shell 环境中的交互功能和可配置性
- [入门](./book/getting_started.md) 指引你熟悉 Nushell
- [Nu 之异同](./book/coming_to_nu.md) 描述了 Nu 与其他语言和 Shell 的异同之处
- [Nu 基础](./book/nu_fundamentals.md) 是对 Nu 基础知识更详尽、更有条理的描述
- [Nu 编程](./book/programming_in_nu.md) 将 Nu 作为一门编程语言进行描述
- [作为 Shell 的 Nu](./book/nu_as_a_shell.md) 让你深入了解 Shell 环境中的交互功能和可配置性

## 社区

Expand Down
67 changes: 48 additions & 19 deletions zh-CN/book/background_jobs.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ Nushell 目前对基于线程的后台任务有实验性支持。

## 生成任务

任务可以使用 [`job spawn`](/commands/docs/job_spawn.md) 生成,它接收一个闭包并在后台线程中开始执行,返回一个生成的任务的唯一整数 ID:
任务可以使用 [`job spawn`](/commands/docs/job_spawn.md) 生成,它接收一个闭包并在后台线程中开始执行,返回
一个生成的任务的唯一整数 ID:

```nu
'i am' | save status.txt
Expand All @@ -31,11 +32,11 @@ open status.txt
let id = job spawn { sleep 1day }

job list
# => ┏━━━┳━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━┓
# => ┃ # ┃ id ┃ type ┃ pids ┃
# => ┣━━━╋━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━┫
# => ┃ 0 ┃ 1 ┃ thread ┃ [list 0 items] ┃
# => ┗━━━┻━━━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━┛
# => ╭───┬────┬────────┬────────────────╮
# => │ # │ id │ type │ pids │
# => ├───┼────┼────────┼────────────────┤
# => │ 0 │ 2 │ thread │ [list 0 items] │
# => ╰───┴────┴────────┴────────────────╯

job kill $id

Expand Down Expand Up @@ -68,17 +69,21 @@ job kill $id
在 Unix 目标(如 Linux 和 macOS)上,Nushell 还支持使用 <kbd>Ctrl</kbd>+<kbd>Z</kbd> 挂起外部命令。当一个正在运行的进程被挂起时,它会变成一个“冻结”的后台任务:

```nu
long_running_process # 这开始运行,然后按下 Ctrl+Z
# => Job 1 is frozen
^sleep 100 # 这条命令开始运行,然后按下 Ctrl+Z
# => Job 4 is frozen

job list
# => ┏━━━┳━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━┓
# => ┃ # ┃ id ┃ type ┃ pids ┃
# => ┣━━━╋━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━┫
# => ┃ 0 ┃ 1 ┃ frozen ┃ [list 1 items] ┃
# => ┗━━━┻━━━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━┛
# => ╭───┬────┬────────┬──────────────┬─────────────╮
# => │ # │ id │ type │ pids │ description │
# => ├───┼────┼────────┼──────────────┼─────────────┤
# => │ 0 │ 4 │ frozen │ ╭───┬──────╮ │ sleep │
# => │ │ │ │ │ 0 │ 6337 │ │ │
# => │ │ │ │ ╰───┴──────╯ │ │
# => ╰───┴────┴────────┴──────────────┴─────────────╯
```

冻结的任务会自动以被挂起的程序的名称作为描述。

可以使用 [`job unfreeze`](/commands/docs/job_unfreeze.md) 命令将冻结的任务带回前台:

```nu
Expand All @@ -99,12 +104,12 @@ alias fg = job unfreeze

```nu
vim
# => Job 1 is frozen
# => Job 5 is frozen

long_running_process
# => Job 2 is frozen
^sleep 100
# => Job 6 is frozen

job unfreeze 1
job unfreeze 5
# 我们回到了 vim
```

Expand Down Expand Up @@ -137,16 +142,40 @@ job recv
# => Hello from a background job
```

消息可以用 `job send --tag` 带上一个数字标签。`job recv --tag` 便只接收带有该标签的消息,其余消息留在信箱里;`job recv --timeout` 则会在给定的时长之后停止等待:

```nu
'low priority' | job send 0 --tag 2
'urgent' | job send 0 --tag 1

job recv --tag 1
# => urgent
job recv --timeout 0sec
# => low priority
```

要丢弃消息而不读取它们,可以使用 [`job flush`](/commands/docs/job_flush.md),它会清空当前任务的整个信箱;配合 `--tag` 使用时则只清除带有指定标签的消息。

## 退出行为

与许多其他 shell 不同,Nushell 任务**不是**独立的进程,
而是作为后台线程实现的。

一个重要的副作用是,一旦 shell 进程退出,所有后台任务都将终止。
因此,Nushell 没有类似 UNIX 的 `disown` 命令来防止任务在 shell 退出后终止。
一个重要的副作用是,一旦 shell 进程退出,所有后台任务
都将终止。因此,Nushell 没有类似 UNIX 的 `disown` 命令来防止
任务在 shell 退出后终止。
为了解决这个问题,未来计划实现 `job dispatch`,
用于生成独立的后台进程(有关进展,请参阅 [#15201](https://github.com/nushell/nushell/issues/15193?issue=nushell%7Cnushell%7C15201))。

此外,如果用户正在运行交互式 Nushell 会话并在有后台任务运行时运行
[`exit`](/commands/docs/exit.md),
shell 会在提示用户确认 `exit` 之前警告他们。

在 REPL 中按下 <kbd>Ctrl</kbd>+<kbd>C</kbd> 只会中断在前台运行的命令。
后台任务和冻结的任务会继续运行。

当 Nushell 运行一个脚本或用 `nu -c` 给出的命令时,它会在退出前停止任何仍在运行的任务,
以及它们的子进程。当脚本被 <kbd>Ctrl</kbd>+<kbd>C</kbd> 中断且
该中断被捕获时,同样会发生这种情况。

在任务的闭包内调用 `exit` 会结束该任务,而不是结束 shell。
Loading
Loading