aboutsummaryrefslogtreecommitdiffstats
path: root/docs-i18n
diff options
context:
space:
mode:
Diffstat (limited to 'docs-i18n')
-rw-r--r--docs-i18n/.gitignore20
-rw-r--r--docs-i18n/ru/config_ru.md146
-rw-r--r--docs-i18n/ru/import_ru.md27
-rw-r--r--docs-i18n/ru/key-binding_ru.md39
-rw-r--r--docs-i18n/ru/list_ru.md11
-rw-r--r--docs-i18n/ru/search_ru.md38
-rw-r--r--docs-i18n/ru/server_ru.md160
-rw-r--r--docs-i18n/ru/shell-completions_ru.md20
-rw-r--r--docs-i18n/ru/stats_ru.md40
-rw-r--r--docs-i18n/ru/sync_ru.md60
-rw-r--r--docs-i18n/zh-CN/README.md234
-rw-r--r--docs-i18n/zh-CN/config.md137
-rw-r--r--docs-i18n/zh-CN/docker.md90
-rw-r--r--docs-i18n/zh-CN/import.md25
-rw-r--r--docs-i18n/zh-CN/k8s.md195
-rw-r--r--docs-i18n/zh-CN/key-binding.md48
-rw-r--r--docs-i18n/zh-CN/list.md11
-rw-r--r--docs-i18n/zh-CN/search.md37
-rw-r--r--docs-i18n/zh-CN/server.md75
-rw-r--r--docs-i18n/zh-CN/shell-completions.md19
-rw-r--r--docs-i18n/zh-CN/stats.md35
-rw-r--r--docs-i18n/zh-CN/sync.md51
22 files changed, 1518 insertions, 0 deletions
diff --git a/docs-i18n/.gitignore b/docs-i18n/.gitignore
new file mode 100644
index 00000000..b2d6de30
--- /dev/null
+++ b/docs-i18n/.gitignore
@@ -0,0 +1,20 @@
+# Dependencies
+/node_modules
+
+# Production
+/build
+
+# Generated files
+.docusaurus
+.cache-loader
+
+# Misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/docs-i18n/ru/config_ru.md b/docs-i18n/ru/config_ru.md
new file mode 100644
index 00000000..b1e64218
--- /dev/null
+++ b/docs-i18n/ru/config_ru.md
@@ -0,0 +1,146 @@
+# Конфигурация
+
+Autin использует два файла конфигурации. Они хранятся в `~/.config/atuin/`. Данные
+хранятся в `~/.local/share/atuin` (если не определено другое в XDG\_\*).
+
+Путь до катклога конфигурации может быть изменён установкой
+параметра `ATUIN_CONFIG_DIR`. Например
+
+```
+export ATUIN_CONFIG_DIR = /home/ellie/.atuin
+```
+
+## Пользовательская конфигурация
+
+```
+~/.config/atuin/config.toml
+```
+
+Этот файл используется когда клиент работает на локальной машине (не сервере).
+
+See [config.toml](../../atuin-client/config.toml) for an example
+
+### `dialect`
+
+Этот параметр контролирует как [stats](stats.md) команда обрабатывает данные.
+Может принимать одно из двух допустимых значений:
+
+```
+dialect = "uk"
+```
+
+или
+
+```
+dialect = "us"
+```
+
+По умолчанию - "us".
+
+### `auto_sync`
+
+Синхронизироваться ли автоматически если выполнен вход. По умолчанию - да (true)
+```
+auto_sync = true/false
+```
+
+### `sync_address`
+
+Адрес сервера для синхронизации. По умолчанию `https://api.atuin.sh`.
+
+```
+sync_address = "https://api.atuin.sh"
+```
+
+### `sync_frequency`
+
+Как часто клиент синхронизируется с сервером. Может быть указано в
+понятном для человека формате. Например, `10s`, `20m`, `1h`, и т.д.
+По умолчанию `1h`
+
+Если стоит значение 0, Autin будет синхронизироваться после каждой выполненной команды.
+Помните, что сервера могут иметь ограничение на количество отправленных запросов.
+
+```
+sync_frequency = "1h"
+```
+
+### `db_path`
+
+Путь до базы данных SQlite. По умолчанию это
+`~/.local/share/atuin/history.db`.
+
+```
+db_path = "~/.history.db"
+```
+
+### `key_path`
+
+Путь до ключа шифрования Autin. По умолчанию,
+`~/.local/share/atuin/key`.
+
+```
+key = "~/.atuin-key"
+```
+
+### `session_path`
+
+Путь до серверного файла сессии Autin. По умолчанию,
+`~/.local/share/atuin/session`. На самом деле это просто API токен.
+
+```
+key = "~/.atuin-session"
+```
+
+### `search_mode`
+
+Определяет, какой режим поиска будет использоваться. Autin поддерживает "prefix",
+текст целиком (fulltext) и неточный ("fuzzy") поиск. Режим "prefix" производит
+поиск по "запрос\*", "fulltext" по "\*запрос\*", и "fuzzy" использует
+[вот такой](#fuzzy-search-syntax) синтаксис.
+
+По умолчанию стоит значение "fuzzy"
+
+### `filter_mode`
+
+Фильтр, по-умолчанию использующийся для поиска
+
+| Столбец 1 | Столбец 2 |
+|------------------|----------------------------------------------------------|
+| global (default) | Искать историю команд со всех хостов, сессий и каталогов |
+| host | Искать историю команд с этого хоста |
+| session | Искать историю команд этой сессии |
+| directory | Искать историю команд, выполненных в текущей папке |
+
+Режимы поиска могут быть изменены через ctrl-r
+
+
+```
+search_mode = "fulltext"
+```
+
+#### fuzzy search syntax
+
+Режим поиска "fuzzy" основан на
+[fzf search syntax](https://github.com/junegunn/fzf#search-syntax).
+
+| Токен | Тип совпадений | Описание |
+|-----------|----------------------------|-------------------------------------|
+| `sbtrkt` | fuzzy-match | Всё, что совпадает с `sbtrkt` |
+| `'wild` | exact-match (В кавычках) | Всё, что включает в себя `wild` |
+| `^music` | prefix-exact-match | Всё, что начинается с `music` |
+| `.mp3$` | suffix-exact-match | Всё, что заканчивается на `.mp3` |
+| `!fire` | inverse-exact-match | Всё, что не включает в себя `fire` |
+| `!^music` | inverse-prefix-exact-match | Всё, что не начинается с `music` |
+| `!.mp3$` | inverse-suffix-exact-match | Всё, что не заканчивается на `.mp3` |
+
+Знак вертикальной черты означает логическое ИЛИ. Например, запрос ниже вернет
+всё, что начинается с `core` и заканчивается либо на `go`, либо на `rb`, либо на `py`.
+
+```
+^core go$ | rb$ | py$
+```
+
+## Серверная конфигурация
+
+`// TODO`
diff --git a/docs-i18n/ru/import_ru.md b/docs-i18n/ru/import_ru.md
new file mode 100644
index 00000000..993d89b8
--- /dev/null
+++ b/docs-i18n/ru/import_ru.md
@@ -0,0 +1,27 @@
+# `atuin import`
+
+Autin может импортировать историю из "старого" файла истории
+
+`atuin import auto` предпринимает попытку определить тип командного интерфейса
+(через \$SHELL) и запускает нужный скрипт импорта.
+
+К сожалению, эти файлы содержат не так много информации, как Autin, так что не
+все функции будут доступны с импортированными данными.
+
+# zsh
+
+```
+atuin import zsh
+```
+
+Если у вас есть HISTFILE, то эта команда должна сработать. Иначе, попробуйте
+
+```
+HISTFILE=/path/to/history/file atuin import zsh
+```
+
+Этот параметр поддерживает как и упрощённый, так и полный формат.
+
+# bash
+
+TODO
diff --git a/docs-i18n/ru/key-binding_ru.md b/docs-i18n/ru/key-binding_ru.md
new file mode 100644
index 00000000..d6917e4e
--- /dev/null
+++ b/docs-i18n/ru/key-binding_ru.md
@@ -0,0 +1,39 @@
+# Key binding
+
+По умолчанию, Autin будет переназначать <kbd>Ctrl-r</kbd> и клавишу 'стрелка вверх'.
+Если вы не хотите этого, установите параметр ATUIN_NOBIND прежде чем вызывать `atuin init`
+
+Например,
+
+```
+export ATUIN_NOBIND="true"
+eval "$(atuin init zsh)"
+```
+
+Таким образом вы можете разрешить переназначение клавиш Autin, если это необходимо.
+Делайте это до инициализирующего вызова.
+
+# zsh
+
+Autin устанавливает виджет ZLE "atuin-search"
+
+```
+export ATUIN_NOBIND="true"
+eval "$(atuin init zsh)"
+
+bindkey '^r' atuin-search
+
+# зависит от режима терминала
+bindkey '^[[A' atuin-search
+bindkey '^[OA' atuin-search
+```
+
+# bash
+
+```
+export ATUIN_NOBIND="true"
+eval "$(atuin init bash)"
+
+# Переопределите ctrl-r, и любые другие сочетания горячих клавиш тут
+bind -x '"\C-r": __atuin_history'
+```
diff --git a/docs-i18n/ru/list_ru.md b/docs-i18n/ru/list_ru.md
new file mode 100644
index 00000000..e40d3045
--- /dev/null
+++ b/docs-i18n/ru/list_ru.md
@@ -0,0 +1,11 @@
+# Вывад истории на экран
+
+```
+atuin history list
+```
+
+| Аргумент | Описание |
+| -------------- | ------------------------------------------------------------------------------ |
+| `--cwd/-c` | Каталог, историю команд которой необходимо вывести (по умолчанию все каталоги) |
+| `--session/-s` | Выводит историю команд только текущей сессии (по умолчанию false) |
+| `--human` | Читаемый формат для времени и периодов времени (по умолчанию false) |
diff --git a/docs-i18n/ru/search_ru.md b/docs-i18n/ru/search_ru.md
new file mode 100644
index 00000000..8302decc
--- /dev/null
+++ b/docs-i18n/ru/search_ru.md
@@ -0,0 +1,38 @@
+# `atuin search`
+
+```
+atuin search <query>
+```
+
+Поиск в Atuin также поддерживает wildcards со знаками `*` или `%`.
+По умолчанию, должен быть указан префикс (т.е. все запросы автоматически дополняются wildcard -ами)
+
+| Аргумент | Описание |
+| ------------------ | ------------------------------------------------------------------------------------------- |
+| `--cwd/-c` | Каталог, для которого отображается история (по умолчанию, все каталоги)) |
+| `--exclude-cwd` | Исключить команды которые запускались в этом каталоге (по умолчанию none) |
+| `--exit/-e` | Фильтровать по exit code (по умолчанию none) |
+| `--exclude-exit` | Исключить команды, которые завершились с указанным значением (по умолчанию none) |
+| `--before` | Включить только команды, которые были запущены до указанного времени (по умолчанию none) |
+| `--after` | Включить только команды, которые были запущены после указанного времени (по умолчанию none) |
+| `--interactive/-i` | Открыть интерактивный поисковой графический интерфейс (по умолчанию false) |
+| `--human` | Использовать читаемое формавтирование для времени и периодов времени (по умолчанию false) |
+
+## Примеры
+
+```
+# Начать интерактивный поиск с текстовым пользовательским интерфейсом
+atuin search -i
+
+# Начать интерактивный поиск с текстовым пользовательским интерфейсом и уже введённым запросом
+atuin search -i atuin
+
+# Искать по всем командам, начиная с cargo, которые успешно завершились
+atuin search --exit 0 cargo
+
+# Искать по всем командам которые завершились ошибками и были вызваны в текущей папке и были запущены до первого апреля 2021
+atuin search --exclude-exit 0 --before 01/04/2021 --cwd .
+
+# Искать по всем командам, начиная с cargo, которые успешно завершились и были запущены после трёх часо дня вчера
+atuin search --exit 0 --after "yesterday 3pm" cargo
+```
diff --git a/docs-i18n/ru/server_ru.md b/docs-i18n/ru/server_ru.md
new file mode 100644
index 00000000..25b45abf
--- /dev/null
+++ b/docs-i18n/ru/server_ru.md
@@ -0,0 +1,160 @@
+# `atuin server`
+
+Autin позволяет запустить свой собственный сервер синхронизации, если вы
+не хотите использовать мой :)
+
+Здесь есть только одна субкоманда, `atuin server start`, которая запустит
+Autin http-сервер синхронизации
+
+```
+USAGE:
+ atuin server start [OPTIONS]
+
+FLAGS:
+ --help Prints help information
+ -V, --version Prints version information
+
+OPTIONS:
+ -h, --host <host>
+ -p, --port <port>
+```
+
+## config
+
+Серверная конфигурация лежит отдельно от файла пользовательсокй, даже если
+это один и тот же бинарный файл. Серверная конфигурация лежит в `~/.config/atuin/server.toml`.
+
+Этот файл выглядит как-то так:
+
+```toml
+host = "0.0.0.0"
+port = 8888
+open_registration = true
+db_uri="postgres://user:password@hostname/database"
+```
+
+Конфигурация так же может находииться в переменных окружения.
+
+```sh
+ATUIN_HOST="0.0.0.0"
+ATUIN_PORT=8888
+ATUIN_OPEN_REGISTRATION=true
+ATUIN_DB_URI="postgres://user:password@hostname/database"
+```
+
+### host
+
+Адрес хоста, который будет прослушиваться сервером Autin
+
+По умолчанию это `127.0.0.1`.
+
+### post
+
+POST, который будет прослушиваться сервером Autin.
+
+По умолчанию это `8888`.
+
+### open_registration
+
+Если `true`, autin будет разрешать регистрацию новых пользователей.
+Установите флаг `false`, если после создания вашего аккаута вы не хотите, чтобы другие
+могли пользоваться вашим сервером.
+
+По умолчанию `false`.
+
+### db_uri
+
+Действующий URI postgres, где будет сохранён аккаунт пользователя и история.
+
+## Docker
+
+Поддерживается образ Docker чтобы сделать проще развертывание сервера в контейнере.
+
+```sh
+docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start
+```
+
+## Docker Compose
+
+Использование вашего собственного docker-образа с хостингом вашего собственного Autin может быть реализовано через
+файл docker-compose.
+
+Создайте файл `.env` рядом с `docker-compode.yml` с содержанием наподобие этому:
+
+```
+ATUIN_DB_USERNAME=atuin
+# Choose your own secure password
+ATUIN_DB_PASSWORD=really-insecure
+```
+
+Создайте `docker-compose.yml`:
+
+```yaml
+version: '3.5'
+services:
+ atuin:
+ restart: always
+ image: ghcr.io/ellie/atuin:main
+ command: server start
+ volumes:
+ - "./config:/config"
+ links:
+ - postgresql:db
+ ports:
+ - 8888:8888
+ environment:
+ ATUIN_HOST: "0.0.0.0"
+ ATUIN_OPEN_REGISTRATION: "true"
+ ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin
+ postgresql:
+ image: postgres:14
+ restart: unless-stopped
+ volumes: # Don't remove permanent storage for index database files!
+ - "./database:/var/lib/postgresql/data/"
+ environment:
+ POSTGRES_USER: $ATUIN_DB_USERNAME
+ POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD
+ POSTGRES_DB: atuin
+```
+
+Запустите службы с помощью `docker-compose`:
+
+```sh
+docker-compose up -d
+```
+
+### Использование systemd для управления сервером Autin
+
+`systemd` юнит чтобы управлять службами, контролируемыми `docker-compose`:
+
+```
+[Unit]
+Description=Docker Compose Atuin Service
+Requires=docker.service
+After=docker.service
+
+[Service]
+# Where the docker-compose file is located
+WorkingDirectory=/srv/atuin-server
+ExecStart=/usr/bin/docker-compose up
+ExecStop=/usr/bin/docker-compose down
+TimeoutStartSec=0
+Restart=on-failure
+StartLimitBurst=3
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Включите и запустите службу командой:
+
+```sh
+systemctl enable --now atuin
+```
+
+Проверьте, работает ли:
+
+```sh
+systemctl status atuin
+```
+
diff --git a/docs-i18n/ru/shell-completions_ru.md b/docs-i18n/ru/shell-completions_ru.md
new file mode 100644
index 00000000..56fb1602
--- /dev/null
+++ b/docs-i18n/ru/shell-completions_ru.md
@@ -0,0 +1,20 @@
+# `atuin gen-completions`
+
+[Shell completions](https://en.wikipedia.org/wiki/Command-line_completion) для Atuin
+могут бять сгенерированы путём указания каталога для вывода и желаемого shell через субкомманду `gen-completions`.
+
+```
+$ atuin gen-completions --shell bash --out-dir $HOME
+
+Shell completion for BASH is generated in "/home/user"
+```
+
+Возможные команды для аргумента `--shell`могут быть следующими:
+
+- `bash`
+- `fish`
+- `zsh`
+- `powershell`
+- `elvish`
+
+Также рекомендуем прочитать [supported shells](./../../README.md#supported-shells).
diff --git a/docs-i18n/ru/stats_ru.md b/docs-i18n/ru/stats_ru.md
new file mode 100644
index 00000000..842ad71b
--- /dev/null
+++ b/docs-i18n/ru/stats_ru.md
@@ -0,0 +1,40 @@
+# `atuin stats`
+
+Atuin также может выводить статистику, основанную на истории. Пока что в очень простом виде,
+но скоро должно появиться больше возможностей.
+
+Статистика выводится пока только на английском
+Statistics in english only
+# TODO
+
+```
+$ atuin stats day last friday
+
++---------------------+------------+
+| Statistic | Value |
++---------------------+------------+
+| Most used command | git status |
++---------------------+------------+
+| Commands ran | 450 |
++---------------------+------------+
+| Unique commands ran | 213 |
++---------------------+------------+
+
+$ atuin stats day 01/01/21 # also accepts absolute dates
+```
+
+Также, может быть выведена статистика всей известной Autin истории:
+
+```
+$ atuin stats all
+
++---------------------+-------+
+| Statistic | Value |
++---------------------+-------+
+| Most used command | ls |
++---------------------+-------+
+| Commands ran | 8190 |
++---------------------+-------+
+| Unique commands ran | 2996 |
++---------------------+-------+
+```
diff --git a/docs-i18n/ru/sync_ru.md b/docs-i18n/ru/sync_ru.md
new file mode 100644
index 00000000..08831cbd
--- /dev/null
+++ b/docs-i18n/ru/sync_ru.md
@@ -0,0 +1,60 @@
+# `atuin sync`
+
+Autin может сделать резервную копию вашей истории на сервер чтобы обеспечить использование
+разными компьютерами одной и той же истории. Вся история будет зашифрована двусторонним шифрованием,
+так что сервер _никогда_ не получит ваши данные!
+
+Можно сделать свой сервер (запустив `atuin server start`, об этом написано в других
+файлах документациии), но у меня есть свой https://api.atuin.sh. Это серверный адрес по умолчанию,
+который может быть изменён в [конфигурации](config_ru.md). Опять же, я _не_ могу получить ваши данные
+и они мне не нужны.
+
+## Частота синхронизации
+
+Синхронизация будет происходить автоматически, если обратное не было указано в конфигурации.
+Отконфигурировать сей параметр можно в [config](config_ru.md)
+
+## Синхронизация
+
+Синхронизироваться также можно вручную, используя команду `atuin sync`
+
+## Регистрация
+
+Можно зарегистрировать аккаунт для синхронизации:
+
+```
+atuin register -u <USERNAME> -e <EMAIL> -p <PASSWORD>
+```
+
+Имена пользователей должны быть уникальны, и электронная почта должна использваться
+только для срочных уведомлений (изменения политик, нарушения безопасности и т.д.)
+
+Псоле регистрации, вы уже сразу вошли в свой аккаунт :) С этого момента синхронизация
+будет проходить автоматически
+
+## Ключ
+
+Поскольку все данные шифруются, Autin при работе сгенерирует ваш ключ. Он будет сохранён в
+каталоге с данными Autin (`~/.local/share/atuin` на системах с GNU/Linux)
+
+Также можно сделать это самим:
+
+```
+atuin key
+```
+
+Никогда не передавайте никому этот ключ!
+
+## Вход
+
+Если вы хотите войти с другого компьютера, вам потребуется ключ безопасности (`atuin key`).
+
+```
+atuin login -u <USERNAME> -p <PASSWORD> -k <KEY>
+```
+
+## Выход
+
+```
+atuin logout
+```
diff --git a/docs-i18n/zh-CN/README.md b/docs-i18n/zh-CN/README.md
new file mode 100644
index 00000000..065d1b4d
--- /dev/null
+++ b/docs-i18n/zh-CN/README.md
@@ -0,0 +1,234 @@
+<p align="center">
+ <picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/atuinsh/atuin/assets/53315310/13216a1d-1ac0-4c99-b0eb-d88290fe0efd">
+ <img alt="Text changing depending on mode. Light: 'So light!' Dark: 'So dark!'" src="https://github.com/atuinsh/atuin/assets/53315310/08bc86d4-a781-4aaa-8d7e-478ae6bcd129">
+</picture>
+</p>
+
+<p align="center">
+<em>神奇的 shell 历史记录</em>
+</p>
+
+<hr/>
+
+<p align="center">
+ <a href="https://github.com/atuinsh/atuin/actions?query=workflow%3ARust"><img src="https://img.shields.io/github/actions/workflow/status/atuinsh/atuin/rust.yml?style=flat-square" /></a>
+ <a href="https://crates.io/crates/atuin"><img src="https://img.shields.io/crates/v/atuin.svg?style=flat-square" /></a>
+ <a href="https://crates.io/crates/atuin"><img src="https://img.shields.io/crates/d/atuin.svg?style=flat-square" /></a>
+ <a href="https://github.com/atuinsh/atuin/blob/main/LICENSE"><img src="https://img.shields.io/crates/l/atuin.svg?style=flat-square" /></a>
+ <a href="https://discord.gg/Fq8bJSKPHh"><img src="https://img.shields.io/discord/954121165239115808" /></a>
+ <a rel="me" href="https://hachyderm.io/@atuin"><img src="https://img.shields.io/mastodon/follow/109944632283122560?domain=https%3A%2F%2Fhachyderm.io&style=social"/></a>
+ <a href="https://twitter.com/atuinsh"><img src="https://img.shields.io/twitter/follow/atuinsh?style=social" /></a>
+</p>
+
+
+[English] | [简体中文]
+
+Atuin 使用 SQLite 数据库取代了你现有的 shell 历史,并为你的命令记录了额外的内容。此外,它还通过 Atuin 服务器,在机器之间提供可选的、完全加密的历史记录同步功能。
+
+<p align="center">
+ <img src="../../demo.gif" alt="animated" width="80%" />
+</p>
+
+<p align="center">
+<em>显示退出代码、命令持续时间、上次执行时间和执行的命令</em>
+</p>
+
+除了搜索 UI,它还可以执行以下操作:
+
+```
+# 搜索昨天下午3点之后记录的所有成功的 `make` 命令
+atuin search --exit 0 --after "yesterday 3pm" make
+```
+
+你可以使用我(ellie)托管的服务器,也可以使用你自己的服务器!或者干脆不使用 sync 功能。所有的历史记录同步都是加密,即使我想,也无法访问你的数据。且我**真的**不想。
+
+## 功能
+
+- 重新绑定 `up` 和 `ctrl-r` 的全屏历史记录搜索UI界面
+- 使用 sqlite 数据库存储 shell 历史记录
+- 备份以及同步已加密的 shell 历史记录
+- 在不同的终端、不同的会话以及不同的机器上都有相同的历史记录
+- 记录退出代码、cwd、主机名、会话、命令持续时间,等等。
+- 计算统计数据,如 "最常用的命令"。
+- 不替换旧的历史文件
+- 通过 <kbd>Alt-\<num\></kbd> 快捷键快速跳转到之前的记录
+- 通过 ctrl-r 切换过滤模式;可以仅从当前会话、目录或全局来搜索历史记录
+
+## 文档
+
+- [快速开始](#快速开始)
+- [安装](#安装)
+- [导入](./import.md)
+- [配置](./config.md)
+- [历史记录搜索](./search.md)
+- [历史记录云端同步](./sync.md)
+- [历史记录统计](./stats.md)
+- [运行你自己的服务器](./server.md)
+- [键绑定](./key-binding.md)
+- [shell 补全](./shell-completions.md)
+
+## 支持的 Shells
+
+- zsh
+- bash
+- fish
+
+## 社区
+
+Atuin 有一个 Discord 社区, 可以在 [这里](https://discord.gg/Fq8bJSKPHh) 获得
+
+# 快速开始
+
+## 使用默认的同步服务器
+
+这将为您注册由我托管的默认同步服务器。 一切都是端到端加密的,所以你的秘密是安全的!
+
+阅读下面的更多信息,了解仅供离线使用或托管您自己的服务器。
+
+```
+bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
+
+atuin register -u <USERNAME> -e <EMAIL> -p <PASSWORD>
+atuin import auto
+atuin sync
+```
+
+### 使用活跃图
+
+除了托管 Atuin 服务器外,还有一个服务可以用来生成你的 shell 历史记录使用活跃图!这个功能的灵感来自于 GitHub 的使用活跃图。
+
+例如,这是我的:
+
+![](https://api.atuin.sh/img/ellie.png?token=0722830c382b42777bdb652da5b71efb61d8d387)
+
+如果你也想要,请在登陆你的同步服务器后,执行
+
+```
+curl https://api.atuin.sh/enable -d $(cat ~/.local/share/atuin/session)
+```
+
+执行结果为你的活跃图 URL 地址。可以共享或嵌入这个 URL 地址,令牌(token)并<i>不是</i>加密的,只是用来防止被枚举攻击。
+
+## 仅离线 (不同步)
+
+```
+bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
+
+atuin import auto
+```
+
+## 安装
+
+### 脚本 (推荐)
+
+安装脚本将帮助您完成设置,确保您的 shell 正确配置。 它还将使用以下方法之一,在可能的情况下首选系统包管理器(pacman、homebrew 等)。
+
+```
+# 不要以root身份运行,如果需要的话,会要求root。
+bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)
+```
+
+然后可直接看 <a href="#shell-plugin">Shell 插件</a>
+
+### 通过 cargo
+
+最好使用 [rustup](https://rustup.rs/) 来设置 Rust 工具链,然后你就可以运行下面的命令:
+
+```
+cargo install atuin
+```
+
+然后可直接看 <a href="#shell-plugin">Shell 插件</a>
+
+### Homebrew
+
+```
+brew install atuin
+```
+
+然后可直接看 <a href="#shell-plugin">Shell 插件</a>
+
+### MacPorts
+
+Atuin 也可以在 [MacPorts](https://ports.macports.org/port/atuin/) 中找到
+
+```
+sudo port install atuin
+```
+
+然后可直接看 <a href="#shell-plugin">Shell 插件</a>
+
+### Pacman
+
+Atuin 在 Arch Linux 的 [社区存储库](https://archlinux.org/packages/community/x86_64/atuin/) 中可用。
+
+```
+pacman -S atuin
+```
+
+然后可直接看 <a href="#shell-plugin">Shell 插件</a>
+
+### 从源码编译安装
+
+```
+git clone https://github.com/ellie/atuin.git
+cd atuin/crates/atuin
+cargo install --path .
+```
+
+然后可直接看 <a href="#shell-plugin">Shell 插件</a>
+
+## <a id="shell-plugin">Shell 插件</a>
+
+安装二进制文件后,需要安装 shell 插件。 如果你使用的是脚本安装,那么这一切应该都会帮您完成!
+
+### zsh
+
+```
+echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
+```
+
+或使用插件管理器:
+
+```
+zinit load ellie/atuin
+```
+
+### bash
+
+我们需要设置一些钩子(hooks), 所以首先需要安装 bash-preexec :
+
+```
+curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
+echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
+```
+
+然后设置 Atuin
+
+```
+echo 'eval "$(atuin init bash)"' >> ~/.bashrc
+```
+
+### fish
+
+添加
+
+```
+atuin init fish | source
+```
+
+到 `~/.config/fish/config.fish` 文件中的 `is-interactive` 块中
+
+### Fig
+
+通过 [Fig](https://fig.io) 可为 zsh, bash 或 fish 一键安装 `atuin` 脚本插件。
+
+<a href="https://fig.io/plugins/other/atuin" target="_blank"><img src="https://fig.io/badges/install-with-fig.svg" /></a>
+
+## ...这个名字是什么意思?
+
+Atuin 以 "The Great A'Tuin" 命名, 这是一只来自 Terry Pratchett 的 Discworld 系列书籍的巨龟。
+
+[English]: ../../README.md
+[简体中文]: ./README.md
diff --git a/docs-i18n/zh-CN/config.md b/docs-i18n/zh-CN/config.md
new file mode 100644
index 00000000..3aa63a9e
--- /dev/null
+++ b/docs-i18n/zh-CN/config.md
@@ -0,0 +1,137 @@
+# 配置
+
+Atuin 维护两个配置文件,存储在 `~/.config/atuin/` 中。 我们将数据存储在 `~/.local/share/atuin` 中(除非被 XDG\_\* 覆盖)。
+
+您可以通过设置更改配置目录的路径 `ATUIN_CONFIG_DIR`。 例如
+
+```
+export ATUIN_CONFIG_DIR = /home/ellie/.atuin
+```
+
+## 客户端配置
+
+```
+~/.config/atuin/config.toml
+```
+
+客户端运行在用户的机器上,除非你运行的是服务器,否则这就是你所关心的。
+
+见 [config.toml](../../atuin-client/config.toml) 中的例子
+
+### `dialect`
+
+这配置了 [stats](stats.md) 命令解析日期的方式。 它有两个可能的值
+
+```
+dialect = "uk"
+```
+
+或者
+
+```
+dialect = "us"
+```
+
+默认为 "us".
+
+### `auto_sync`
+
+配置登录时是否自动同步。默认为 true
+
+```
+auto_sync = true/false
+```
+
+### `sync_address`
+
+同步的服务器地址! 默认为 `https://api.atuin.sh`
+
+```
+sync_address = "https://api.atuin.sh"
+```
+
+### `sync_frequency`
+
+多长时间与服务器自动同步一次。这可以用一种"人类可读"的格式给出。例如,`10s`,`20m`,`1h`,等等。默认为 `1h` 。
+
+如果设置为 `0`,Atuin将在每个命令之后进行同步。一些服务器可能有潜在的速率限制,这不会造成任何问题。
+
+```
+sync_frequency = "1h"
+```
+
+### `db_path`
+
+Atuin SQlite数据库的路径。默认为
+`~/.local/share/atuin/history.db`
+
+```
+db_path = "~/.history.db"
+```
+
+### `key_path`
+
+Atuin加密密钥的路径。默认为
+`~/.local/share/atuin/key`
+
+```
+key = "~/.atuin-key"
+```
+
+### `session_path`
+
+Atuin服务器会话文件的路径。默认为
+`~/.local/share/atuin/session` 。 这本质上只是一个API令牌
+
+```
+key = "~/.atuin-session"
+```
+
+### `search_mode`
+
+使用哪种搜索模式。Atuin 支持 "prefix"(前缀)、"fulltext"(全文) 和 "fuzzy"(模糊)搜索模式。前缀(prefix)搜索语法为 "query\*",全文(fulltext)搜索语法为 "\*query\*",而模糊搜索适用的搜索语法 [如下所述](#fuzzy-search-syntax) 。
+
+默认配置为 "fuzzy"
+
+### `filter_mode`
+
+搜索时要使用的默认过滤器
+
+| 模式 | 描述 |
+|--------------- | --------------- |
+| global (default) | 从所有主机、所有会话、所有目录中搜索历史记录 |
+| host | 仅从该主机搜索历史记录 |
+| session | 仅从当前会话中搜索历史记录 |
+| directory | 仅从当前目录搜索历史记录|
+
+过滤模式仍然可以通过 ctrl-r 来切换
+
+
+```
+search_mode = "fulltext"
+```
+
+#### `fuzzy` 的搜索语法
+
+`fuzzy` 搜索语法的基础是 [fzf 搜索语法](https://github.com/junegunn/fzf#search-syntax) 。
+
+| 内容 | 匹配类型 | 描述 |
+| --------- | -------------------------- | ------------------------------------ |
+| `sbtrkt` | fuzzy-match | 匹配 `sbtrkt` 的项目 |
+| `'wild` | exact-match (quoted) | 包含 `wild` 的项目 |
+| `^music` | prefix-exact-match | 以 `music` 开头的项目 |
+| `.mp3$` | suffix-exact-match | 以 `.mp3` 结尾的项目 |
+| `!fire` | inverse-exact-match | 不包括 `fire` 的项目 |
+| `!^music` | inverse-prefix-exact-match | 不以 `music` 开头的项目 |
+| `!.mp3$` | inverse-suffix-exact-match | 不以 `.mp3` 结尾的项目 |
+
+
+单个条形字符术语充当 OR 运算符。 例如,以下查询匹配以 `core` 开头并以 `go`、`rb` 或 `py` 结尾的条目。
+
+```
+^core go$ | rb$ | py$
+```
+
+## 服务端配置
+
+`// TODO`
diff --git a/docs-i18n/zh-CN/docker.md b/docs-i18n/zh-CN/docker.md
new file mode 100644
index 00000000..64704679
--- /dev/null
+++ b/docs-i18n/zh-CN/docker.md
@@ -0,0 +1,90 @@
+# Docker
+
+Atuin 提供了一个 docker 镜像(image),可以更轻松地将服务器部署为容器(container)。
+
+```sh
+docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start
+```
+
+# Docker Compose
+
+使用已有的 docker 镜像(image)来托管你自己的 Atuin,可以使用提供的 docker-compose 文件来完成
+
+在 docker-compose.yml 同级目录下创建一个 .env 文件,内容如下:
+
+```
+ATUIN_DB_USERNAME=atuin
+# 填写你的密码
+ATUIN_DB_PASSWORD=really-insecure
+```
+
+创建 `docker-compose.yml` 文件:
+
+```yaml
+version: '3.5'
+services:
+ atuin:
+ restart: always
+ image: ghcr.io/ellie/atuin:main
+ command: server start
+ volumes:
+ - "./config:/config"
+ links:
+ - postgresql:db
+ ports:
+ - 8888:8888
+ environment:
+ ATUIN_HOST: "0.0.0.0"
+ ATUIN_OPEN_REGISTRATION: "true"
+ ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin
+ postgresql:
+ image: postgres:14
+ restart: unless-stopped
+ volumes: # 不要删除索引数据库文件的永久存储空间!
+ - "./database:/var/lib/postgresql/data/"
+ environment:
+ POSTGRES_USER: $ATUIN_DB_USERNAME
+ POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD
+ POSTGRES_DB: atuin
+```
+
+使用 `docker-compose` 启动服务:
+
+```sh
+docker-compose up -d
+```
+
+## 使用 systemd 管理你的 atuin 服务器
+
+以下 `systemd` 的配置文件用来管理你的 `docker-compose` 托管服务:
+
+```
+[Unit]
+Description=Docker Compose Atuin Service
+Requires=docker.service
+After=docker.service
+
+[Service]
+# Where the docker-compose file is located
+WorkingDirectory=/srv/atuin-server
+ExecStart=/usr/bin/docker-compose up
+ExecStop=/usr/bin/docker-compose down
+TimeoutStartSec=0
+Restart=on-failure
+StartLimitBurst=3
+
+[Install]
+WantedBy=multi-user.target
+```
+
+启用服务:
+
+```sh
+systemctl enable --now atuin
+```
+
+检查服务是否正常运行:
+
+```sh
+systemctl status atuin
+```
diff --git a/docs-i18n/zh-CN/import.md b/docs-i18n/zh-CN/import.md
new file mode 100644
index 00000000..c1f1d06d
--- /dev/null
+++ b/docs-i18n/zh-CN/import.md
@@ -0,0 +1,25 @@
+# `atuin import`
+
+Atuin 可以从您的“旧”历史文件中导入您的历史记录
+
+`atuin import auto` 将尝试找出你的 shell(通过 \$SHELL)并运行正确的导入器
+
+不幸的是,这些旧文件没有像 Atuin 那样存储尽可能多的信息,因此并非所有功能都可用于导入的数据。
+
+# zsh
+
+```
+atuin import zsh
+```
+
+如果你设置了 HISTFILE,这应该会被选中!如果没有,可以尝试以下操作
+
+```
+HISTFILE=/path/to/history/file atuin import zsh
+```
+
+这支持简单和扩展形式
+
+# bash
+
+TODO
diff --git a/docs-i18n/zh-CN/k8s.md b/docs-i18n/zh-CN/k8s.md
new file mode 100644
index 00000000..ce63aab1
--- /dev/null
+++ b/docs-i18n/zh-CN/k8s.md
@@ -0,0 +1,195 @@
+# Kubernetes
+
+你可以使用 Kubernetes 来托管你的 Atuin 服务器。
+
+为数据库凭证创建 [`secrets.yaml`](../../k8s/secrets.yaml) 文件:
+
+```yaml
+apiVersion: v1
+kind: Secret
+metadata:
+ name: atuin-secrets
+type: Opaque
+stringData:
+ ATUIN_DB_USERNAME: atuin
+ ATUIN_DB_PASSWORD: seriously-insecure
+ ATUIN_HOST: "127.0.0.1"
+ ATUIN_PORT: "8888"
+ ATUIN_OPEN_REGISTRATION: "true"
+ ATUIN_DB_URI: "postgres://atuin:seriously-insecure@localhost/atuin"
+immutable: true
+```
+
+为 Atuin 服务器创建 [`atuin.yaml`](../../k8s/atuin.yaml) 文件:
+
+
+```yaml
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: atuin
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ io.kompose.service: atuin
+ template:
+ metadata:
+ labels:
+ io.kompose.service: atuin
+ spec:
+ containers:
+ - args:
+ - server
+ - start
+ env:
+ - name: ATUIN_DB_URI
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_URI
+ optional: false
+ - name: ATUIN_HOST
+ value: 0.0.0.0
+ - name: ATUIN_PORT
+ value: "8888"
+ - name: ATUIN_OPEN_REGISTRATION
+ value: "true"
+ image: ghcr.io/atuinsh/atuin:latest
+ name: atuin
+ ports:
+ - containerPort: 8888
+ resources:
+ limits:
+ cpu: 250m
+ memory: 1Gi
+ requests:
+ cpu: 250m
+ memory: 1Gi
+ volumeMounts:
+ - mountPath: /config
+ name: atuin-claim0
+ - name: postgresql
+ image: postgres:14
+ ports:
+ - containerPort: 5432
+ env:
+ - name: POSTGRES_DB
+ value: atuin
+ - name: POSTGRES_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_PASSWORD
+ optional: false
+ - name: POSTGRES_USER
+ valueFrom:
+ secretKeyRef:
+ name: atuin-secrets
+ key: ATUIN_DB_USERNAME
+ optional: false
+ resources:
+ limits:
+ cpu: 250m
+ memory: 1Gi
+ requests:
+ cpu: 250m
+ memory: 1Gi
+ volumeMounts:
+ - mountPath: /var/lib/postgresql/data/
+ name: database
+ volumes:
+ - name: database
+ persistentVolumeClaim:
+ claimName: database
+ - name: atuin-claim0
+ persistentVolumeClaim:
+ claimName: atuin-claim0
+---
+apiVersion: v1
+kind: Service
+metadata:
+ labels:
+ io.kompose.service: atuin
+ name: atuin
+spec:
+ type: NodePort
+ ports:
+ - name: "8888"
+ port: 8888
+ nodePort: 30530
+ selector:
+ io.kompose.service: atuin
+---
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+ name: database-pv
+ labels:
+ app: database
+ type: local
+spec:
+ storageClassName: manual
+ capacity:
+ storage: 300Mi
+ accessModes:
+ - ReadWriteOnce
+ hostPath:
+ path: "/Users/firstname.lastname/.kube/database"
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ labels:
+ io.kompose.service: database
+ name: database
+spec:
+ storageClassName: manual
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 300Mi
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ labels:
+ io.kompose.service: atuin-claim0
+ name: atuin-claim0
+spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 10Mi
+```
+
+最后,你可能想让 atuin 使用单独的命名空间(namespace),创建 [`namespace.yaml`](../../k8s/namespaces.yaml) 文件:
+
+```yaml
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: atuin-namespace
+ labels:
+ name: atuin
+```
+
+在企业级安装部署时,你可能想要数据库内容永久存储在集群中,而不是在主机系统中。在上述配置中,`storageClassName` 配置为 `manual`,主机系统的挂载目录配置为 `/Users/firstname.lastname/.kube/database`,请注意,这些配置将会使得数据库内容存储在 kubernetes 集群<i>外部</i>中。
+
+你还应该将 `secrets.yaml` 文件中的 `ATUIN_DB_PASSWORD` 和 `ATUIN_DB_URI` 修改为更安全的加密字符串。
+
+Atuin 运行在主机系统的 `30530` 端口上。这是通过 `nodePort` 属性进行陪你的。Kubernetes 有一个严格规则,即不允许暴露小于 30000 的端口号。为了使客户端能够正常工作,你需要在你的 `config.toml` 文件中设置端口号,例如 `sync_address = "http://192.168.1.10:30530"`。
+
+使用 `kubectl` 部署 Atuin 服务器:
+
+```shell
+ kubectl apply -f ./namespaces.yaml
+ kubectl apply -n atuin-namespace \
+ -f ./secrets.yaml \
+ -f ./atuin.yaml
+```
+
+上面示例同时也位于 atuin 仓库(repository)的 [k8s](../../k8s) 目录下。
diff --git a/docs-i18n/zh-CN/key-binding.md b/docs-i18n/zh-CN/key-binding.md
new file mode 100644
index 00000000..54c68b37
--- /dev/null
+++ b/docs-i18n/zh-CN/key-binding.md
@@ -0,0 +1,48 @@
+# 键位绑定
+
+默认情况下, Atuin 将会重新绑定 <kbd>Ctrl-r</kbd> 和 `up` 键。如果你不想使用默认绑定,请在调用 `atuin init` 之前设置 ATUIN_NOBIND
+
+例如:
+
+```
+export ATUIN_NOBIND="true"
+eval "$(atuin init zsh)"
+```
+
+如果需要,你可以在调用 `atuin init` 之后对 Atuin 重新进行键绑定
+
+# zsh
+
+Atuin 定义了 ZLE 部件 "atuin-search"
+
+```
+export ATUIN_NOBIND="true"
+eval "$(atuin init zsh)"
+
+bindkey '^r' atuin-search
+
+# 取决于终端模式
+bindkey '^[[A' atuin-search
+bindkey '^[OA' atuin-search
+```
+
+# bash
+
+```
+export ATUIN_NOBIND="true"
+eval "$(atuin init bash)"
+
+# 绑定到 ctrl-r, 也可以在这里添加任何其他你想要的绑定方式
+bind -x '"\C-r": __atuin_history'
+```
+
+# fish
+
+```
+set -gx ATUIN_NOBIND "true"
+atuin init fish | source
+
+# 在 normal 和 insert 模式下绑定到 ctrl-r,你也可以在此处添加其他键位绑定
+bind \cr _atuin_search
+bind -M insert \cr _atuin_search
+```
diff --git a/docs-i18n/zh-CN/list.md b/docs-i18n/zh-CN/list.md
new file mode 100644
index 00000000..fe03529f
--- /dev/null
+++ b/docs-i18n/zh-CN/list.md
@@ -0,0 +1,11 @@
+# 历史记录列表
+
+```
+atuin history list
+```
+
+| 参数 | 描述 |
+| -------------- | ----------------------------------------------------- |
+| `--cwd/-c` | 要列出历史记录的目录(默认:所有目录) |
+| `--session/-s` | 只对当前会话启用列表历史(默认:false) |
+| `--human` | 对时间戳和持续时间使用人类可读的格式(默认:false)。 |
diff --git a/docs-i18n/zh-CN/search.md b/docs-i18n/zh-CN/search.md
new file mode 100644
index 00000000..24e320d5
--- /dev/null
+++ b/docs-i18n/zh-CN/search.md
@@ -0,0 +1,37 @@
+# `atuin search`
+
+```
+atuin search <query>
+```
+
+Atuin 搜索还支持带有 `*` 或 `%` 字符的通配符。 默认情况下,会执行前缀搜索(即,所有查询都会自动附加通配符)。
+
+| 参数 | 描述 |
+| ------------------ | ----------------------------------------------------- |
+| `--cwd/-c` | 列出历史记录的目录(默认:所有目录) |
+| `--exclude-cwd` | 不包括在此目录中运行的命令(默认值:none) |
+| `--exit/-e` | 按退出代码过滤(默认:none) |
+| `--exclude-exit` | 不包括以该值退出的命令(默认值:none) |
+| `--before` | 仅包括在此时间之前运行的命令(默认值:none) |
+| `--after` | 仅包含在此时间之后运行的命令(默认值:none) |
+| `--interactive/-i` | 打开交互式搜索 UI(默认值:false) |
+| `--human` | 对时间戳和持续时间使用人类可读的格式(默认值:false) |
+
+## 举例
+
+```
+# 打开交互式搜索 TUI
+atuin search -i
+
+# 打开预装了查询的交互式搜索 TUI
+atuin search -i atuin
+
+# 搜索所有以 cargo 开头且成功退出的命令。
+atuin search --exit 0 cargo
+
+# 从当前目录中搜索所有在2021年4月1日之前运行且失败的命令。
+atuin search --exclude-exit 0 --before 01/04/2021 --cwd .
+
+# 搜索所有以 cargo 开头,成功退出且是在昨天下午3点之后运行的命令。
+atuin search --exit 0 --after "yesterday 3pm" cargo
+```
diff --git a/docs-i18n/zh-CN/server.md b/docs-i18n/zh-CN/server.md
new file mode 100644
index 00000000..4cb39df9
--- /dev/null
+++ b/docs-i18n/zh-CN/server.md
@@ -0,0 +1,75 @@
+# `atuin server`
+
+Atuin 允许您运行自己的同步服务器,以防您不想使用我(ellie)托管的服务器 :)
+
+目前只有一个子命令,`atuin server start`,它将启动 Atuin http 同步服务器。
+
+```
+USAGE:
+ atuin server start [OPTIONS]
+
+FLAGS:
+ --help Prints help information
+ -V, --version Prints version information
+
+OPTIONS:
+ -h, --host <host>
+ -p, --port <port>
+```
+
+## 配置
+
+服务器的配置与客户端的配置是分开的,即使它们是相同的二进制文件。服务器配置可以在 `~/.config/atuin/server.toml` 找到。
+
+它看起来像这样:
+
+```toml
+host = "0.0.0.0"
+port = 8888
+open_registration = true
+db_uri="postgres://user:password@hostname/database"
+```
+
+另外,配置也可以用环境变量来提供。
+
+```sh
+ATUIN_HOST="0.0.0.0"
+ATUIN_PORT=8888
+ATUIN_OPEN_REGISTRATION=true
+ATUIN_DB_URI="postgres://user:password@hostname/database"
+```
+
+### host
+
+Atuin 服务器应该监听的地址
+
+默认为 `127.0.0.1`.
+
+### port
+
+Atuin 服务器应该监听的端口
+
+默认为 `8888`.
+
+### open_registration
+
+如果为 `true` ,atuin 将接受新用户注册。如果您不希望其他人能够使用您的服务器,请在创建自己的账号后将此设置为 `false`
+
+默认为 `false`.
+
+### db_uri
+
+一个有效的 postgres URI, 用户和历史记录数据将被保存到其中。
+
+### path
+
+path 指的是给 server 添加的路由前缀。值为空字符串将不会添加路由前缀。
+
+默认为 `""`
+
+## 容器部署说明
+
+你可以在容器中部署自己的 atuin 服务器:
+
+* 有关 docker 配置的示例,请参考 [docker](docker.md)。
+* 有关 kubernetes 配置的示例,请参考 [k8s](k8s.md)。
diff --git a/docs-i18n/zh-CN/shell-completions.md b/docs-i18n/zh-CN/shell-completions.md
new file mode 100644
index 00000000..0979dcb0
--- /dev/null
+++ b/docs-i18n/zh-CN/shell-completions.md
@@ -0,0 +1,19 @@
+# `atuin gen-completions`
+
+Atuin 的 [Shell 补全](https://en.wikipedia.org/wiki/Command-line_completion) 可以通过 `gen-completions` 子命令指定输出目录和所需的 shell 来生成。
+
+```
+$ atuin gen-completions --shell bash --out-dir $HOME
+
+Shell completion for BASH is generated in "/home/user"
+```
+
+`--shell` 参数的可能值如下:
+
+- `bash`
+- `fish`
+- `zsh`
+- `powershell`
+- `elvish`
+
+此外, 请参阅 [支持的 Shells](./README.md#支持的-Shells).
diff --git a/docs-i18n/zh-CN/stats.md b/docs-i18n/zh-CN/stats.md
new file mode 100644
index 00000000..2bf557ba
--- /dev/null
+++ b/docs-i18n/zh-CN/stats.md
@@ -0,0 +1,35 @@
+# `atuin stats`
+
+Atuin 还可以根据你的历史记录进行计算统计数据 - 目前这只是一个小的基本功能,但更多功能即将推出
+
+```
+$ atuin stats day last friday
+
++---------------------+------------+
+| Statistic | Value |
++---------------------+------------+
+| Most used command | git status |
++---------------------+------------+
+| Commands ran | 450 |
++---------------------+------------+
+| Unique commands ran | 213 |
++---------------------+------------+
+
+$ atuin stats day 01/01/21 # 也接受绝对日期
+```
+
+它还可以计算所有已知历史记录的统计数据。
+
+```
+$ atuin stats all
+
++---------------------+-------+
+| Statistic | Value |
++---------------------+-------+
+| Most used command | ls |
++---------------------+-------+
+| Commands ran | 8190 |
++---------------------+-------+
+| Unique commands ran | 2996 |
++---------------------+-------+
+```
diff --git a/docs-i18n/zh-CN/sync.md b/docs-i18n/zh-CN/sync.md
new file mode 100644
index 00000000..2fd451d8
--- /dev/null
+++ b/docs-i18n/zh-CN/sync.md
@@ -0,0 +1,51 @@
+# `atuin sync`
+
+Atuin 可以将您的历史记录备份到服务器,并使用它来确保多台机器具有相同的 shell 历史记录。 这都是端到端加密的,因此服务器操作员_永远_看不到您的数据!
+
+任何人都可以托管一个服务器(尝试 `atuin server start`,更多文档将在后面介绍),但我(ellie)在 https://api.atuin.sh 上托管了一个。这是默认的服务器地址,可以在 [配置](config.md) 中更改。 同样,我_不能_看到您的数据,也不想。
+
+## 同步频率
+
+除非另有配置,否则同步将自动执行。同步的频率可在 [配置](config.md) 中配置。
+
+## 同步
+
+你可以通过 `atuin sync` 来手动触发同步
+
+## 注册
+
+注册一个同步账号
+
+```
+atuin register -u <USERNAME> -e <EMAIL> -p <PASSWORD>
+```
+
+用户名(USERNAME)必须是唯一的,电子邮件(EMAIL)仅用于重要通知(安全漏洞、服务更改等)
+
+注册后,意味着你也已经登录了 :) 同步应该从这里自动发生!
+
+## 密钥
+
+由于你的数据是加密的, Atuin 将为你生成一个密钥。它被存储在 Atuin 的数据目录里( Linux 上为 `~/.local/share/atuin`)
+
+你也可以通过以下方式获得它
+
+```
+atuin key
+```
+
+千万不要跟任何人分享这个!
+
+## 登录
+
+如果你想登录到一个新的机器上,你需要你的加密密钥(`atuin key`)。
+
+```
+atuin login -u <USERNAME> -p <PASSWORD> -k <KEY>
+```
+
+## 登出
+
+```
+atuin logout
+```