diff --git a/.github/logo-dark.png b/.github/logo-dark.png new file mode 100644 index 0000000..ef781f4 Binary files /dev/null and b/.github/logo-dark.png differ diff --git a/.github/preview.png b/.github/preview.png new file mode 100755 index 0000000..11db800 Binary files /dev/null and b/.github/preview.png differ diff --git a/.gitignore b/.gitignore index 3ba866d..0de2738 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,41 @@ -# build output -dist/ -# generated types -.astro/ - -# dependencies -node_modules/ - -# logs +# Logs +logs +*.log npm-debug.log* yarn-debug.log* yarn-error.log* -pnpm-debug.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +.report/ -# environment variables +# Runtime data +pids +*.pid +*.seed +*.info .env -.env.production +.env.development.local +.env.test.local +.env.production.local +.env.local -# macOS-specific files -.DS_Store +# Next.js +.next/ +out/ + +# Astro +.astro/ + +# Dependencies +node_modules/ +.pnpm-store/ -# swap vim files -*.swp -*.swo +# IDEs and other +.idea/ +.vscode/ +*.sublime-project +*.sublime-workspace +*.DS_Store +Thumbs.db \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/README.md b/README.md index e72fcf7..4b8879b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,40 @@ -# Atuin docs +# Atuin Documentation -This powers docs.atuin.sh +![Atuin Logo Dark](.github/logo-dark.png) -You will find markdown files within src/content/docs +This repository contains the source code for the official Atuin documentation, hosted at [docs.atuin.sh](https://docs.atuin.sh). -Get started with +Atuin is a **magical shell history** tool that replaces your shell's default history with a SQLite database, providing a powerful search interface and optional cloud synchronization. -``` -npm install -npm run dev -``` +![Atuin Preview](.github/preview.png) + +## Project Structure + +The documentation content is primarily written in Markdown (and MDX) and is located in the `src/content/docs` directory. + +## Getting Started (Local Development) + +To set up and run the documentation site locally, follow these steps: + +1. **Clone the repository:** + ```bash + git clone https://github.com/atuinsh/atuin-docs.git + cd atuin-docs + ``` + +2. **Install dependencies:** + ```bash + npm install + ``` + +3. **Start the development server:** + ```bash + npm run dev + ``` + This will start a local development server, usually accessible at `http://localhost:4321`. The site will automatically reload as you make changes to the source files. + +## Contributing + +We welcome contributions to improve the Atuin documentation! If you find an error, want to clarify a section, or add new content, please feel free to open an issue or submit a pull request. + +Before contributing, please ensure your changes align with the existing documentation style and guidelines. diff --git a/astro.config.mjs b/astro.config.mjs index 0c43b73..510964d 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -53,9 +53,47 @@ export default defineConfig({ linkedin: 'https://www.linkedin.com/company/atuin/' }, - defaultLocale: "root", + defaultLocale: "en", locales: { - root: { label: "English", lang: "en" } + en: { label: "English", lang: "en" }, + "pt-br": { + label: "Português (Brasil)", + lang: "pt-BR", + sidebar: [ + { + label: 'Guia', + items: [ + { label: 'Instalação', link: '/pt-br/guide/installation' }, + { label: 'Configurando a sincronização', link: '/pt-br/guide/sync' }, + { label: 'Importar histórico existente', link: '/pt-br/guide/import' }, + { label: 'Uso básico', link: '/pt-br/guide/basic-usage' }, + { label: 'Sincronizando dotfiles', link: '/pt-br/guide/dotfiles' }, + { label: 'Temas', link: '/pt-br/guide/theming' }, + ], + }, + { + label: 'Configuração', + autogenerate: { directory: 'configuration' }, + }, + { + label: 'Referência', + autogenerate: { directory: 'reference' }, + }, + { + label: 'Auto-hospedagem', + items: [ + { label: 'Configuração do servidor', link: '/pt-br/self-hosting/server-setup' }, + { label: 'Uso', link: '/pt-br/self-hosting/usage' }, + { label: 'Docker', link: '/pt-br/self-hosting/docker' }, + { label: 'Kubernetes', link: '/pt-br/self-hosting/kubernetes' }, + { label: 'Systemd', link: '/pt-br/self-hosting/systemd' }, + ], + }, + { label: 'Problemas conhecidos', link: '/pt-br/known-issues' }, + { label: 'Integrações', link: '/pt-br/integrations' }, + { label: 'Perguntas Frequentes', link: '/pt-br/faq' }, + ], + } }, sidebar: [ diff --git a/package-lock.json b/package-lock.json index 547d273..0843611 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "@astrojs/check": "^0.5.6", "@astrojs/starlight": "^0.20.1", "astro": "^4.4.6", + "git-commit-msg-linter": "^5.0.8", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "sharp": "^0.33.2", @@ -3420,6 +3421,43 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commit-msg-linter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/commit-msg-linter/-/commit-msg-linter-1.1.0.tgz", + "integrity": "sha512-fLdMKN12G/f+ZZ+TCRBiK/yon/SmxMIDizJI3PbYSETxq6DBF/zqok3cHPoBCiDysUVyJ8WpMokrP0t34qJm8g==", + "license": "MIT", + "dependencies": { + "did-you-mean": "^0.0.1", + "supports-color": "^8.1.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/commit-msg-linter/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/commit-msg-linter/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", @@ -3573,6 +3611,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/did-you-mean": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/did-you-mean/-/did-you-mean-0.0.1.tgz", + "integrity": "sha512-rKxPpbrHr4/u8VMPde6Z3DhbGoXw7kepHZIU2FGs+IU+LKnhEIlw1cx80FZ7fLruJXDyu0slKMai2FhPRZjwxQ==", + "license": "ISC", + "dependencies": { + "levenshtein": "*", + "underscore": "*" + } + }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -3991,6 +4039,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/git-commit-msg-linter": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/git-commit-msg-linter/-/git-commit-msg-linter-5.0.8.tgz", + "integrity": "sha512-buif1Hfo3barMYIOz9kKbyD6upC4/bQSDVPuGMIXho3bAgaTCG0fPhOVq9JAFf9XAfcpRWqgIK1Q+BB7exNdFA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "commit-msg-linter": "^1.0.0" + }, + "bin": { + "commit-msg-linter": "cli/validate.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4738,6 +4803,15 @@ "node": ">=6" } }, + "node_modules/levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/levenshtein/-/levenshtein-1.0.5.tgz", + "integrity": "sha512-UQf1nnmxjl7O0+snDXj2YF2r74Gkya8ZpnegrUBYN9tikh2dtxV/ey8e07BO5wwo0i76yjOvbDhFHdcPEiH9aA==", + "engines": [ + "node >=0.2.0" + ], + "license": "Public Domain" + }, "node_modules/load-yaml-file": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", @@ -8197,6 +8271,12 @@ "semver": "^7.3.8" } }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", diff --git a/package.json b/package.json index 22aea03..b247a14 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@astrojs/check": "^0.5.6", "@astrojs/starlight": "^0.20.1", "astro": "^4.4.6", + "git-commit-msg-linter": "^5.0.8", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "sharp": "^0.33.2", diff --git a/public/inline.png b/public/inline.png new file mode 100755 index 0000000..5326ac4 Binary files /dev/null and b/public/inline.png differ diff --git a/public/preview.png b/public/preview.png new file mode 100755 index 0000000..11db800 Binary files /dev/null and b/public/preview.png differ diff --git a/src/content/docs/configuration/config.mdx b/src/content/docs/configuration/config.mdx index 2993b50..03fe9b4 100644 --- a/src/content/docs/configuration/config.mdx +++ b/src/content/docs/configuration/config.mdx @@ -233,7 +233,7 @@ Default: `40` Set the maximum number of lines Atuin's interface should take up. -![inline_height](../../../assets/inline.png) +![inline_height](/inline.png) If set to `0`, Atuin will always take up as many lines as available (full screen). @@ -243,7 +243,7 @@ Default: `true` Configure whether or not to show a preview of the selected command. -![show_preview](../../../assets/preview.png) +![show_preview](/preview.png) Useful when the command is longer than the terminal width and is cut off. diff --git a/src/content/docs/pt-br/configuration/config.mdx b/src/content/docs/pt-br/configuration/config.mdx new file mode 100644 index 0000000..99c45cc --- /dev/null +++ b/src/content/docs/pt-br/configuration/config.mdx @@ -0,0 +1,731 @@ +--- +title: Config +--- + +O Atuin mantém dois arquivos de configuração, armazenados em `~/.config/atuin/`. Armazenamos +dados em `~/.local/share/atuin` (a menos que substituído por XDG\_\*). + +O caminho completo para o arquivo de configuração seria `~/.config/atuin/config.toml` + +O local da configuração pode ser substituído por ATUIN_CONFIG_DIR + +### `db_path` + +Padrão: `~/.local/share/atuin/history.db` + +O caminho para o banco de dados SQLite do Atuin. + +```toml +db_path = "~/.history.db" +``` + +### `key_path` + +Padrão: `~/.local/share/atuin/key` + +O caminho para a chave de criptografia do Atuin. + +```toml +key_path = "~/.atuin-key" +``` + +### `session_path` + +Padrão: `~/.local/share/atuin/session` + +O caminho para o arquivo de sessão do servidor Atuin. +Isso é essencialmente apenas um token de API + +```toml +session_path = "~/.atuin-session" +``` + +### `dialect` + +Padrão: `us` + +Isso configura como o comando [stats](/reference/stats/) analisa as datas. Ele tem dois +valores possíveis + +```toml +dialect = "uk" +``` + +ou + +```toml +dialect = "us" +``` + +### `auto_sync` + +Padrão: `true` + +Configura se deve ou não sincronizar automaticamente, quando logado. + +```toml +auto_sync = true/false +``` + +### `update_check` + +Padrão: `true` + +Configura se deve ou não verificar automaticamente por atualizações. + +```toml +update_check = true/false +``` + +### `sync_address` + +Padrão: `https://api.atuin.sh` + +O endereço do servidor para sincronizar! + +```toml +sync_address = "https://api.atuin.sh" +``` + +### `sync_frequency` + +Padrão: `1h` + +Com que frequência sincronizar automaticamente com o servidor. Isso pode ser dado em um +"formato legível por humanos". Por exemplo, `10s`, `20m`, `1h`, etc. + +Se definido como `0`, o Atuin sincronizará após cada comando. Alguns servidores podem potencialmente +limitar a taxa, o que não causará nenhum problema. + +```toml +sync_frequency = "1h" +``` + +### `search_mode` + +Padrão: `fuzzy` + +Qual modo de pesquisa usar. O Atuin suporta "prefix", "fulltext", "fuzzy", e +"skim" modos de pesquisa. + +O modo prefixo pesquisa por "query\*"; o modo fulltext pesquisa por "\*query\*"; +"fuzzy" aplica a [sintaxe de pesquisa fuzzy](#fuzzy-search-syntax); +"skim" aplica a [sintaxe de pesquisa skim](https://github.com/lotabout/skim#search-syntax). + +#### Sintaxe de pesquisa `fuzzy` + +A sintaxe de pesquisa "fuzzy" é baseada na +[sintaxe de pesquisa fzf](https://github.com/junegunn/fzf#search-syntax). + +| Token | Tipo de correspondência | Descrição | +| --------- | -------------------------- | ------------------------------------ | +| `sbtrkt` | correspondência fuzzy | Itens que correspondem a `sbtrkt` | +| `'wild` | correspondência exata (entre aspas) | Itens que incluem `wild` | +| `^music` | correspondência exata de prefixo | Itens que começam com `music` | +| `.mp3 | correspondência exata de sufixo | Itens que terminam com `.mp3` | +| `!fire` | correspondência exata inversa | Itens que não incluem `fire` | +| `!^music` | correspondência exata inversa de prefixo | Itens que não começam com `music` | +| `!.mp3 | correspondência exata inversa de sufixo | Itens que não terminam com `.mp3` | + +Um único termo de barra vertical atua como um operador OR. Por exemplo, a seguinte +consulta corresponde a entradas que começam com `core` e terminam com `go`, `rb`, +ou `py`. + +``` +^core go$ | rb$ | py$ +``` + +### `filter_mode` + +Padrão: `global` + +O filtro padrão a ser usado ao pesquisar + +| Modo | Descrição | +| ---------------- | ------------------------------------------------------------ | +| global (padrão) | Pesquisar histórico de todos os hosts, todas as sessões, todos os diretórios | +| host | Pesquisar histórico apenas deste host | +| session | Pesquisar histórico apenas da sessão atual | +| directory | Pesquisar histórico apenas do diretório atual | +| workspace | Pesquisar histórico apenas do repositório git atual (>17.0) | + +Os modos de filtro ainda podem ser alternados via ctrl-r + +```toml +filter_mode = "host" +``` + +### `search_mode_shell_up_key_binding` + +Versão do Atuin: >= 17.0 + +Padrão: `fuzzy` + +O modo de pesquisa padrão a ser usado ao pesquisar e ser invocado por uma vinculação de tecla de seta para cima do shell. + +Aceita exatamente as mesmas opções que `search_mode` acima + +```toml +search_mode_shell_up_key_binding = "fuzzy" +``` + +Padrão para o valor especificado para `search_mode`. + +### `filter_mode_shell_up_key_binding` + +Padrão: `global` + +O filtro padrão a ser usado ao pesquisar e ser invocado por uma vinculação de tecla de seta para cima do shell. + +Aceita exatamente as mesmas opções que `filter_mode` acima + +```toml +filter_mode_shell_up_key_binding = "session" +``` + +Padrão para o valor especificado para `filter_mode`. + +### `workspaces` + +Versão do Atuin: >= 17.0 + +Padrão: `false` + +Esta flag habilita um modo de filtro pseudo-nomeado "workspace": o filtro é automaticamente +ativado quando você está em um repositório git. + +Com a filtragem de workspace habilitada, o Atuin filtrará os comandos executados em qualquer diretório +dentro de uma árvore de repositório git. + +Os modos de filtro ainda podem ser alternados via ctrl-r. + +### `style` + +Padrão: `compact` + +Qual estilo usar. Valores possíveis: `auto`, `full` e `compact`. + +- `compact`: + +![compact](https://user-images.githubusercontent.com/1710904/161623659-4fec047f-ea4b-471c-9581-861d2eb701a9.png) + +- `full`: + +![full](https://user-images.githubusercontent.com/1710904/161623547-42afbfa7-a3ef-4820-bacd-fcaf1e324969.png) + +Isso significa que o Atuin mudará automaticamente para o modo `compact` quando a janela do terminal for muito curta para o `full` exibir corretamente. + +### `invert` + +Versão do Atuin: >= 17.0 + +Padrão: `false` + +Inverte a UI - coloca a barra de pesquisa no topo. + +```toml +invert = true/false +``` + +### `inline_height` + +Padrão: `40` + +Define o número máximo de linhas que a interface do Atuin deve ocupar. + +![inline_height](/inline.png) + +Se definido como `0`, o Atuin sempre ocupará o máximo de linhas disponíveis (tela cheia). + +### `show_preview` + +Padrão: `true` + +Configura se deve ou não mostrar uma prévia do comando selecionado. + +![show_preview](/preview.png) + +Útil quando o comando é mais longo que a largura do terminal e é cortado. + +### `max_preview_height` + +Versão do Atuin: >= 17.0 + +Padrão: `4` + +Configura a altura máxima da prévia a ser mostrada. + +Útil quando você tem scripts longos em seu histórico que deseja distinguir por mais do que as primeiras linhas. + +### `show_help` + +Versão do Atuin: >= 17.0 + +Padrão: `true` + +Configura se deve ou não mostrar a linha de ajuda, que inclui a versão atual do Atuin (e se uma atualização está disponível), uma dica de mapa de teclas e a quantidade total de comandos em seu histórico. + +### `show_tabs` + +Versão do Atuin: >= 18.0 + +Padrão: `true` + +Configura se deve ou não mostrar abas para pesquisa e inspeção. + +### `exit_mode` + +Padrão: `return-original` + +O que fazer quando a tecla escape é pressionada durante a pesquisa + +| Valor | Comportamento | +| ------------------------- | ---------------------------------------------------------------- | +| return-original (padrão) | Define a linha de comando para o valor que tinha antes de iniciar a pesquisa | +| return-query | Define a linha de comando para a consulta de pesquisa que você digitou até agora | + +Pressionar ctrl+c ou ctrl+d sempre retornará o valor original da linha de comando. + +```toml +exit_mode = "return-query" +``` + +### `history_format` + +Padrão para `history list` + +O formato do histórico permite que você configure o formato padrão da `history list` - que também pode ser especificado com o argumento --format. + +O argumento --format especificado priorizará a configuração quando ambos estiverem presentes. + +Mais sobre [history list](https://docs.atuin.sh/reference/list/) + +### `history_filter` + +O filtro de histórico permite que você exclua comandos do rastreamento de histórico - talvez você queira manter TODOS os seus `curl` comandos totalmente fora do seu histórico de shell, ou talvez apenas alguns que correspondam a um padrão. + +Isso suporta expressões regulares, então você pode esconder praticamente o que quiser! + +```toml +## Observe que essas expressões regulares não são ancoradas, ou seja, se não começarem +## com ^ ou terminarem com $, elas corresponderão em qualquer lugar do comando. +history_filter = [ + "^secret-cmd", + "^innocuous-cmd .*--secret=.+" +] +``` + +### `cwd_filter` + +O filtro cwd permite que você exclua diretórios do rastreamento de histórico. + +Isso suporta expressões regulares, então você pode esconder praticamente o que quiser! + +```toml +## Observe que essas expressões regulares não são ancoradas, ou seja, se não começarem +## com ^ ou terminarem com $, elas corresponderão em qualquer lugar do comando. +# cwd_filter = [ +# "^/very/secret/directory", +# ] +``` + +Depois de atualizar esse parâmetro, você pode executar [o comando prune](/reference/prune/) para remover entradas de histórico antigas que correspondam aos novos filtros. + +### `store_failed` + +Versão do Atuin: >= 18.3.0 + +Padrão: `true` + +```toml +store_failed = true +``` + +Configura se deve ou não armazenar comandos que falharam (aqueles com status de saída diferente de zero). + +### `secrets_filter` + +Versão do Atuin: >= 17.0 + +Padrão: `true` + +```toml +secrets_filter = true +``` + +Isso compara o histórico com um conjunto de regex padrão e não o salvará se houver uma correspondência. Os padrões incluem + +1. ID da chave AWS +2. PAT do Github (antigo e novo) +3. Tokens OAuth do Slack (bot, usuário) +4. Webhooks do Slack +5. Chaves de teste/produção do Stripe +6. Comando de login do Atuin +7. Padrões de variáveis de ambiente de nuvem (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AZURE_STORAGE_CLASS_KEY`, `GOOGLE_SERVICE_ACCOUNT_KEY`) +8. Tokens de autenticação do Netlify +9. PAT do Npm +10. PAT do Pulumi + +### Atalhos de teclado Ctrl-n do macOS + +Padrão: `true` + +O macOS não possui uma tecla Alt, embora os emuladores de terminal possam frequentemente ser configurados para mapear a tecla Option para ser usada como Alt. _No entanto_, remapear Option dessa forma pode impedir a digitação de alguns caracteres, como usar Option-3 para digitar `#` no layout inglês britânico. Para tal cenário, defina a opção `ctrl_n_shortcuts` como `true` em seu arquivo de configuração para substituir os atalhos Alt-0 a Alt-9 por Ctrl-0 a Ctrl-9 em vez disso: + +```toml +# Usar Ctrl-0 .. Ctrl-9 em vez de Alt-0 .. Alt-9 atalhos de UI +ctrl_n_shortcuts = true +``` + +### `network_timeout` + +Versão do Atuin: >= 18.0 + +Padrão: `30` + +A quantidade máxima de tempo (em segundos) para esperar por uma solicitação de rede. Se alguma +operação com um servidor de sincronização demorar mais do que isso, o código falhará - +rather than wait indefinitely. + +### `network_connect_timeout` + +Versão do Atuin: >= 18.0 + +Padrão: `5` + +O tempo máximo (em segundos) que esperamos por uma conexão para ser estabelecida com um +servidor de sincronização remoto. Qualquer tempo maior que isso e a solicitação falhará. + +### `local_timeout` + +Versão do Atuin: >= 18.0 + +Padrão: `5` + +Tempo limite (em segundos) para adquirir uma conexão de banco de dados local (sqlite). + +### `enter_accept` + +Versão do Atuin: >= 17.0 + +Padrão: `false` + +Não suportado pelo NuShell atualmente + +Quando definido como true, o Atuin padronizará a execução imediata de um comando, em vez de +o usuário ter que pressionar enter duas vezes. Pressionar tab retornará ao +shell e dará ao usuário a chance de editar. + +Isso tecnicamente padroniza para true para novos usuários, mas false para usuários existentes. Nós +definimos `enter_accept = true` no arquivo de configuração padrão. Isso provavelmente +mudará para ser o padrão para todos em uma versão posterior. + +### `keymap_mode` + +Versão do Atuin: >= 18.0 + +Padrão: `emacs` + +O modo de mapa de teclas inicial da pesquisa interativa do Atuin (por exemplo, iniciada pelas +vinculações de teclas nos shells). Existem quatro valores suportados: `"emacs"`, +`"vim-normal"`, `"vim-insert"`, e `"auto"`. O modo de mapa de teclas `"emacs"` é o +mais básico. No modo de mapa de teclas `"vim-normal"`, você pode usar k +e j para navegar na lista de histórico como no Vim, enquanto pressionar +i muda o modo de mapa de teclas para `"vim-insert"`. No modo de mapa de teclas `"vim-insert"`, +você pode pesquisar uma string como no modo de mapa de teclas `"emacs"`, enquanto pressionar + Esc + muda o modo de mapa de teclas para `"vim-normal"`. Quando definido como `"auto"`, o modo de mapa de teclas inicial +é determinado automaticamente com base no mapa de teclas do shell que acionou +a pesquisa do Atuin. `"auto"` não é suportado pelo NuShell atualmente, onde ele +sempre acionará a pesquisa do Atuin com o modo de mapa de teclas `"emacs"`. + +### `keymap_cursor` + +Versão do Atuin: >= 18.0 + +Padrão: `(dicionário vazio)` + +O estilo do cursor do terminal associado a cada modo de mapa de teclas na pesquisa do Atuin. +Isso é especificado por um dicionário cujas chaves e valores são os +nomes dos mapas de teclas e os estilos do cursor, respectivamente. Uma chave especifica um dos +mapas de teclas de `emacs`, `vim_insert`, e `vim_normal`. Um valor é um dos +estilos de cursor, `default` ou `{blink,steady}-{block,underline,bar}`. O +seguinte é um exemplo. + +```toml +keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" } +``` + +Se o estilo do cursor for especificado, o estilo do cursor do terminal será alterado para o +especificado quando a pesquisa do Atuin iniciar com ou mudar para o +modo de mapa de teclas correspondente. Além disso, o estilo do cursor do terminal é redefinido para o +associado ao modo de mapa de teclas correspondente ao mapa de teclas do shell na +terminação da pesquisa do Atuin. + +### `prefers_reduced_motion` + +Versão do Atuin: >= 18.0 + +Padrão: `false` + +Habilite isso, e o Atuin reduzirá o movimento na TUI o máximo possível. Usuários +com sensibilidade ao movimento podem achar os carimbos de data/hora de atualização ao vivo distrativos. + +Alternativamente, defina a variável de ambiente NO_MOTION + +## Estatísticas + +Esta seção da configuração do cliente é especificamente para configurar os cálculos de estatísticas do Atuin. + +``` +[stats] +common_subcommands = [...] +common_prefix = [...] +``` + +### `common_subcommands` + +Padrão: + +```toml +common_subcommands = [ + "apt", + "cargo", + "composer", + "dnf", + "docker", + "git", + "go", + "ip", + "kubectl", + "nix", + "nmcli", + "npm", + "pecl", + "pnpm", + "podman", + "port", + "systemctl", + "tmux", + "yarn", +] +``` + +Configura comandos onde devemos considerar o subcomando como parte das estatísticas. Por exemplo, considere `kubectl get` em vez de apenas `kubectl`. + +### `common_prefix` + +Versão do Atuin: >= 17.1 + +Padrão: + +```toml +common_prefix = [ + "sudo", +] +``` + +Configura comandos que devem ser totalmente removidos dos cálculos de estatísticas. Por exemplo, 'sudo' deve ser ignorado. + +## sincronização + +Desenvolvemos uma nova versão de sincronização, que é mais rápida e eficiente que a versão original. + +Atualmente, é o padrão para novas instalações, mas não para usuários existentes. Isso mudará em uma versão posterior. + +Para habilitar a sincronização v2, adicione o seguinte à sua configuração: + +```toml +[sync] +records = true +``` + +## `dotfiles` + +Versão do Atuin: >= 18.1 + +Padrão: `false` + +Para habilitar a sincronização de aliases de shell entre hosts. Requer `sync` habilitado. + +Adicione a nova seção ao final do seu arquivo de configuração, para cada máquina que você usa o Atuin. + +```toml +[dotfiles] +enabled = true +``` + +Nota: você precisará ter a sincronização v2 habilitada. Veja a seção acima. + +Gerencie aliases usando as opções de linha de comando + +``` +# Alias 'k' para 'kubectl' +atuin dotfiles alias set k kubectl + +# Listar todos os aliases +atuin dotfiles alias list + +# Excluir um alias +atuin dotfiles alias delete k +``` + +Depois de definir um alias, você precisará reiniciar seu shell ou carregar o arquivo init para que a alteração tenha efeito. + +## chaves + +Esta seção da configuração do cliente é especificamente para configurar as configurações relacionadas a chaves. + +``` +[keys] +scroll_exits = [...] +prefix = 'a' +``` + +### `scroll_exits` + +Versão do Atuin: >= 18.1 + +Padrão: `true` + +Configura se a TUI sai, quando rolada além da última ou primeira entrada. + +### `prefix` + +Versão do Atuin: > 18.3 + +Padrão: `a` + +Qual chave usar como prefixo + +## prévia + +Esta seção da configuração do cliente é especificamente para configurar as configurações relacionadas à prévia. +(No futuro, as outras 2 configurações de prévia serão movidas para cá.) + +``` +[preview] +strategy = [...] +``` + +### `strategy` + +Versão do Atuin: >= 18.3 + +Padrão: `auto` + +Qual estratégia de prévia é usada para calcular a altura da prévia. Respeita `max_preview_height`. + +| Valor | A altura da prévia é calculada a partir do comprimento do | +| -------------- | --------------------------------------------------- | +| auto (padrão) | comando selecionado | +| static | comando mais longo no conjunto de resultados atual | +| fixed | usar `max_preview_height` como valor fixo | + +Ao usar `auto`, uma prévia é mostrada, se o comando for mais longo que a largura do terminal. + +## Daemon + +Versão do Atuin: >= 18.3 + +Padrão: `false` + +Habilita o daemon em segundo plano + +Adicione a nova seção ao final do seu arquivo de configuração + +```toml +[daemon] +enabled = true +``` + +### sync_frequency + +Padrão: `300` + +Com que frequência o daemon deve sincronizar, em segundos + +```toml +sync_frequency = 300 +``` + +### socket_path + +Padrão: + +```toml +socket_path = "~/.local/share/atuin/atuin.sock" +``` + +Onde vincular um socket unix para comunicação cliente -> daemon + +Se XDG_RUNTIME_DIR estiver disponível, então usamos este diretório em vez disso. + +### systemd_socket + +Padrão `false` + +Use um socket passado via protocolo de ativação de socket systemd em vez do caminho + +```toml +systemd_socket = false +``` + +### tcp_port + +Padrão: `8889` + +A porta a ser usada para comunicação cliente -> daemon. Usado apenas em sistemas não-unix. + +```toml +tcp_port = 8889 +``` + +## tema + +Versão do Atuin: >= 18.4 + +O tema a ser usado para mostrar a interface do terminal. + +```toml +[theme] +name = "" +debug = false +max_depth = 10 +``` + +### `name` + +Padrão: `""` + +Um nome de tema que deve estar presente como um tema embutido (uma string vazia para o padrão, +`autumn` ou `marine`), ou encontrado no diretório de temas, com o sufixo `.toml`. +Por padrão, este é `~/.config/atuin/themes/`, mas pode ser substituído pela +variável de ambiente `ATUIN_THEME_DIR`. + +```toml +name = "meu-tema" +``` + +### `debug` + +Padrão: `false` + +Informações de saída sobre por que um tema não será carregado. Independente de outros níveis de log, +pois pode fazer com que dados do arquivo de tema sejam impressos sem filtro no +terminal. + +```toml +debug = false +``` + +### `max_depth` + +Padrão: 10 + +Número de níveis de "parentesco" que serão percorridos para um tema. Isso não deve +precisar ser adicionado ou alterado em uso normal. + +```toml +max_depth = 10 +``` \ No newline at end of file diff --git a/src/content/docs/pt-br/configuration/key-binding.mdx b/src/content/docs/pt-br/configuration/key-binding.mdx new file mode 100644 index 0000000..7778c2f --- /dev/null +++ b/src/content/docs/pt-br/configuration/key-binding.mdx @@ -0,0 +1,174 @@ +--- +title: Vinculação de Teclas +--- + +O Atuin ainda não possui personalização completa de vinculação de teclas, embora permitamos algumas alterações. + +## Modo de filtro de seta para cima personalizado +Pode ser útil usar um filtro ou modo de pesquisa diferente na seta para cima. Por exemplo, você pode usar ctrl-r para pesquisar globalmente, mas a seta para cima para pesquisar o histórico apenas do diretório atual. +Defina sua configuração assim: + +```bash +filter_mode_shell_up_key_binding = "directory" # ou global, host, directory, etc +``` + +## Desabilitar seta para cima +Nossa vinculação padrão da seta para cima pode ser um pouco controversa. Algumas pessoas adoram, algumas pessoas odeiam. Muitas pessoas que a acharam um pouco estranha no início, desde então, passaram a amá-la, então experimente! +Torna-se muito mais poderosa se você considerar vincular um modo de filtro diferente à seta para cima. Por exemplo, em "para cima", o Atuin pode padronizar a pesquisa de todo o histórico apenas para o diretório atual, enquanto ctrl-r pesquisa o histórico globalmente. Veja a [configuração](/configuration/config/#filter_mode_shell_up_key_binding) para mais. + +Caso contrário, se você não gostar, é fácil desabilitar. Você também pode desabilitar a seta para cima ou as vinculações Ctrl-r individualmente, passando `--disable-up-arrow` ou `--disable-ctrl-r` para a chamada `atuin init` no arquivo de configuração do seu shell: + +Um exemplo para zsh: + +```bash +# Vincular ctrl-r mas não a seta para cima +eval "$(atuin init zsh --disable-up-arrow)" + +# Vincular a seta para cima mas não ctrl-r +eval "$(atuin init zsh --disable-ctrl-r)" +``` + + +If you don't want any of the keys to be bound, pass both `--disable` arguments, or set the `ATUIN_NOBIND` environment variable to any value before the `atuin init` call: + +```bash +## Não vincular nenhuma tecla +# Ou: +eval "$(atuin init zsh --disable-up-arrow --disable-ctrl-r)" + +# Ou: +export ATUIN_NOBIND="true" +eval "$(atuin init zsh)" +``` + +Você pode então optar por vincular o Atuin se necessário, faça isso após a chamada para init. + +## Comportamento da tecla Enter +Por padrão, a tecla `enter` executará diretamente o comando selecionado em vez de permitir que você o edite como a tecla `tab`. Se você quiser alterar esse comportamento, defina `enter_accept = false` em sua configuração. Para mais detalhes: [enter_accept](https://docs.atuin.sh/configuration/config/#enter_accept). + +## Atalhos de teclado Ctrl-n +O macOS não possui uma tecla Alt, embora os emuladores de terminal possam frequentemente ser configurados para mapear a tecla Option para ser usada como Alt. *No entanto*, remapear Option dessa forma pode impedir a digitação de alguns caracteres, como usar Option-3 para digitar `#` no layout inglês britânico. Para tal cenário, defina a opção `ctrl_n_shortcuts` como `true` em seu arquivo de configuração para substituir os atalhos Alt-0 a Alt-9 por Ctrl-0 a Ctrl-9 em vez disso: +``` +# Usar Ctrl-0 .. Ctrl-9 em vez de Alt-0 .. Alt-9 atalhos de UI +ctrl_n_shortcuts = true +``` + +## zsh +Se você quiser personalizar ainda mais suas vinculações, é possível fazê-lo com a configuração de shell personalizada: +O Atuin define os widgets ZLE "atuin-search" e "atuin-up-search". O último +pode ser usado para as vinculações de teclas para a tecla up e teclas semelhantes. +Nota: em vez disso, use os nomes dos widgets "_atuin_search_widget" e "_atuin_up_search_widget", respectively, in `atuin < 18.0` + +```sh +export ATUIN_NOBIND="true" +eval "$(atuin init zsh)" + +bindkey '^r' atuin-search + +# vincular à tecla para cima, que depende do modo do terminal +bindkey '^[[A' atuin-up-search +bindkey '^[[OA' atuin-up-search +``` + +Para as vinculações de teclas no modo vi, "atuin-search-viins", "atuin-search-vicmd", +"atuin-up-search-viins", e "atuin-up-search-vicmd" (`atuin >= 18.0`) podem ser +usados em combinação com a configuração["keymap\_mode"](https://docs.atuin.sh/configuration/config/#keymap_mode) +(`atuin >= 18.0`) para iniciar a pesquisa do Atuin nos respectivos modos de mapa de teclas. + +## bash + +O Atuin fornece uma função de shell vinculável "`__atuin_history`" para vinculações de teclas em Bash. A flag `--shell-up-key-binding` pode ser opcionalmente especificada para o primeiro argumento para vinculações de teclas para a tecla up ou teclas semelhantes. + +```bash +export ATUIN_NOBIND="true" +eval "$(atuin init bash)" + +# vincular a ctrl-r, adicione quaisquer outras vinculações que você queira aqui também +bind -x '"\C-r": __atuin_history' + +# vincular à tecla para cima, que depende do modo do terminal +bind -x '"\e[A": __atuin_history --shell-up-key-binding' +bind -x '"\eOA": __atuin_history --shell-up-key-binding' +``` + +Para as vinculações de teclas no modo de edição `vi`, as opções `--keymap-mode=vim-insert` e `--keymap-mode=vim-normal` (`atuin >= 18.0`) podem ser adicionalmente especificadas para a função de shell `__atuin_history` em combinação com a configuração["keymap\_mode"](https://docs.atuin.sh/configuration/config/#keymap_mode) (`atuin >= 18.0`) para iniciar a pesquisa do Atuin nos respectivos modos de mapa de teclas. + +## fish +Edite as vinculações de teclas no shell FISH adicionando o seguinte a ~/.config/fish/config.fish + +```bash +set -gx ATUIN_NOBIND "true" +atuin init fish | source + +# vincular a ctrl-r nos modos normal e de inserção, adicione quaisquer outras vinculações que você queira aqui também +bind \cr _atuin_search +bind -M insert \cr _atuin_search +``` + +Para a vinculação da tecla up, `_atuin_bind_up` pode ser usado em vez de `_atuin_search`. + +Adicionar a útil vinculação de tecla alternativa de CTRL-up é complicado e determinado pela aderência dos terminais ao terminfo(5). + +## nu +```nu +$env.ATUIN_NOBIND = true +atuin init nu | save -f ~/.local/share/atuin/init.nu #certifique-se de ter criado o diretório antes com `mkdir ~/.local/share/atuin/init.nu` +source ~/.local/share/atuin/init.nu + +#vincular a ctrl-r nos modos emacs, vi_normal e vi_insert, adicione quaisquer outras vinculações que você queira aqui também +$env.config = ($env.config | upsert keybindings ($env.config.keybindings| append { + name: atuin + modifier: control + keycode: char_r + mode: [emacs, vi_normal, vi_insert] + event: { send: execute_host_command cmd: (_atuin_search_cmd) } +})) +``` + +## Atalhos da UI do Atuin + +| Atalho | Ação | +| ----------------------------------------- | ------------------------------------------------------------------------- | +| `enter` | Executar item selecionado | +| `tab` | Selecionar item e editar | +| ctrl + r | Alternar entre os modos de filtro | +| ctrl + s | Alternar entre os modos de pesquisa | +| alt + 1 a alt + 9 | Selecionar item pelo número localizado próximo a ele | +| ctrl + c / ctrl + d / ctrl + g / esc | Retornar original | +| ctrl + y | Copiar item selecionado para a área de transferência | +| ctrl + ⬅︎ / alt + b | Mover o cursor para a palavra anterior | +| ctrl + ➡️ / alt + f | Mover o cursor para a próxima palavra | +| ctrl + b / ⬅︎ | Mover o cursor para a esquerda | +| ctrl + f / ➡️ | Mover o cursor para a direita | +| ctrl + a / home | Mover o cursor para o início da linha | +| ctrl + e / end | Mover o cursor para o final da linha | +| ctrl + backspace / ctrl + alt + backspace | Remover a palavra anterior / remover a palavra logo antes do cursor | +| ctrl + delete / ctrl + alt + delete | Remover a próxima palavra ou a palavra logo após o cursor | +| ctrl + w | Remover a palavra antes do cursor, mesmo que ela se estenda pelas fronteiras da palavra | +| ctrl + u | Limpar a linha atual | +| ctrl + n / ctrl + j / | Selecionar o próximo item na lista | +| ctrl + p / ctrl + k / | Selecionar o item anterior na lista | +| ctrl + o | Abrir o inspetor | +| page down | Rolar os resultados da pesquisa uma página para baixo | +| page up | Rolar os resultados da pesquisa uma página para cima | +| (sem entrada selecionada) | Retornar original ou retornar consulta dependendo das [configurações](/configuration/config/#exit_mode) | +| | Selecionar o próximo item na lista | + +### Modo Vim +Se [o vim estiver habilitado na configuração](https://docs.atuin.sh/configuration/config/#vim), as seguintes vinculações de teclas são habilitadas: + +| Atalho | Modo | Ação | +| -------- | ------ | ------------------------------------- | +| k | Normal | Seleciona o próximo item na lista | +| j | Normal | Seleciona o item anterior na lista | +| i | Normal | Entra no modo de inserção | +| Esc | Insert | Entra no modo normal | + +### Inspetor +Abra o inspetor com ctrl-o + +| Atalho | Ação | +| -------- | --------------------------------------------- | +| Esc | Fechar o inspetor, retornando ao shell | +| ctrl+o | Fechar o inspetor, retornando à visualização de pesquisa | +| ctrl+d | Excluir o item inspecionado do histórico | diff --git a/src/content/docs/pt-br/faq.mdx b/src/content/docs/pt-br/faq.mdx new file mode 100644 index 0000000..c6dda71 --- /dev/null +++ b/src/content/docs/pt-br/faq.mdx @@ -0,0 +1,39 @@ +--- +title: Perguntas Frequentes +--- + +## Como removo a vinculação padrão da seta para cima? + +Abra o arquivo de configuração do seu shell, encontre a linha que contém `atuin init`. + +Adicione `--disable-up-arrow` + +Exemplo: + +``` +eval "$(atuin init zsh --disable-up-arrow)" +``` + +Veja [vinculação de teclas](https://docs.atuin.sh/configuration/key-binding/) para mais informações. + +## Como edito um comando em vez de executá-lo imediatamente? + +Pressione tab! Por padrão, enter executará um comando, e tab o inserirá pronto para edição. + +Você pode fazer com que `enter` edite um comando colocando `enter_accept = false` no seu arquivo de configuração (~/.config/atuin/config.toml). + +## Como excluo minha conta? + +**Atenção:** Este comando não pede confirmação. + +``` +atuin account delete +``` + +Isso excluirá sua conta e todo o histórico do servidor remoto. Não excluirá seus dados locais. + +## Esqueci minha senha! Como posso redefini-la? + +Ainda não temos um sistema de redefinição de senha, pois não verificamos e-mails. Isso pode mudar em breve, mas, por enquanto, desde que você ainda esteja logado em pelo menos uma conta, é seguro excluir e recriar a conta. + +Estamos cientes de que isso não é o ideal. \ No newline at end of file diff --git a/src/content/docs/pt-br/guide/basic-usage.mdx b/src/content/docs/pt-br/guide/basic-usage.mdx new file mode 100644 index 0000000..60252fd --- /dev/null +++ b/src/content/docs/pt-br/guide/basic-usage.mdx @@ -0,0 +1,66 @@ +--- +title: Uso Básico +--- + +Agora que você está todo configurado e funcionando, aqui está um rápido passo a passo de como você pode usar o Atuin da melhor forma. + +## O que o Atuin registra? + +Enquanto você trabalha, o Atuin registra: + +1. O comando que você executa +2. O diretório onde você o executou +3. A hora em que você o executou e quanto tempo levou para ser executado +4. O código de saída do comando +5. O nome do host + usuário da máquina +6. A sessão do shell em que você o executou + +## Abrindo e usando a TUI + +A qualquer momento, você pode abrir a TUI com as teclas de atalho padrão da seta para cima, ou control-R. + +Uma vez na TUI, pressione enter para executar imediatamente um comando, ou pressione tab para inseri-lo em seu shell para edição. + +Enquanto pesquisando na TUI, você pode ajustar o "modo de filtro" pressionando repetidamente ctrl-r. O Atuin pode filtrar por: + +1. Todos os hosts +2. Apenas sua máquina local +3. Apenas o diretório atual +4. Apenas a sessão atual do shell + +## Ajuste de configuração comum + +Para um conjunto completo de valores de configuração, consulte a [página de referência de configuração](/configuration/config/) + +O arquivo de configuração padrão está localizado em `~/.config/atuin/config.toml` + +### Atalhos de teclado + +Temos uma página completa dedicada aos ajustes de atalhos de teclado, há uma série de opções aqui! Incluindo desabilitar a seta para cima se você não gostar. + +Leia mais [aqui](/configuration/key-binding/) + +### Enter para executar + +Você pode preferir que o Atuin sempre insira o comando selecionado para edição. Para configurar isso, defina + +``` +enter_accept = false +``` + +em seu arquivo de configuração. + +### Janela inline + +Se você achar a TUI em tela cheia opressora ou demais, você pode ajustá-la assim: + +```sh +# altura da janela de pesquisa +inline_height = 40 +``` + +Você também pode preferir o modo de UI compacta + +```sh +style = "compact" +``` diff --git a/src/content/docs/pt-br/guide/dotfiles.mdx b/src/content/docs/pt-br/guide/dotfiles.mdx new file mode 100644 index 0000000..391e1d1 --- /dev/null +++ b/src/content/docs/pt-br/guide/dotfiles.mdx @@ -0,0 +1,142 @@ +--- +title: Sincronizando dotfiles +--- + +Embora o Atuin tenha começado como uma ferramenta para sincronizar e pesquisar o histórico do shell, estamos +construindo ferramentas para sincronizar dotfiles entre máquinas, e torná-los mais fáceis +de trabalhar. + +No momento, suportamos o gerenciamento e a sincronização de aliases de shell e variáveis de ambiente - com mais +novidades em breve. + +Os seguintes shells são suportados: + +- zsh +- bash +- fish +- xonsh + +Nota: O Atuin gerencia sua configuração internamente, então, uma vez instalado, você +não precisa mais editar seus arquivos de configuração manualmente. + +# Configuração necessária + +Uma vez que o Atuin esteja configurado e instalado, o seguinte é necessário no seu arquivo de configuração (`~/.config/atuin/config.toml`) + +```toml +[dotfiles] +enabled = true +``` + +Em uma versão posterior, isso será habilitado por padrão. + + +:::caution +Nota: Se você ainda não configurou a sincronização v2, por favor, adicione também para o mesmo arquivo de configuração. + +```toml +[sync] +records = true +``` +::: + +# Uso + +## Aliases + +Depois de criar ou excluir um alias, lembre-se de reiniciar seu shell! + +### Criando um alias + +```sh +atuin dotfiles alias set NOME 'COMANDO' +``` + +Por exemplo, para criar um alias `k` para ser `kubectl` + + +```sh +atuin dotfiles alias set k 'kubectl' +``` + +ou para criar um alias `ll` para ser `ls -lah` + +```sh +atuin dotfiles alias set ll 'ls -lah' +``` + +### Excluindo um alias + +Excluir um alias é tão simples quanto: + +```sh +atuin dotfiles alias delete NOME +``` + +Por exemplo, para excluir o alias `k` acima: + +```sh +atuin dotfiles alias delete k +``` + +### Listando aliases + +You can list all aliases with: + +```sh +atuin dotfiles alias list +``` + +## Variáveis de ambiente + +Depois de criar ou excluir uma variável de ambiente, lembre-se de reiniciar seu shell! + +### Criando uma variável + +```sh +atuin dotfiles var set NOME 'valor' +``` + +Por exemplo, para definir `FOO` como `bar` + + +```sh +atuin dotfiles var set FOO 'bar' +``` + +As variáveis são exportadas por padrão, mas você pode criar uma variável de shell assim: + +```sh +atuin dotfiles var set -n foo 'bar' +``` + + +### Excluindo uma variável + +Excluir uma variável é tão simples quanto: + +```sh +atuin dotfiles var delete NOME +``` + +Por exemplo, para excluir a variável `FOO` acima: + +```sh +atuin dotfiles var delete FOO +``` + +### Listando variáveis + +You can list all vars with: + +```sh +atuin dotfiles var list +``` + +## Sincronizando e fazendo backup de dotfiles +Se você [configurou a sincronização](/guide/sync), então executar fará backup da sua configuração para o servidor e a sincronizará entre as máquinas. + +```sh +atuin sync +``` + diff --git a/src/content/docs/pt-br/guide/getting-started.mdx b/src/content/docs/pt-br/guide/getting-started.mdx new file mode 100644 index 0000000..cc646e1 --- /dev/null +++ b/src/content/docs/pt-br/guide/getting-started.mdx @@ -0,0 +1,56 @@ +--- +title: "Primeiros Passos" +--- + +import {Tabs, TabItem, LinkCard} from "@astrojs/starlight/components"; + +O Atuin substitui seu histórico de shell existente por um banco de dados SQLite, e registra +contexto adicional para seus comandos. Com esse contexto, o Atuin oferece uma pesquisa mais rápida +e melhor do seu histórico de shell. + +Além disso, o Atuin (opcionalmente) sincroniza seu histórico de shell entre todas as suas +máquinas. Totalmente criptografado de ponta a ponta, é claro. + +Você pode usar o servidor que eu hospedo, ou hospedar o seu próprio! Ou simplesmente não usar a sincronização. +Como toda a sincronização de histórico é criptografada, eu não conseguiria acessar seus dados mesmo se quisesse. +E eu **realmente** não quero. + +Se você tiver algum problema, por favor, abra um [problema](https://github.com/ellie/atuin/issues) ou entre em contato em nosso [Discord](https://discord.gg/Fq8bJSKPHh)! + +## Shells Suportados + +- zsh +- bash +- fish +- nushell +- xonsh + +# Início Rápido + +Por favor, tente ler este guia, mas se você estiver com pressa e quiser começar rapidamente: + +``` +bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh) + +atuin register -u -e +atuin import auto +atuin sync +``` + +Agora reinicie seu shell! + +Sempre que você pressionar ctrl-r ou seta para cima, você verá a interface de pesquisa do Atuin. Digite sua +consulta, enter para executar. Se você quiser selecionar um comando sem executá-lo, +pressione tab. + +Você pode querer configurar uma [janela inline](https://atuin.sh/docs/config/#inline_height), ou [desabilitar as vinculações da seta para cima](https://atuin.sh/docs/key-binding#disable-up-arrow). + +Nota: A sincronização e o registro acima são totalmente opcionais. Se você quiser usar o Atuin offline, você pode executar + +```sh +bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh) + +atuin import auto +``` + +Seu histórico de shell será apenas local, não terá backup, e não será sincronizado entre os dispositivos. diff --git a/src/content/docs/pt-br/guide/import.mdx b/src/content/docs/pt-br/guide/import.mdx new file mode 100644 index 0000000..4832c55 --- /dev/null +++ b/src/content/docs/pt-br/guide/import.mdx @@ -0,0 +1,21 @@ +--- +title: Importar histórico existente +--- + +O Atuin usa um plugin de shell para garantir que capturemos o novo histórico de shell. Mas para +o histórico mais antigo, você precisará importá-lo + +Isso importará o histórico para o seu shell atual: + +```sh +atuin import auto +``` + +Alternativamente, você pode especificar o shell assim: + +```sh +atuin import bash +atuin import zsh # etc +``` + +Seu arquivo de histórico de shell antigo continuará sendo atualizado, independentemente do uso do Atuin. diff --git a/src/content/docs/pt-br/guide/installation.mdx b/src/content/docs/pt-br/guide/installation.mdx new file mode 100644 index 0000000..4ad6462 --- /dev/null +++ b/src/content/docs/pt-br/guide/installation.mdx @@ -0,0 +1,230 @@ +--- +title: Instalação +--- + +import {Aside, Tabs, TabItem, LinkCard} from "@astrojs/starlight/components"; + +## Abordagem de instalação recomendada + +Vamos começar! Primeiro, você vai querer instalar o Atuin. A abordagem recomendada +é usar o script de instalação, que lida automaticamente com a +instalação do Atuin, incluindo os requisitos para o seu ambiente. + + +Ele instalará um binário em `~/.atuin/bin`, e se você preferir fazer outra coisa +então as etapas manuais abaixo oferecem muito mais flexibilidade. + +```shell +curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh +``` + + + +## Instalação manual + +### Instalando o binário + +Se você não deseja usar o instalador, as etapas de instalação manual são as seguintes. + + + + É melhor usar [rustup](https://rustup.rs/) para configurar uma toolchain Rust, + então você pode executar: + + ```shell + cargo install atuin + ``` + + + ```shell + brew install atuin + ``` + + + O Atuin também está disponível no [MacPorts](https://ports.macports.org/port/atuin/) + + ```shell + sudo port install atuin + ``` + + + Este repositório é um flake, e pode ser instalado usando `nix profile`: + + ```shell + nix profile install "github:atuinsh/atuin" + ``` + + O Atuin também está disponível no [nixpkgs](https://github.com/NixOS/nixpkgs): + + ```shell + nix-env -f '' -iA atuin + ``` + + + O Atuin está disponível no [repositório extra](https://archlinux.org/packages/extra/x86_64/atuin/) do Arch Linux: + + ```shell + pacman -S atuin + ``` + + + O Atuin está disponível no [repositório](https://github.com/void-linux/void-packages/tree/master/srcpkgs/atuin/) do Void Linux: + + ```shell + sudo xbps-install atuin + ``` + + + O Atuin está disponível no repositório de pacotes do Termux: + + ```shell + pkg install atuin + ``` + + + O Atuin pode ser instalado diretamente de github-releases: + + ```shell + # linha 1: `atuin` binário como comando, de github release, procurar apenas arquivos .tar.gz, usar o arquivo `atuin` do arquivo extraído + # linha 2: configurar no clone(criar init.zsh, completion) + # linha 3: comportamento de pull igual ao clone, source init.zsh + zinit ice as"command" from"gh-r" bpick"atuin-*.tar.gz" mv"atuin*/atuin -> atuin" \ + atclone"./atuin init zsh > init.zsh; ./atuin gen-completions --shell zsh > _atuin" \ + atpull"%atclone" src"init.zsh" + zinit light atuinsh/atuin + ``` + + + O Atuin é construído na versão estável mais recente do Rust, e não fazemos + promessas em relação a versões mais antigas. Recomendamos usar [rustup](https://rustup.rs/). + + ```shell + git clone https://github.com/atuinsh/atuin.git + cd atuin/crates/atuin + cargo install --path . + ``` + + + + + +--- + +### Instalando o plugin do shell + +Uma vez que o binário é instalado, o plugin do shell requer instalação. +Se você usar o script de instalação, tudo isso deve ser feito para você! +Após a instalação, lembre-se de reiniciar seu shell. + + + + ```shell + echo 'eval "$(atuin init zsh)"' >> ~/.zshrc + ``` + + + + ```shell + # se você _apenas_ quiser instalar o plugin do shell, faça isso; caso contrário, veja acima para uma "tudo via zinit" solução + zinit load atuinsh/atuin + ``` + + + ```shell + antigen bundle atuinsh/atuin@main + ``` + + + + + + + O Atuin funciona melhor no bash ao usar [ble.sh](https://github.com/akinomyoga/ble.sh) >= 0.4. + + Com ble.sh (>= 0.4) instalado e carregado em `~/.bashrc`, basta adicionar atuin ao seu `~/.bashrc` + + ```shell + echo 'eval "$(atuin init bash)"' >> ~/.bashrc + ``` + + + [Bash-preexec](https://github.com/rcaloras/bash-preexec) também pode ser usado, mas você pode experimentar + alguns pequenos problemas com a duração registrada e o status de saída de alguns comandos. + + + + Para usar o bash-preexec, baixe e inicialize-o + + ```shell + 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 + ``` + + Em seguida, configure o Atuin + + ```shell + echo 'eval "$(atuin init bash)"' >> ~/.bashrc + ``` + + + + + Adicione + + ```shell + atuin init fish | source + ``` + + ao seu bloco `is-interactive` no seu `~/.config/fish/config.fish` arquivo + + + Execute no *Nushell*: + + ```shell + mkdir ~/.local/share/atuin/ + atuin init nu | save ~/.local/share/atuin/init.nu + ``` + + Adicione ao `config.nu`: + + ```shell + source ~/.local/share/atuin/init.nu + ``` + + + Adicione + ```shell + execx($(atuin init xonsh)) + ``` + ao final do seu `~/.xonshrc` + + + +## Atualização + +Execute `atuin update`, e se esse comando não estiver disponível, execute o script de instalação novamente. + +Se você usou um gerenciador de pacotes para instalar o Atuin, então você também deve usar seu gerenciador de pacotes para atualizar o Atuin. + +## Desinstalar + +Se você quiser desinstalar o Atuin, por favor, verifique [esta página](https://docs.atuin.sh/uninstall/). diff --git a/src/content/docs/pt-br/guide/sync.mdx b/src/content/docs/pt-br/guide/sync.mdx new file mode 100644 index 0000000..90262c8 --- /dev/null +++ b/src/content/docs/pt-br/guide/sync.mdx @@ -0,0 +1,80 @@ +--- +title: Configurando a Sincronização +--- + +Neste ponto, você tem o Atuin armazenando e pesquisando seu histórico de shell! Mas ele +ainda não está sincronizando. Para fazer isso, você precisará se registrar com o servidor de sincronização. +Todo o seu histórico é totalmente criptografado de ponta a ponta, então não há +riscos de o servidor espionar você. + +Se você não tem uma conta, por favor, [registre-se](#register). Se você já se registrou, +prossiga para [login](#login). + +**Nota:** Você primeiro precisa configurar seu `sync_address` se quiser usar um [servidor auto-hospedado](/self-hosting/server-setup/). + +## Registrar + +```sh +atuin register -u -e +``` + +Após o registro, o Atuin gerará uma chave de criptografia para você e a armazenará +localmente. Isso é necessário para fazer login em outras máquinas, e pode ser visto com + +```sh +atuin key +``` + +Por favor, **nunca** compartilhe esta chave com ninguém! Os desenvolvedores do Atuin nunca +pedirão sua chave, sua senha, ou o conteúdo do seu diretório Atuin. + +Se você perder sua chave, não podemos fazer nada para ajudá-lo. Recomendamos que você a armazene +em um local seguro, como em um gerenciador de senhas. + +## Primeira sincronização +Por padrão, o Atuin sincronizará seu histórico uma vez por hora. Isso pode ser +[configurado](/configuration/config/#sync_frequency). + +Para executar uma sincronização manualmente, por favor, execute + +```sh +atuin sync +``` + +O Atuin tenta ser inteligente com uma sincronização, e não desperdiçar transferência de dados. No entanto, se +você estiver vendo alguns dados ausentes, por favor, tente executar + +```sh +atuin sync -f +``` + +Isso aciona uma sincronização completa, que pode levar mais tempo, pois trabalha com dados históricos. + +## Login + +Quando logado em apenas uma máquina, a sincronização do Atuin opera como um backup. Isso é +bem útil por si só, mas sincronizar várias máquinas é onde a mágica +acontece. + +Primeiro, certifique-se de estar [registrado no servidor de sincronização](#register) e faça uma +anotação de sua chave. Você pode ver isso com `atuin key`. + +Então, instale o Atuin em uma nova máquina. Uma vez instalado, faça login com + +```sh +atuin login -u +``` + +Você será solicitado a informar sua senha, e sua chave. + +A sincronização acontecerá automaticamente em segundo plano, mas você pode querer executá-la manualmente com + +```sh +atuin sync +``` + +Ou, se você vir dados ausentes, force uma sincronização completa com: + +```sh +atuin sync -f +``` diff --git a/src/content/docs/pt-br/guide/theming.mdx b/src/content/docs/pt-br/guide/theming.mdx new file mode 100644 index 0000000..4eb3b89 --- /dev/null +++ b/src/content/docs/pt-br/guide/theming.mdx @@ -0,0 +1,104 @@ +--- +title: Temas +--- + +Disponível no Atuin >= 18.4 + +Para personalização da interface do terminal, o Atuin suporta temas de cores definidos pelo usuário e temas embutidos. + +O Atuin vem com apenas alguns temas alternativos embutidos, mas mais podem ser adicionados via arquivos TOML. + +# Configuração necessária + +O seguinte é necessário no seu arquivo de configuração (`~/.config/atuin/config.toml`) + +``` +[theme] +name = "NOMEDOTEMA" +``` + +Onde `NOMEDOTEMA` é um tema conhecido. Os seguintes temas estão disponíveis prontos para uso: + +* tema padrão (pode ser explicitamente referenciado com um nome vazio `""`) +* tema `autumn` +* tema `marine` + +Estes estão presentes para garantir que usuários e desenvolvedores possam experimentar temas, mas, em geral, você precisará baixar temas ou criar os seus próprios. + +Se você estiver escrevendo seus próprios temas, pode adicionar a seguinte linha para obter saída adicional: + +``` +debug = true +``` + +para o mesmo bloco de configuração. Isso imprimirá quaisquer nomes de cores que não puderem ser analisados do tema solicitado. + +Uma configuração opcional final está disponível: + +``` +max_depth: 10 +``` + +que define o número máximo de níveis de pais de tema a serem percorridos. Isso não deve precisar ser adicionado explicitamente em uso normal. + +# Uso + +## Estrutura do tema + +Temas são mapeamentos de *Significados*, descrevendo as intenções do desenvolvedor, para (atualmente) cores. No futuro, isso pode ser expandido para permitir um suporte de estilo mais rico. + +*Significados* são de um enum com os seguintes valores: + +* `AlertInfo`: alertando o usuário em um nível INFO +* `AlertWarn`: alertando o usuário em um nível WARN +* `AlertError`: alertando o usuário em um nível ERROR +* `Annotation`: texto de suporte menos crítico +* `Base`: cor de primeiro plano padrão +* `Guidance`: instruindo o usuário como ajuda ou contexto +* `Important`: chamando a atenção do usuário para informações +* `Title`: titulando uma seção ou visualização + +Estes podem se expandir ao longo do tempo à medida que são adicionados à base de código do Atuin, mas o Atuin deve ter fallbacks adicionados para quaisquer novos *Significados* para que, quer os temas se limitem à lista atual ou aproveitem novos *Significados* no futuro, eles continuem funcionando de forma sensata. + +**Nota para colaboradores do Atuin**: por favor, identifiquem e, quando apropriado durante seus próprios PRs, estendam o enum Meanings, se necessário (junto com um Meaning de fallback!). + +## Criação de tema + +Quando um nome de tema é lido, mas ainda não carregado, o Atuin o procurará na pasta +`~/.config/atuin/themes/` a menos que seja substituído pela variável de ambiente `ATUIN_THEME_DIR`. Ele tentará abrir um arquivo com o nome `NOMEDOTEMA.toml` e lê-lo como um +mapeamento de *Significados* para cores. + +As cores podem ser especificadas como nomes da crate [palette](https://ogeon.github.io/docs/palette/master/palette/named/index.html) +crate em minúsculas, ou como códigos hexadecimais de seis caracteres, prefixados com `#`. Por exemplo, +os seguintes são nomes de cores válidos: + +* `#ff0088` +* `teal` +* `powderblue` + +Um arquivo de tema, digamos `meu-tema.toml`, pode então ser construído, como: + +```toml +[theme] +name = "meu-tema" +parent = "autumn" + +[colors] +AlertInfo = "green" +Guidance = "green" + +``` + +onde nem todos os *Significados* precisam ser explicitamente definidos. Se estiverem ausentes, +então a cor será escolhida do tema pai, se um for definido, ou se essa +chave estiver faltando no bloco `theme`, do tema padrão. + +Este arquivo de tema deve ser movido para `~/.config/atuin/themes/meu-tema.toml` e o +seguinte adicionado a `~/.config/atuin/config.toml`: + +``` +[theme] +name = "meu-tema" +``` + +Na próxima vez que você executar o Atuin, seu tema deverá ser aplicado. \ No newline at end of file diff --git a/src/content/docs/pt-br/index.mdx b/src/content/docs/pt-br/index.mdx new file mode 100644 index 0000000..123d196 --- /dev/null +++ b/src/content/docs/pt-br/index.mdx @@ -0,0 +1,54 @@ +--- +title: Primeiros passos +--- + +import {Tabs, TabItem, LinkCard} from "@astrojs/starlight/components"; + +O Atuin substitui seu histórico de shell existente com um banco de dados SQLite, e registra +contexto adicional para seus comandos. Com esse contexto, o Atuin oferece uma pesquisa mais rápida +e melhor do seu histórico de shell. + +Além disso, o Atuin (opcionalmente) sincroniza seu histórico de shell entre todas as suas +máquinas. Totalmente criptografado de ponta a ponta, é claro. + +Você pode usar o servidor que eu hospedo, ou hospedar o seu próprio! Ou simplesmente não usar a sincronização. +Como toda a sincronização de histórico é criptografada, eu não conseguiria acessar seus dados mesmo se quisesse. +E eu **realmente** não quero. + +Se você tiver algum problema, por favor, abra um tópico no [fórum](https://forum.atuin.sh) + +Alternativamente, entre em contato em nosso [Discord](https://discord.gg/Fq8bJSKPHh) ou abra um [problema](https://github.com/atuinsh/atuin/issues) + +#### Shells Suportados + +- zsh +- bash +- fish +- nushell +- xonsh + +## Início Rápido + +Por favor, tente ler este guia, mas se você estiver com pressa e quiser começar rapidamente: + +```bash +bash <(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh) + +atuin register -u -e +atuin import auto +atuin sync +``` + +Agora reinicie seu shell! + +Sempre que você pressionar ctrl-r ou seta para cima, você verá a interface de pesquisa do Atuin. Digite sua +consulta, enter para executar. Se você quiser selecionar um comando sem executá-lo, +pressione tab. + +Você pode querer configurar uma [janela inline](https://docs.atuin.sh/configuration/config/#inline_height), ou [desabilitar as vinculações da seta para cima](https://docs.atuin.sh/configuration/key-binding/#disable-up-arrow) + + \ No newline at end of file diff --git a/src/content/docs/pt-br/integrations.mdx b/src/content/docs/pt-br/integrations.mdx new file mode 100644 index 0000000..7db6efc --- /dev/null +++ b/src/content/docs/pt-br/integrations.mdx @@ -0,0 +1,24 @@ +--- +title: Integrações +--- + +## zsh-autosuggestions + +O Atuin se adiciona automaticamente como uma [estratégia de autosugestão](https://github.com/zsh-users/zsh-autosuggestions#suggestion-strategy). + +Se você quiser substituir isso, adicione sua própria configuração após "$(atuin init zsh)" no seu zshrc. + +## ble.sh auto-complete (Bash) + +Se o ble.sh estiver disponível quando a integração do Atuin for carregada no Bash, o Atuin define e registra automaticamente uma fonte de autocompletar para o recurso de autosugestão do ble.sh. + +Se você quiser alterar o comportamento, sobrescreva a função de shell `ble/complete/auto-complete/source:atuin-history` após `eval "$(atuin init bash)"` no seu `.bashrc`. + +Se você não quiser a fonte de autocompletar do Atuin, adicione a seguinte configuração após `eval "$(atuin init bash)"` no seu `.bashrc`: + +```shell +# bashrc (depois de eval "$(atuin init bash)") + +ble/util/import/eval-after-load core-complete '\ + ble/array#remove _ble_complete_auto_source atuin-history' +``` diff --git a/src/content/docs/pt-br/known-issues.mdx b/src/content/docs/pt-br/known-issues.mdx new file mode 100644 index 0000000..130ad91 --- /dev/null +++ b/src/content/docs/pt-br/known-issues.mdx @@ -0,0 +1,6 @@ +--- +title: Problemas Conhecidos +--- + +- SQLite tem alguns problemas com ZFS em certas configurações. Como o Atuin usa SQLite, isso pode fazer com que seu shell fique lento! Temos um [problema](https://github.com/atuinsh/atuin/issues/952) para rastrear, com algumas soluções alternativas. +- SQLite também não costuma gostar de sistemas de arquivos de rede (por exemplo, NFS). \ No newline at end of file diff --git a/src/content/docs/pt-br/reference/daemon.mdx b/src/content/docs/pt-br/reference/daemon.mdx new file mode 100644 index 0000000..b1374b0 --- /dev/null +++ b/src/content/docs/pt-br/reference/daemon.mdx @@ -0,0 +1,31 @@ +--- +title: daemon +--- + +# `atuin daemon` +_Isso é experimental!_ + +O daemon do Atuin é um daemon em segundo plano projetado para + +1. Acelerar as gravações no banco de dados +2. Permitir que as máquinas sincronizem quando não estiverem em uso, para que estejam prontas para uso imediatamente +3. Realizar manutenção em segundo plano + +Também pode contornar problemas de desempenho com ZFS/SQLite. + +Atualmente é experimental, mas é seguro usar com um pouco de configuração. + +## Para habilitar + +Adicione o seguinte ao final do seu arquivo de configuração do Atuin + +```toml +[daemon] +enabled = true +``` + +Em seguida, execute `atuin daemon`. Isso pode fazer sentido em uma sessão tmux, unidade systemd, etc. Assim que estiver pronto para uso mais amplo, nós cuidaremos dessa configuração para você. + +## Configuração extra + +Veja a [seção de configuração](/configuration/config/#daemon) \ No newline at end of file diff --git a/src/content/docs/pt-br/reference/doctor.mdx b/src/content/docs/pt-br/reference/doctor.mdx new file mode 100644 index 0000000..ea8b7f0 --- /dev/null +++ b/src/content/docs/pt-br/reference/doctor.mdx @@ -0,0 +1,40 @@ +--- +title: doctor +--- + +# `atuin doctor` + +Este comando tentará diagnosticar problemas comuns. Ele também despejará informações sobre o seu sistema. + +Por favor, inclua sua saída com problemas e solicitações de suporte. + +Exemplo de saída: + +```sh +Atuin Doctor +Verificando diagnósticos + + +Por favor, inclua a saída abaixo com quaisquer relatórios de bugs ou problemas + +atuin: + versão: 18.1.0 + sincronização: + nuvem: true + registros: true + auto_sync: true + ultima_sincronização: 2024-03-05 14:54:48.447677 +00:00:00 +shell: + nome: zsh + plugins: + - atuin +sistema: + os: Darwin + arch: arm64 + versão: 14.4 + discos: + - nome: Macintosh HD + sistema_de_arquivos: apfs + - nome: Macintosh HD + sistema_de_arquivos: apfs +``` diff --git a/src/content/docs/pt-br/reference/gen-completions.mdx b/src/content/docs/pt-br/reference/gen-completions.mdx new file mode 100644 index 0000000..96727c5 --- /dev/null +++ b/src/content/docs/pt-br/reference/gen-completions.mdx @@ -0,0 +1,22 @@ +--- +title: gerar-completions +--- + +[Completions de shell](https://en.wikipedia.org/wiki/Command-line_completion) para o Atuin podem ser geradas especificando o diretório de saída e o shell desejado via subcomando `gen-completions`. + +``` +$ atuin gen-completions --shell bash --out-dir $HOME + +Completions de shell para BASH são geradas em "/home/user" +``` + +Os valores possíveis para o argumento `--shell` são os seguintes: + +- `bash` +- `fish` +- `zsh` +- `nushell` +- `powershell` +- `elvish` + +Além disso, veja os [shells suportados](https://github.com/atuinsh/atuin#supported-shells). \ No newline at end of file diff --git a/src/content/docs/pt-br/reference/import.mdx b/src/content/docs/pt-br/reference/import.mdx new file mode 100644 index 0000000..7dd036b --- /dev/null +++ b/src/content/docs/pt-br/reference/import.mdx @@ -0,0 +1,85 @@ +--- +title: importar +--- + +## `atuin import` + +O Atuin pode importar seu histórico do seu arquivo de histórico "antigo". + +`atuin import auto` tentará descobrir seu shell (via $SHELL) e executar o importador correto. + +Infelizmente, esses arquivos mais antigos não armazenam tantas informações quanto o Atuin, então nem todos os recursos estão disponíveis com dados importados. + +Exceto quando indicado de outra forma, você pode definir a variável de ambiente `HISTFILE` para controlar qual arquivo é lido, caso contrário, cada importador tentará alguns nomes de arquivo padrão. + +```sh +HISTFILE=/path/to/history/file atuin import zsh +``` + +Observe que para shells como o Xonsh, que armazenam o histórico em muitos arquivos em vez de um único arquivo, `$HISTFILE` deve ser definido para o diretório onde esses arquivos residem. + +Para formatos que não armazenam carimbos de data/hora, os carimbos de data/hora serão gerados a partir do tempo atual mais 1ms para cada comando adicional no histórico. + +A maioria dos importadores descartará comandos encontrados que tenham UTF-8 inválido. + +## bash + +Isso lerá o histórico de `$HISTFILE` ou `$HOME/.bash_history`. + +Avisos serão emitidos se os carimbos de data/hora forem encontrados fora de ordem, o que também pode acontecer quando um arquivo de histórico começa sem carimbos de data/hora, mas entradas posteriores os incluem. + +## fish + +O fish suporta várias sessões de histórico, então o importador usará como padrão a sessão `fish`, a menos que a variável de ambiente `fish_history` seja definida. O arquivo a ser lido será `{session}_history` em `$XDG_DATA_HOME/fish/` (ou `$HOME/.local/share/fish`). + +Nem todos os dados no histórico do fish são preservados, alguns dados sobre nomes de arquivos usados para cada comando não são usados pelo Atuin, então são descartados. + +## nu-hist-db + +Este importador lê do banco de dados de histórico SQLite do Nushell, que é armazenado em +`$XDG_CONFIG_HOME/nushell/history.sqlite3` ou `$HOME/.config/nushell/history.sqlite3`. +Não há como definir o nome do arquivo de outra forma. + +## nu + +Este importador lê do formato de histórico de texto do Nushell, que é armazenado em +`$XDG_CONFIG_HOME/nushell/history.txt` ou `$HOME/.config/nushell/history.txt`. +Não há como definir o nome do arquivo de outra forma. + +## resh + +O importador [RESH](https://github.com/curusarn/resh) lerá de `$HISTFILE` ou `$HOME/.resh_history.json`. + +## xonsh + +O importador Xonsh lerá de todos os arquivos JSON que encontrar no diretório de histórico do Xonsh. A localização do diretório é determinada da seguinte forma: +* Se `$HISTFILE` estiver definido, seu valor é usado como o diretório de histórico. +* Se `$XONSH_DATA_DIR` estiver definido (como normalmente estará se o importador for invocado + de dentro do Xonsh), `$XONSH_DATA_DIR/history_json` é usado. +* Se `$XDG_DATA_HOME` estiver definido, `$XDG_DATA_HOME/xonsh/history_json` é usado. +* Caso contrário, `$HOME/.local/share/xonsh/history_json` é usado. + +Nem todos os dados presentes nos arquivos JSON de histórico do Xonsh são usados pelo Atuin. O Xonsh armazena as +variáveis de ambiente presentes quando cada sessão foi iniciada, mas esses dados são +descartados pelo Atuin. O Xonsh opcionalmente armazena a saída de cada comando; se presente +este dado também é ignorado pelo Atuin. + +## xonsh_sqlite + +O importador Xonsh SQLite lerá do arquivo de histórico SQLite do Xonsh. A localização do histórico +do arquivo é determinada pelo mesmo processo do importador Xonsh regular, +mas com `history_json` substituído por `xonsh-history.sqlite`. + +O backend SQLite do Xonsh não armazena variáveis de ambiente, mas como o backend JSON +ele pode opcionalmente armazenar a saída de cada comando. Assim como no backend JSON, +se presente, esses dados serão ignorados pelo Atuin. + +## zsh_histdb + +Isso lerá o arquivo SQLite do Zsh histdb de `$HISTDB_FILE` ou +`$HOME/.histdb/zsh-history.db`. + +## zsh + +Isso lerá o histórico do Zsh de `$HISTFILE` ou `$HOME/.zhistory` +ou `$HOME/.zsh_history` no formato simples ou estendido. diff --git a/src/content/docs/pt-br/reference/info.mdx b/src/content/docs/pt-br/reference/info.mdx new file mode 100644 index 0000000..b3ac8de --- /dev/null +++ b/src/content/docs/pt-br/reference/info.mdx @@ -0,0 +1,24 @@ +--- +title: informações +--- + +# `atuin info` + +Este comando mostra a localização dos arquivos de configuração no seu sistema + +Exemplo de saída: + +```sh +Arquivos de configuração: +configuração do cliente: "/Users/ellie/.config/atuin/config.toml" +configuração do servidor: "/Users/ellie/.config/atuin/server.toml" +caminho do db do cliente: "/Users/ellie/.local/share/atuin/history.db" +caminho da chave: "/Users/ellie/.local/share/atuin/key" +caminho da sessão: "/Users/ellie/.local/share/atuin/session" + +Variáveis de ambiente: +ATUIN_CONFIG_DIR = "None" + +Informações da versão: +versão: 18.1.0 +``` diff --git a/src/content/docs/pt-br/reference/list.mdx b/src/content/docs/pt-br/reference/list.mdx new file mode 100644 index 0000000..975a517 --- /dev/null +++ b/src/content/docs/pt-br/reference/list.mdx @@ -0,0 +1,33 @@ +--- +title: listar histórico +--- + +# `atuin history list` + + +| Argumento | Descrição | +|------------------|-------------------------------------------------------------------------------| +| `--cwd`/`-c` | Listar histórico apenas para o diretório atual (padrão: todos os diretórios) | +| `--session`/`-s` | Listar histórico apenas para a sessão atual (padrão: falso) | +| `--human` | Usar formatação legível para o carimbo de data/hora e duração (padrão: falso) | +| `--cmd-only` | Mostrar apenas o texto do comando (padrão: falso) | +| `--reverse` | Inverter a ordem da saída (padrão: falso) | +| `--format` | Especificar a formatação de um comando (veja abaixo) | +| `--print0` | Terminar a saída com um nulo, para melhor suporte a várias linhas | + + +## Formato + +Personalize a saída de `history list` + +Exemplo + +```sh +atuin history list --format "{time} - {duration} - {command}" +``` + +Variáveis suportadas + +```sh +{command}, {directory}, {duration}, {user}, {host} e {time} +``` diff --git a/src/content/docs/pt-br/reference/prune.mdx b/src/content/docs/pt-br/reference/prune.mdx new file mode 100644 index 0000000..26e7cf6 --- /dev/null +++ b/src/content/docs/pt-br/reference/prune.mdx @@ -0,0 +1,13 @@ +--- +title: limpar histórico +--- + +# `atuin history prune` + +Este comando exclui entradas de histórico que correspondem ao parâmetro de configuração [history_filter](/configuration/config/#history_filter). + +Ele pode ser executado com `--dry-run` primeiro para listar as entradas de histórico que serão removidas. + +| Argumento | Descrição | +|------------------|--------------------------------------------------------------------| +| `--dry-run`/`-n` | Lista as linhas de histórico correspondentes sem realizar a exclusão real | \ No newline at end of file diff --git a/src/content/docs/pt-br/reference/search.md b/src/content/docs/pt-br/reference/search.md new file mode 100644 index 0000000..30c3c67 --- /dev/null +++ b/src/content/docs/pt-br/reference/search.md @@ -0,0 +1,67 @@ +--- +title: pesquisar +--- + +Atuin search supports wildcards, with either the `*` or `%` character. Por +padrão, uma pesquisa de prefixo é realizada (ou seja, todas as consultas são automaticamente +anexadas com um curinga). + +| Argumento | Descrição | +| -------------------- | ----------------------------------------------------------------------------- | +| `--cwd`/`-c` | O diretório para listar o histórico (padrão: todos os diretórios) | +| `--exclude-cwd` | Não incluir comandos que foram executados neste diretório (padrão: nenhum) | +| `--exit`/`-e` | Filtrar por código de saída (padrão: nenhum) | +| `--exclude-exit` | Não incluir comandos que saíram com este valor (padrão: nenhum) | +| `--before` | Incluir apenas comandos executados antes deste horário (padrão: nenhum) | +| `--after` | Incluir apenas comandos executados após este horário (padrão: nenhum) | +| `--interactive`/`-i` | Abrir a interface de pesquisa interativa (padrão: falso) | +| `--human` | Usar formatação legível para o carimbo de data/hora e duração (padrão: falso) | +| `--limit` | Limitar o número de resultados (padrão: nenhum) | +| `--offset` | Deslocamento do início dos resultados (padrão: nenhum) | +| `--delete` | Excluir histórico que corresponda a esta consulta | +| `--delete-it-all` | Excluir todo o histórico do shell | +| `--reverse` | Inverter a ordem dos resultados da pesquisa, os mais antigos primeiro | +| `--format`/`-f` | Variáveis disponíveis: {command}, {directory}, {duration}, {user}, {host}, {time}, {exit} e {relativetime}. Exemplo: --format "{time} - [{duration}] - {directory}$ {command}" | +| `--inline-height` | Definir o número máximo de linhas que a interface do Atuin deve ocupar | +| `--help`/`-h` | Imprimir ajuda | + +## `atuin search -i` + +A TUI de pesquisa interativa do Atuin permite que você pesquise de forma difusa em seu histórico. + +![compact](https://user-images.githubusercontent.com/1710904/161623659-4fec047f-ea4b-471c-9581-861d2eb701a9.png) + +Você pode reproduzir o `n-ésimo` comando com `alt + #` onde `#` é o número da linha do comando que você gostaria de reproduzir. + +Nota: Isso ainda não é suportado no macOS. + +## Exemplos + +```bash +# Abrir a TUI de pesquisa interativa +atuin search -i + +# Abrir a TUI de pesquisa interativa pré-carregada com uma consulta +atuin search -i atuin + +# Pesquisar todos os comandos, começando com cargo, que saíram com sucesso +atuin search --exit 0 cargo + +# Pesquisar todos os comandos que falharam, do diretório atual, e foram executados antes de 1º de abril de 2021 +atuin search --exclude-exit 0 --before 01/04/2021 --cwd . + +# Pesquisar todos os comandos, começando com cargo, que saíram com sucesso, e foram executados depois de ontem às 15h +atuin search --exit 0 --after "yesterday 3pm" cargo + +# Excluir todos os comandos, começando com cargo, que saíram com sucesso, e foram executados depois de ontem às 15h +atuin search --delete --exit 0 --after "yesterday 3pm" cargo + +# Pesquisar um comando começando com cargo, retornar exatamente um resultado. +atuin search --limit 1 cargo + +# Pesquisar um único resultado para um comando começando com cargo, pulando (deslocando) um resultado +atuin search --offset 1 --limit 1 cargo + +# Encontrar o comando cargo mais antigo +atuin search --limit 1 --reverse cargo +``` diff --git a/src/content/docs/pt-br/reference/stats.mdx b/src/content/docs/pt-br/reference/stats.mdx new file mode 100644 index 0000000..feebd3c --- /dev/null +++ b/src/content/docs/pt-br/reference/stats.mdx @@ -0,0 +1,47 @@ +--- +title: estatísticas +--- + +O Atuin também pode calcular estatísticas com base no seu histórico - isso é atualmente um pouco básico, mas mais recursos virão. + +## Estatísticas de 1 dia + +Você fornece o ponto de partida, e o Atuin calcula as estatísticas para 24h a partir desse ponto. A análise de data é fornecida por `interim`, que suporta diferentes formatos para datas completas ou relativas. Certos formatos dependem da opção de dialeto em sua [configuração](/configuration/config#dialect) para diferenciar dia de mês. Consulte [a documentação do módulo](https://docs.rs/interim/0.1.0/interim/#supported-formats) para mais detalhes sobre os formatos de data suportados. + +```sh +$ atuin stats last friday + ++---------------------+------------+ +| Estatística | Valor | ++---------------------+------------+ +| Comando mais usado | git status | ++---------------------+------------+ +| Comandos executados | 450 | ++---------------------+------------+ +| Comandos únicos executados | 213 | ++---------------------+------------+ + +# Mais alguns exemplos: +$ atuin stats 2018-04-01 +$ atuin stats April 1 +$ atuin stats 01/04/22 +$ atuin stats last thursday 3pm # entre a última quinta-feira às 15:00 e a sexta-feira seguinte às 15:00 +``` + +## Estatísticas de histórico completo + +```sh +$ atuin stats +# ou +$ atuin stats all + ++---------------------+-------+ +| Estatística | Valor | ++---------------------+-------+ +| Comando mais usado | ls | ++---------------------+-------+ +| Comandos executados | 8190 | ++---------------------+-------+ +| Comandos únicos executados | 2996 | ++---------------------+-------+ +``` diff --git a/src/content/docs/pt-br/reference/sync.mdx b/src/content/docs/pt-br/reference/sync.mdx new file mode 100644 index 0000000..5a14f5b --- /dev/null +++ b/src/content/docs/pt-br/reference/sync.mdx @@ -0,0 +1,67 @@ +--- +title: sincronizar +--- + +Atuin pode fazer backup do seu histórico para um servidor e usá-lo para garantir que várias máquinas tenham o mesmo histórico de shell. Tudo isso é criptografado de ponta a ponta, então o operador do servidor _nunca_ poderá ver seus dados! + +Qualquer um pode hospedar um servidor (tente `atuin server start`, mais documentos a seguir), mas eu hospedo um em https://api.atuin.sh. Este é o endereço do servidor padrão, que pode ser alterado na [configuração](/configuration/config#sync_address). Novamente, eu _não_ consigo ver seus dados e não quero. + +## Frequência de sincronização + +A sincronização acontecerá automaticamente, a menos que configurado de outra forma. A frequência de sincronização é configurável em [configuração](/configuration/config#sync_frequency). + +## Sincronizar + +Você pode acionar manualmente uma sincronização com `atuin sync` + +## Registrar + +Registre-se para uma conta de sincronização com + +```sh +atuin register -u -e -p +``` + +Se você não quiser que sua senha seja incluída no histórico do shell, você pode omitir a flag de senha e será solicitado a fornecê-la via stdin. + +Os nomes de usuário devem ser únicos e conter apenas caracteres alfanuméricos ou hífens, e os e-mails devem ser usados apenas para notificações importantes (violações de segurança, alterações no serviço, etc.). + +Após o sucesso, você também está logado :) A sincronização deve acontecer automaticamente a partir daqui! + +## Excluir + +Você pode excluir sua conta de sincronização com + +```sh +atuin account delete +``` + +Isso removerá sua conta e todo o histórico sincronizado do servidor. Os dados locais não serão tocados! + +## Chave + +Como todos os seus dados são criptografados, o Atuin gera uma chave para você. Ela é armazenada no diretório de dados do Atuin (`~/.local/share/atuin` no Linux). + +Você também pode obtê-la com + +```sh +atuin key +``` + +Nunca compartilhe isso com ninguém! + +## Login + +Se você quiser fazer login em uma nova máquina, você precisará de sua chave de criptografia (`atuin key`). + +```sh +atuin login -u -p -k +``` + +Se você não quiser que sua senha seja incluída no histórico do shell, você pode omitir a flag de senha e será solicitado a fornecê-la via stdin. + +## Logout + +```sh +atuin logout +``` diff --git a/src/content/docs/pt-br/self-hosting/docker.mdx b/src/content/docs/pt-br/self-hosting/docker.mdx new file mode 100644 index 0000000..83ee30c --- /dev/null +++ b/src/content/docs/pt-br/self-hosting/docker.mdx @@ -0,0 +1,132 @@ +--- +title: Docker +--- + +:::caution +Se você está auto-hospedando, sugerimos fortemente que você se atenha às [versões marcadas](https://github.com/atuinsh/atuin/releases), e não siga `main` ou `latest` + +Siga os lançamentos do GitHub e leia as notas de cada lançamento. Na maioria das vezes, as atualizações podem ocorrer sem qualquer intervenção manual. + +Não podemos garantir que todas as atualizações serão aplicadas de forma limpa, e algumas podem exigir algumas etapas extras. +::: + +Existe uma imagem docker fornecida para facilitar a implantação de um servidor como um contêiner. A "ÚLTIMA VERSÃO MARCADA" pode ser encontrada na [página de lançamentos](https://github.com/atuinsh/atuin/releases). + +```sh +docker run -d -v "$HOME/.config/atuin:/config" ghcr.io/atuinsh/atuin: server start +``` + +# Docker Compose + +Usando a imagem docker já construída, hospedar seu próprio Atuin pode ser feito usando o arquivo docker-compose fornecido. + +Crie um arquivo `.env` ao lado de [`docker-compose.yml`](https://github.com/atuinsh/atuin/raw/main/docker-compose.yml) com conteúdo como este: + +```ini +ATUIN_DB_NAME=atuin +ATUIN_DB_USERNAME=atuin +# Escolha sua própria senha segura +ATUIN_DB_PASSWORD=really-insecure +``` + +Crie um `docker-compose.yml`: + +```yaml +version: '3.5' +services: + atuin: + restart: always + image: ghcr.io/atuinsh/atuin: + 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_DB_NAME + RUST_LOG: info,atuin_server=debug + db: + image: postgres:14 + restart: unless-stopped + volumes: # Não remova o armazenamento permanente para arquivos de banco de dados de índice! + - "./database:/var/lib/postgresql/data/" + environment: + POSTGRES_USER: ${ATUIN_DB_USERNAME} + POSTGRES_PASSWORD: ${ATUIN_DB_PASSWORD} + POSTGRES_DB: ${ATUIN_DB_NAME} +``` + +Inicie os serviços usando `docker compose`: + +```sh +docker compose up -d +``` + +## Usando systemd para gerenciar seu servidor atuin + +O seguinte arquivo de unidade `systemd` para gerenciar seu serviço gerenciado por `docker-compose`: + +```ini +[Unit] +Description=Docker Compose Atuin Service +Requires=docker.service +After=docker.service + +[Service] +# Onde o arquivo docker-compose está localizado +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 +``` + +Inicie e habilite o serviço com: + +```sh +systemctl enable --now atuin +``` + +Verifique se está em execução com: + +```sh +systemctl status atuin +``` + +## Criando backups do banco de dados Postgres + +Você pode adicionar outro serviço ao seu arquivo `docker-compose.yml` para que ele execute backups diários. Deve ser assim: + +```yaml + backup: + container_name: atuin_db_dumper + image: prodrigestivill/postgres-backup-local + env_file: + - .env + environment: + POSTGRES_HOST: postgresql + POSTGRES_DB: ${ATUIN_DB_NAME} + POSTGRES_USER: ${ATUIN_DB_USERNAME} + POSTGRES_PASSWORD: ${ATUIN_DB_PASSWORD} + SCHEDULE: "@daily" + BACKUP_DIR: /db_dumps + volumes: + - ./db_dumps:/db_dumps + depends_on: + - postgresql +``` + +Isso criará backups diários do seu banco de dados para essa camada adicional de conforto. + + +:::caution +ATENÇÃO: A montagem `./db_dumps` DEVE ser um sistema de arquivos compatível com POSIX para armazenar os backups (principalmente com suporte para hardlinks e softlinks). Assim, sistemas de arquivos como VFAT, EXFAT, SMB/CIFS, ... não podem ser usados com esta imagem docker. Veja https://github.com/prodrigestivill/docker-postgres-backup-local para mais detalhes sobre como isso funciona. Existem configurações adicionais para o número de backups retidos, etc., tudo explicado na página vinculada. +::: diff --git a/src/content/docs/pt-br/self-hosting/kubernetes.mdx b/src/content/docs/pt-br/self-hosting/kubernetes.mdx new file mode 100644 index 0000000..b092bd1 --- /dev/null +++ b/src/content/docs/pt-br/self-hosting/kubernetes.mdx @@ -0,0 +1,293 @@ +--- +title: Kubernetes +--- + +:::caution +Se você está auto-hospedando, sugerimos fortemente que você se atenha às versões marcadas (tagged releases), e não siga `main` ou `latest` + +Siga os lançamentos do GitHub, e leia as notas para cada lançamento. Na maioria das vezes, as atualizações podem ocorrer sem qualquer intervenção manual. + +Não podemos garantir que todas as atualizações serão aplicadas de forma limpa, e algumas podem exigir algumas etapas extras. +::: + +Você pode hospedar seu próprio servidor Atuin usando a plataforma Kubernetes. + +Crie um arquivo [`secrets.yaml`](https://github.com/atuinsh/atuin/blob/main/k8s/secrets.yaml) para as credenciais do banco de dados: + +```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@postgres/atuin" +immutable: true +``` + +Crie um arquivo [`atuin.yaml`](https://github.com/atuinsh/atuin/blob/main/k8s/atuin.yaml) para o servidor Atuin: + +```yaml +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres + namespace: atuin +spec: + replicas: 1 + strategy: + type: Recreate # Isso é importante para garantir que pods duplicados não sejam executados e causem corrupção + selector: + matchLabels: + io.kompose.service: postgres + template: + metadata: + labels: + io.kompose.service: postgres + spec: + containers: + - 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 + lifecycle: + preStop: + exec: + # Isso garante um desligamento gracioso, veja: https://stackoverflow.com/a/75829325/3437018 + # Potencialmente considere usar um `StatefulSet` em vez de um `Deployment` + command: ["/usr/local/bin/pg_ctl stop -D /var/lib/postgresql/data -w -t 60 -m fast"] + resources: + requests: + cpu: 100m + memory: 100Mi + limits: + cpu: 250m + memory: 600Mi + volumeMounts: + - mountPath: /var/lib/postgresql/data/ + name: database + volumes: + - name: database + persistentVolumeClaim: + claimName: database +--- +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 + volumes: + - 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 +--- +apiVersion: v1 +kind: Service +metadata: + labels: + io.kompose.service: postgres + name: postgres +spec: + type: ClusterIP + selector: + io.kompose.service: postgres + ports: + - protocol: TCP + port: 5432 + targetPort: 5432 +--- +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 +``` + +Finalmente, você pode querer usar um namespace separado para o atuin, criando um arquivo [`namespaces.yaml`](https://github.com/atuinsh/atuin/blob/main/k8s/namespaces.yaml): + +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: atuin-namespace + labels: + name: atuin +``` + +Observe que esta configuração armazenará a pasta do banco de dados _fora_ do cluster kubernetes, na pasta `/Users/firstname.lastname/.kube/database` do sistema host, configurando o `storageClassName` para ser `manual`. Em uma configuração empresarial real, você provavelmente desejaria armazenar o conteúdo do banco de dados permanentemente no cluster, e não no sistema host. + +Você também deve alterar a string da senha em `ATUIN_DB_PASSWORD` e `ATUIN_DB_URI` no arquivo `secrets.yaml` para uma mais segura. + +O serviço atuin na porta `30530` do sistema host. Isso é configurado pela propriedade `nodePort`. O Kubernetes tem uma regra estrita de que você não tem permissão para expor uma porta com número inferior a 30000. Para fazer os clientes funcionarem, você pode simplesmente definir a porta no seu arquivo `config.toml`, por exemplo, `sync_address = "http://192.168.1.10:30530"`. + +Implante o servidor Atuin usando `kubectl`: + +```shell + kubectl apply -f ./namespaces.yaml + kubectl apply -n atuin-namespace \ + -f ./secrets.yaml \ + -f ./atuin.yaml +``` + +Os arquivos de exemplo acima também estão na [pasta k8s](https://github.com/atuinsh/atuin/tree/main/k8s) do repositório atuin. + +## Criando backups do banco de dados Postgres + +Agora que você está funcionando, é um bom momento para pensar em backups. + +Você pode criar um [`CronJob`](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) que usa [`pg_dump`](https://www.postgresql.org/docs/current/app-pgdump.html) para criar um backup do banco de dados. Este exemplo é executado semanalmente e despeja no disco local no nó. + +```yaml +apiVersion: batch/v1 +kind: CronJob +metadata: + name: atuin-db-backup +spec: + schedule: "0 0 * * 0" # Executar todo domingo à meia-noite + jobTemplate: + spec: + template: + spec: + containers: + - name: atuin-db-backup-pg-dump + image: postgres:14 + command: [ + "/bin/bash", + "-c", + "pg_dump --host=postgres --username=atuin --format=c --file=/backup/atuin-backup-$(date +'%Y-%m-%d').pg_dump", + ] + env: + - name: PGPASSWORD + valueFrom: + secretKeyRef: + name: atuin-secrets + key: ATUIN_DB_PASSWORD + optional: false + volumeMounts: + - name: backup-volume + mountPath: /backup + restartPolicy: OnFailure + volumes: + - name: backup-volume + hostPath: + path: /somewhere/on/node/for/database-backups + type: Directory +``` + +Configure/atualize o exemplo `yaml` com o seguinte: +- Defina uma programação mais ou menos frequente com a propriedade `schedule`. +- Substitua `/somewhere/on/node/for/database-backups` por um caminho no seu nó ou reconfigure para usar um `PersistentVolume` em vez de `hostPath`. +- `--format=c` gera um formato que pode ser restaurado com `pg_restore`. Use [`plain`](https://www.postgresql.org/docs/current/app-pgdump.html) se você quiser arquivos `.sql` gerados em vez disso. diff --git a/src/content/docs/pt-br/self-hosting/server-setup.mdx b/src/content/docs/pt-br/self-hosting/server-setup.mdx new file mode 100644 index 0000000..6af5524 --- /dev/null +++ b/src/content/docs/pt-br/self-hosting/server-setup.mdx @@ -0,0 +1,55 @@ +--- +title: Configuração do servidor +--- + +Embora ofereçamos um servidor de sincronização público e não possamos ver seus dados (pois são criptografados), você ainda pode desejar auto-hospedar seu próprio servidor de sincronização Atuin. + +Os requisitos para isso são bem mínimos! Você precisa ser capaz de executar um binário ou contêiner docker e ter um banco de dados PostgreSQL configurado. O Atuin requer PostgreSQL 14 ou superior. + +Qualquer host com o binário `atuin` também pode executar um servidor, executando + +```shell +atuin server start +``` + +## Configuração + +A configuração do servidor é mantida separada da configuração do cliente, embora sejam o mesmo binário. A configuração do servidor pode ser encontrada em `~/.config/atuin/server.toml`. + +Parece algo assim: + +```toml +host = "0.0.0.0" +port = 8888 +open_registration = true +db_uri="postgres://user:password@hostname/database" +``` + +Alternativamente, a configuração também pode ser fornecida com variáveis de ambiente. + +```sh +ATUIN_HOST="0.0.0.0" +ATUIN_PORT=8888 +ATUIN_OPEN_REGISTRATION=true +ATUIN_DB_URI="postgres://user:password@hostname/database" +``` + + +| Parâmetro | Descrição | +| ------------------- | ----------------------------------------------------------------------------- | +| `host` | O host para escutar (padrão: 127.0.0.1) | +| `port` | A porta TCP para escutar (padrão: 8888) | +| `open_registration` | Se `true`, aceita novos registros de usuário (padrão: false) | +| `db_uri` | Uma URI PostgreSQL válida, para salvar o histórico (padrão: false) | +| `path` | Um caminho para preceder todas as rotas do servidor (padrão: false) | + +### TLS + +O servidor suporta TLS através da seção `[tls]`: + +```toml +[tls] +enable = true +cert_path = "/path/to/letsencrypt/live/fully.qualified.domain/fullchain.pem" +pkey_path = "/path/to/letsencrypt/live/fully.qualified.domain/privkey.pem" +``` \ No newline at end of file diff --git a/src/content/docs/pt-br/self-hosting/systemd.mdx b/src/content/docs/pt-br/self-hosting/systemd.mdx new file mode 100644 index 0000000..e65fcad --- /dev/null +++ b/src/content/docs/pt-br/self-hosting/systemd.mdx @@ -0,0 +1,66 @@ +--- +title: Systemd +--- + +Primeiro, crie o arquivo de unidade de serviço +[`atuin-server.service`](https://github.com/atuinsh/atuin/raw/main/systemd/atuin-server.service) em +`/etc/systemd/system/atuin-server.service` com conteúdo como este: + +```ini +[Unit] +Description=Start the Atuin server syncing service +After=network-online.target +Wants=network-online.target systemd-networkd-wait-online.service + +[Service] +ExecStart=atuin server start +Restart=on-failure +User=atuin +Group=atuin + +Environment=ATUIN_CONFIG_DIR=/etc/atuin +ReadWritePaths=/etc/atuin + +# Hardening options +CapabilityBoundingSet= +AmbientCapabilities= +NoNewPrivileges=true +ProtectHome=true +ProtectSystem=strict +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +PrivateTmp=true +PrivateDevices=true +LockPersonality=true + +[Install] +WantedBy=multi-user.target +``` + +Este é o arquivo oficial da unidade de serviço Atuin que inclui muitas opções de endurecimento para aumentar a segurança. + +Em seguida, crie [`atuin-server.conf`](https://github.com/atuinsh/atuin/raw/main/systemd/atuin-server.sysusers) em +`/etc/sysusers.d/atuin-server.conf` com conteúdo como este: + +``` +u atuin - "Atuin synchronized shell history" +``` +Este arquivo garantirá que um usuário do sistema seja criado da maneira correta. + +Depois, execute +```sh +systemctl restart systemd-sysusers +``` +para garantir que o arquivo seja lido. Um novo usuário `atuin-server` deve então estar disponível. + +Agora, você pode tentar executar o servidor Atuin: +```sh +systemctl enable --now atuin-server +``` + +```sh +systemctl status atuin-server +``` + +Se ele iniciou corretamente, ele deve ter criado a configuração padrão dentro de `/etc/atuin/`. \ No newline at end of file diff --git a/src/content/docs/pt-br/self-hosting/usage.mdx b/src/content/docs/pt-br/self-hosting/usage.mdx new file mode 100644 index 0000000..954a7c3 --- /dev/null +++ b/src/content/docs/pt-br/self-hosting/usage.mdx @@ -0,0 +1,17 @@ +--- +title: Usando um servidor auto-hospedado +--- + +:::caution +Se você está auto-hospedando, sugerimos fortemente que você se atenha às versões marcadas (tagged releases), e não siga `main` ou `latest` + +Siga os lançamentos do GitHub, e por favor leia as notas para cada lançamento. Na maioria das vezes, as atualizações podem ocorrer sem qualquer intervenção manual. + +Não podemos garantir que todas as atualizações serão aplicadas de forma limpa, e algumas podem exigir algumas etapas extras. +::: + +## Configuração do cliente + +Para usar um servidor auto-hospedado com o Atuin, você precisará configurar o `sync_address` no arquivo de configuração em `~/.config/atuin/config.toml`. Consulte a página de [configuração](/configuration/config/#sync_address) para mais detalhes sobre como definir o `sync_address`. + +Alternativamente, você pode definir a variável de ambiente `ATUIN_SYNC_ADDRESS` para o host correto, por exemplo: `ATUIN_SYNC_ADDRESS=https://api.atuin.sh`. \ No newline at end of file diff --git a/src/content/docs/pt-br/sync-v2.mdx b/src/content/docs/pt-br/sync-v2.mdx new file mode 100644 index 0000000..0fd1248 --- /dev/null +++ b/src/content/docs/pt-br/sync-v2.mdx @@ -0,0 +1,19 @@ +--- +title: Sincronização v2 +--- + +Acabou de instalar o Atuin? Não se preocupe com esta página, tudo deve estar configurado para você. + +Se você usa o Atuin há algum tempo, talvez não esteja usando a melhor sincronização. Há muito tempo, lançamos a sincronização v1. Era "boa o suficiente", mas nunca foi destinada ao uso generalizado que acabou recebendo. + +Após avaliar problemas e feedback dos usuários, desenvolvemos a sincronização v2. Ela inclui uma série de mudanças sobre as quais escreverei em uma futura postagem de blog ou análise aprofundada, mas basta dizer que é: + +1. Mais rápida +2. Mais confiável +3. Usa menos largura de banda +4. Suporta muito mais recursos +5. Recupera-se de problemas de forma mais eficaz + +Realmente não há razão para não usá-la. + +Você pode optar por ela com a seguinte configuração \ No newline at end of file diff --git a/src/content/docs/pt-br/uninstall.md b/src/content/docs/pt-br/uninstall.md new file mode 100644 index 0000000..2b6b05a --- /dev/null +++ b/src/content/docs/pt-br/uninstall.md @@ -0,0 +1,21 @@ +--- +title: Desinstalando o Atuin +--- + +Lamentamos vê-lo partir! + +Se você usou o instalador do Atuin, pode excluí-lo completamente removendo o seguinte: + +1. Exclua o diretório ~/.atuin +2. Exclua o diretório ~/.local/share/atuin +3. Remova a linha que faz referência a "atuin init" da configuração do seu shell + +Caso contrário, a desinstalação do Atuin depende do seu sistema e de como você o instalou. + +Por exemplo, no macOS, você precisaria executar: + +```sh +brew uninstall atuin +``` + +e então remover a integração com o shell. diff --git a/src/i18n/en.json b/src/i18n/en.json new file mode 100644 index 0000000..f0d73b4 --- /dev/null +++ b/src/i18n/en.json @@ -0,0 +1,5 @@ +{ + "siteTitle": "Atuin Docs", + "home": "Home", + "docs": "Docs" +} \ No newline at end of file diff --git a/src/i18n/pt-br.json b/src/i18n/pt-br.json new file mode 100644 index 0000000..063bf55 --- /dev/null +++ b/src/i18n/pt-br.json @@ -0,0 +1,5 @@ +{ + "siteTitle": "Documentação Atuin", + "home": "Início", + "docs": "Documentação" +} \ No newline at end of file diff --git a/src/i18n/utils.ts b/src/i18n/utils.ts new file mode 100644 index 0000000..14f6203 --- /dev/null +++ b/src/i18n/utils.ts @@ -0,0 +1,21 @@ +import en from './en.json'; +import ptBr from './pt-br.json'; + +const languages = { + en, + 'pt-br': ptBr, +}; + +export function getLangFromUrl(url: URL) { + const parts = url.pathname.split('/'); + if (parts[1] && Object.keys(languages).includes(parts[1])) { + return parts[1]; + } + return 'en'; // Default language +} + +export function useTranslations(lang: keyof typeof languages) { + return function t(key: keyof typeof languages['en']) { + return languages[lang][key] || key; + } +} \ No newline at end of file