Merge pull request #67 from flashlab/main

Translate doc into simplified Chinese
This commit is contained in:
Christian Visintin 2021-09-25 11:16:47 +02:00 committed by GitHub
commit ddfa973c19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

410
docs/man-zh.md Normal file
View file

@ -0,0 +1,410 @@
# 操作指南 🎓
- [操作指南 🎓](#操作指南-)
- [用法](#用法)
- [地址参数](#地址参数)
- [如何输入密码](#如何输入密码)
- [文件浏览](#文件浏览)
- [快捷键](#快捷键)
- [处理多个文件](#处理多个文件)
- [同步浏览](#同步浏览)
- [打开/打开方式](#打开打开方式)
- [书签](#书签)
- [我的密码安全吗?](#我的密码安全吗)
- [Linux Keyring](#linux-keyring)
- [KeepassXC setup for termscp](#keepassxc-setup-for-termscp)
- [配置](#配置)
- [SSH Key Storage](#ssh-key-storage)
- [资源管理器格式](#资源管理器格式)
- [主题](#主题)
- [样式](#样式)
- [登录页](#登录页)
- [文件传输页](#文件传输页)
- [Misc](#misc)
- [文本编辑器](#文本编辑器)
- [如何配置文本编辑器?](#如何配置文本编辑器)
- [日志](#日志)
## 用法
termscp启动时可以使用以下选项:
`termscp [options]... [protocol://user@address:port:wrkdir] [local-wrkdir]`
- `-P, --password <password>` 登陆密码
- `-c, --config` 打开termscp时打开配置页面
- `-q, --quiet` 禁用日志
- `-t, --theme <path>` 导入自定义主题
- `-v, --version` 打印版本信息
- `-h, --help` 打开帮助
termscp有两种不同的启动模式不带参数时termscp将显示登录表单页用户可以填写连接到远程服务端所需的参数。
或者用户可以提供一个url作为参数跳过认证页直接与远程服务器进行连接。
如果提供了url参数你也可以提供本地主机的起始工作目录。
### 地址参数
地址参数的格式如下:
```txt
[protocol://][username@]<address>[:port][:wrkdir]
```
让我们通过一些例子熟悉这个特殊语法,它很好上手,你会很快习惯并且替代其他工具......
- 使用默认协议(*在配置中定义*连接到192.168.1.31,如果没有提供端口,则为所选协议的默认端口(取决于你的配置);用户名是系统当前用户名
```sh
termscp 192.168.1.31
```
- 使用默认协议(*在配置中定义*连接到192.168.1.31,用户名为`root`
```sh
termscp root@192.168.1.31
```
- 使用scp连接到192.168.1.31, 端口号为4022; 用户名为 `omar`
```sh
termscp scp://omar@192.168.1.31:4022
```
- 使用scp连接到192.168.1.31, 端口号为4022; 用户名为 `omar`。工作目录为 `/tmp`
```sh
termscp scp://omar@192.168.1.31:4022:/tmp
```
#### 如何输入密码
你可能已经注意到url参数中没有办法直接附加密码你可以通过以下三种方式提供密码
- `-P, --password` 不推荐直接在参数中填写明文密码。强烈不推荐这种方法因为它非常不安全因为你可能会把密码保留在shell历史记录中
- 通过 `sshpass`: 你可以通过 `sshpass` 传入密码, 例如: `sshpass -f ~/.ssh/topsecret.key termscp cvisintin@192.168.1.31`
- 提示输入密码:如果你不使用前面的任何方法,你会被提示输入密码,就像 `scp`、`ssh` 等比较经典的工具上一样。
---
## 文件浏览
termscp中的文件资源管理器是指你与远程建立连接后可以看到的面板。
面板由3个部分组成是的就这三个
- 本地资源管理器面板它显示在你的屏幕左侧显示localhost的当前目录文件列表。
- 远程资源管理器面板:它显示在你屏幕的右边,显示远程主机的当前目录文件列表。
- Find results panel: depending on where you're searching for files (local/remote) it will replace the local or the explorer panel. This panel shows the entries matching the search query you performed.查找结果面板:根据你搜索文件的位置(本地/远程),它将取代对应资源管理器面板。这个面板显示与你执行的搜索查询相匹配的条目。
为了切换面板,你需要输入 `<LEFT>` 来移动远程资源管理器面板,`<RIGHT>` 来移动回本地资源管理器面板。当在查找结果面板时,你需要按`<ESC>`来退出面板,回到前一个面板。
### 快捷键
| 按键 | 命令 | 助记词 |
|---------------|-------------------------------------------------------|-------------|
| `<ESC>` | 断开远程连接;回到登录页 | |
| `<TAB>` | 在日志面板和管理器面板之间切换 | |
| `<BACKSPACE>` | 返回上一次目录 | |
| `<RIGHT>` | 切换到远程管理器面板 | |
| `<LEFT>` | 切换到本地管理器面板 | |
| `<UP>` | 在当前列表中向上移动光标 | |
| `<DOWN>` | 在当前列表中向下移动光标 | |
| `<PGUP>` | 在当前列表中光标上移8行 | |
| `<PGDOWN>` | 在当前列表中光标下移8行 | |
| `<ENTER>` | 进入文件夹 | |
| `<SPACE>` | 上传 / 下载选中文件 | |
| `<A>` | 是否显示隐藏文件 | All |
| `<B>` | 按..排序 | Bubblesort? |
| `<C>` | 复制文件(夹) | Copy |
| `<D>` | 创建文件夹 | Directory |
| `<E>` | 删除文件(同 `DEL` | Erase |
| `<F>` | 文件搜索 (支持通配符) | Find |
| `<G>` | 跳转到指定路径 | Go to |
| `<H>` | 显示帮助 | Help |
| `<I>` | 显示选中文件(夹)信息 | Info |
| `<L>` | 刷新当前目录列表 / 清除选中状态 | List |
| `<M>` | 选中文件 | Mark |
| `<N>` | 使用键入的名称新建文件 | New |
| `<O>` | 编辑文件;参考文本编辑器文档 | Open |
| `<Q>` | 退出termscp | Quit |
| `<R>` | 重命名文件 | Rename |
| `<S>` | 另存为... | Save |
| `<U>` | 进入上层目录 | Upper |
| `<V>` | 使用默认方式打开文件 | View |
| `<W>` | 使用指定程序打开文件 | With |
| `<X>` | 运行命令 | eXecute |
| `<Y>` | 是否开启同步浏览 | sYnc |
| `<DEL>` | 删除文件 | |
| `<CTRL+A>` | 选中所有文件 | |
| `<CTRL+C>` | 终止文件传输 | |
### 处理多个文件
你可以同时操作多个文件,按`<M>`选定它们,或者按`<CTRL+A>` 全选当前工作目录中的所有文件。一旦一个文件被标记为选择,它将在左边显示一个 "*"。在这种模式下,只有选定的文件会被处理,而当前光标高亮显示的项目会被忽略。在查找结果面板中,也可以对多个文件进行处理。
在处理多个文件时,所有的操作都是可用的,但请注意,有些操作的工作方式略有不同。让我们深入了解一下:
- *复制*: 当你复制一个文件时,你会被提示输入完整目标路径名。当处理多个文件时,这个名称指的是所有这些文件将被复制到的目标目录。
- *重命名*: 和复制操作类似, 但是会移动文件到目标路径。
- *保存为*: 和复制操作类似, 但是会写入文件到目标路径。
### 同步浏览
启用时,同步浏览将允许你在两个面板之间同步导航操作。这意味着,每当你在一个面板上改变工作目录时,同样的动作会在另一个面板上重现。如果你想启用同步浏览,只需按下`<Y>`;按两次就可以禁用。当启用时,同步浏览的状态将在状态栏上显示为`ON`。
*警告*:目前,每当你试图访问一个不存在的目录,你不会被提示创建它。这点可能会在未来的更新中改进。
### 打开/打开方式
打开和打开方式的功能是由[open-rs]https://docs.rs/crate/open/1.7.0)提供的。
执行视图命令(`<V>`)时,关联该文件类型的系统默认应用程序会被调用以打开当前文件。这依赖于操作系统默认的服务,所以要确保你的系统中至少安装了一个这样的服务:
- **Windows** 用户: 无需额外操作,程序内部会调用 `start` 命令。
- **MacOS** 用户: 同样无需额外操作,程序内部会调用系统内置的 `open` 命令。
- **Linux** 用户: 以下程序之一需要被安装:
- *xdg-open*
- *gio*
- *gnome-open*
- *kde-open*
- **WSL** 用户: *wslview* 是必要的,你需要安装 [wslu](https://github.com/wslutilities/wslu).
> Q: 我可以使用V命令编辑远程文件吗
> A: 不可以,至少不能在 "远程管理面板 "上直接操作。你必须先把它下载到本地目录这是由于当你打开一个远程文件时该文件会被下载到一个临时目录中但没有办法监控这个文件的状态同时也无法得知你用来打开它的程序何时被关闭。也就是说termscp无法获知你何时完成对该文件的编辑。
---
## 书签
在termscp中你可以保存常用的服务器随后可以从termscp的主界面中快速连接到这些服务器。termscp也会在历史记录中保存你最后连接的16个主机。这个功能保留了连接到某个远程服务器的所有参数只需在登录页下方的Tab中选中书签即可。
书签会尝试被保存在以下路径:
- `$HOME/.config/termscp/` -- Linux/BSD
- `$HOME/Library/Application Support/termscp` -- MacOs
- `FOLDERID_RoamingAppData\termscp\` -- Windows
对于书签(不包括服务器连接历史记录)而言,也可以保存用于验证的密码。注意默认情况下不保存密码,必须在保存新书签时通过提示指定密码。
> 我对在termscp中存储密码的做法非常持保留意见。原因是什么在你的电脑上保存密码可能会让黑客进入你所注册的任何服务器。但我必须承认对许多机器来说每次都输入密码真的很无聊而且很多时候我必须与局域网内的机器一起工作这对攻击者来说没有任何好处所以我想出了一个折衷办法来处理密码。
我强烈建议你遵循这些原则,以决定你是否应该本地保存密码:
- **绝对不要** 在连接公网的机器上本地保存密码,只可以在局域网机器上这么做
- 确保你的机器有网络保护措施。可以的话,对你的磁盘进行加密,并且在你离开时锁定你的电脑。
- 最好是在确保目标机器不易受影响的情况下才保存密码。
请按照以下步骤新建书签:
1. 在认证页中输入待连接服务器的参数
2. 按 `<CTRL+S>`
3. 输入书签名称
4. 选择是否保留密码
5. 按 `<ENTER>` 提交
无论何时你想使用以前保存的连接,只需按下`<TAB>`导航到书签列表,然后按`<ENTER>`将书签参数加载到表格中。
![Bookmarks](https://github.com/veeso/termscp/blob/main/assets/images/bookmarks.gif?raw=true)
### 我的密码安全吗?
这是当然 😉。
如前所述,书签与密码一起保存在你的配置目录中。密码显然不是纯文本,它们是用**AES-128**加密的。这够不够安全?绝对够 (BSD和WSL用户除外😢)
在**Windows**、**Linux**和**MacOS**上,如果可能的话(但应该是),密码会被分别存储在*Windows Vault*、*系统钥匙串*和*Keychain*中。这实际上是超级安全的,并且是由你的操作系统直接管理的。
❗请注意如果你是一个Linux用户你真的应该阅读[下面的章节👀](#linux-keyring),因为你的系统可能没有启用或支持钥匙串功能
另一方面,在*BSD*和*WSL*上,用于加密密码的密钥是存储在你的驱动器上的(在$HOME/.config/termscp。那么仍然有可能检索到密钥来解密密码。幸运的是密钥的位置保证了你的密钥不能被与你不同的用户读取但是是的我仍然不会为暴露在互联网上的服务器保存密码😉。
#### Linux Keyring
我们都喜欢Linux因为它给了用户自由。作为一个Linux用户你基本上可以做任何你想做的事情但这也有一些缺点比如说不同的发行版之间往往没有标准的应用程序。这也涉及到钥匙串。
这意味着在Linux上你的系统可能没有安装钥匙串。不幸的是我们用来处理钥匙存储的库需要一个在D-BUS上公开`org.freedesktop.secrets`的服务,而最糟糕的事实是,只有两个服务在公开它。
- ❗ 如果你使用GNOME作为桌面环境例如ubuntu用户那么你是幸运的因为钥匙串已经由`gnome-keyring`提供,一切都应该已经准备就绪了。
- ❗对于其他桌面环境的用户,有一个很好的程序,你可以用它来获得钥匙串,这就是[KeepassXC](https://keepassxc.org/)我在我的Manjaro中使用它带KDE一切都很正常。唯一的问题是你必须设置它与termscp一起使用但这很简单。要开始使用KeepassXC请阅读更多[这里]#keepassxc-setup-for-termscp
- ❗如果你不想安装任何这些服务呢?好吧,这没有问题! **termscp依然能正常工作**但它会将密钥保存在一个文件中就像它通常为BSD和WSL做的那样。
##### KeepassXC setup for termscp
参照以下步骤为termscp配置keepassXC
1. 安装KeepassXC
2. 进入工具栏的 "工具">"设置"。
3. 选择 "秘密服务集成 "并切换 "启用KeepassXC freedesktop.org secret服务集成"
4. 创建一个数据库,如果你还没有:在工具栏的 "数据库">"新数据库"
5. 从工具条上 "数据库" > "数据库设置"
6. 选择 "secret服务集成 "并切换 "在此组下暴露条目"
7. 7.在列表中选择你希望termscp secret保存到的组。记住这个组可能被任何其他应用程序通过DBUS存储密钥。
---
## 配置
termscp支持一些用户定义参数这些参数可以通过配置来修改。
termscp有一个TOML文件和一些其他的目录所有的参数都会被保存在这些目录中但是不用担心你不必手动编辑这些文件因为我为termscp制作了可交互的用户界面。
termscp和书签一样只需要保证这些路径是可访问的
- `$HOME/.config/termscp/` -- Linux/BSD
- `$HOME/Library/Application Support/termscp` -- MacOs
- `FOLDERID_RoamingAppData\termscp\` -- Windows
要访问配置你只需在termscp的主界面上按`<CTRL+C>`。
这些参数可以自定义:
- **Text Editor**使用的文本编辑器。默认情况下termscp将为你找到默认的编辑器通过这个选项你可以强制使用一个编辑器如`vim`)。**也支持GUI编辑器**,除非它们从父进程中`nohup`。所以,如果这是你的问题:是的,你可以使用`notepad.exe`,然而,**Visual Studio Code不工作**。
- **Default Protocol**默认协议是termscp中默认使用的文件传输协议。这适用于登录页和地址中的CLI参数。
- **Show Hidden Files**:选择是否应默认显示隐藏文件。你可以在运行时按 `A` 来切换是否显示隐藏的文件。
- **Check for updates**:如果设置为 `yes`termscp将通过Github API检查是否有新版本的termscp。
- **Group Dirs**:选择在文件浏览器中是否对文件夹进行分组。如果选择 `Display first`,目录将根据设置的方法排序,但仍显示在文件之前;如果选择 `Display last`,则正好相反。
- **Remote File formatter syntax**:在远程资源管理器中为每个文件显示文件信息的语法。参见[资源管理器格式](#资源管理器格式)
- **Local File formatter syntax**:在本地资源管理器中显示每个文件的文件信息的语法。参见[资源管理器格式](#资源管理器格式)
### SSH Key Storage
配置选项还包括termscp为**SFTP/SCP客户端**提供的一个**必要**功能SSH密钥存储。
你可以从配置中切换到到 `SSH Keys` tab页来访问SSH密钥存储在那里你可以
- **Add a new key**:只需按下`<CTRL+N>`,你将被提示创建一个新的密钥。提供主机名/ip地址和与该钥匙关联的用户名最后会打开一个文本编辑器将**PRIVATE** SSH key粘贴到文本编辑器中保存并退出。
- **Remove an existing key**:只要在你想删除的密钥上按下`<DEL>`或`<CTRL+E>`,就可以从 termscp 中永久删除该密钥。
- **Edit an existing key**:只需在你想编辑的密钥上按下`<ENTER>`,就可以修改私钥。
> 问:等等,我的私钥受密码保护,也是可以用的吗?
> 答当然可以。termscp中提供的认证密码对用户名/密码认证和RSA密钥认证都有效。
### 资源管理器格式
可以为文件浏览器配置自定义的格式,本地和远程主机允许进行单独设定,所以你可以使用两种不同的语法。这些字段的名称为 `File formatter syntax (local)``File formatter syntax (remote)`,将定义文件条目如何在文件资源管理器中显示。
格式化的语法如下 `{KEY1}... {KEY2:LENGTH}... {KEY3:LENGTH:EXTRA} {KEYn}...`
花括号内的每个键将被替换成相关的属性,而括号外的所有内容将保持不变。
- 键名是固定的,必须是下面的关键字之一
- 长度指定了为显示该字段而保留的长度。静态属性不支持这个参数GROUP、PEX、SIZE、USER
- Extra只被一些特定字段支持也是可选的。请看各字段详细描述来判断是否支持Extra参数。
以下是自定义格式支持的键名:
- `ATIME`: 最后访问时间(默认语法为`%b %d %Y %H:%M`Extra参数可以指定时间显示语法例如`{ATIME:8:%H:%M}`
- `CTIME`: 创建时间(语法为`%b %d %Y %H:%M`Extra参数可以指定时间显示语法例如`{CTIME:8:%H:%M}`
- `GROUP`: 所属组
- `MTIME`: 最后修改时间(语法为`%b %d %Y %H:%M`Extra参数可以指定时间显示语法例如`{MTIME:8:%H:%M}`
- `NAME`: 文件名超过24个字符的部分会被省略
- `PEX`: 文件权限UNIX格式
- `SIZE`: 文件大小(目录不显示)
- `SYMLINK`: 超链接(如果存在的话`-> {FILE_PATH}`)。
- `USER`: 所属用户
如果留空,将使用默认的格式化语法。`{NAME:24} {PEX} {USER} {SIZE} {MTIME:17:%b %d %Y %H:%M}`。
---
## 主题
Termscp为你提供了一个很棒的功能可以为应用程序中的几个组件配置颜色。
如果你想自定义termscp有两种可用的途径
- 从**配置菜单**
- 导入一个**配置文件**
为了从termscp创建你的私人定制你所要做的就是从auth活动页进入配置按`<CTRL+C>`,然后`<TAB>`两次。你现在应该已经移到了 `themes` 面板。
在这里你可以用`<UP>`和`<DOWN>`移动来选择你想改变的样式,如下图所示:
![Themes](../assets/images/themes.gif)
termscp支持传统的十六进制`#rrggbb`和RGB`rgb(r, g, b)`语法来表示颜色,但也接受 **[css颜色](https://www.w3schools.com/cssref/css_colors.asp)**(如`crimson`)😉。还有一个特殊的关键词是`Default`,意味着使用的颜色将是基于情景的默认前景或背景颜色(文本和线条的前景色,以及容器的背景色,你猜是什么)。
如前所述你也可以导入主题文件。你可以从themscp提供的主题中获取灵感或直接使用其中的一个位于这个代码仓库的`themes/`目录下运行themscp以导入它们 `termscp -t <theme_file>`。最后,如果一切正常,它应该提示你主题已经成功导入。
### 样式
你可以在下面的表格中找到每个样式字段的描述。
请注意,**样式在配置页面不起作用**,以保证它总是可以访问,以防你把一切都弄乱了。
#### 登录页
| 字段 | 描述 |
|----------------|------------------------------------------|
| auth_address | IP地址输入框的颜色 |
| auth_bookmarks | 书签面板的颜色 |
| auth_password | 密码输入框的颜色 |
| auth_port | 端口输入框的颜色 |
| auth_protocol | 协议选项组的颜色 |
| auth_recents | 历史记录面板的颜色 |
| auth_username | 用户名输入框的颜色 |
#### 文件传输页
| 字段 | 描述 |
|--------------------------------------|---------------------------------------------------------------------------|
| transfer_local_explorer_background | 本地资源浏览器的背景色 |
| transfer_local_explorer_foreground | 本地资源浏览器的前景色 |
| transfer_local_explorer_highlighted | 本地资源浏览器的边框和高亮色 |
| transfer_remote_explorer_background | 远程资源浏览器的背景色 |
| transfer_remote_explorer_foreground | 远程资源浏览器的前景色 |
| transfer_remote_explorer_highlighted | 远程资源浏览器的边框和高亮色 |
| transfer_log_background | 日志面板的背景色 |
| transfer_log_window | 日志面板的窗口颜色 |
| transfer_progress_bar_partial | 进度条完成部分颜色 |
| transfer_progress_bar_total | 进度条背景色颜色 |
| transfer_status_hidden | 状态栏 "hidden" 标签的颜色 |
| transfer_status_sorting | 状态栏 "sorting" 标签的颜色;同时适用于文件排序对话框 |
| transfer_status_sync_browsing | 状态栏 "sync browsing" 标签的颜色 |
#### Misc
以下这些样式会在程序不同的位置起作用:
| 字段 | 描述 |
|-------------------|---------------------------------------------|
| misc_error_dialog | 报错信息的颜色 |
| misc_input_dialog | 输入对话框的颜色(比如拷贝文件时) |
| misc_keys | 键盘输入文字的颜色 |
| misc_quit_dialog | 退出窗口的颜色 |
| misc_save_dialog | 保存窗口的颜色 |
| misc_warn_dialog | 警告窗口的颜色 |
---
## 文本编辑器
Termscp有很多功能你可能已经注意到了其中之一就是可以查看和编辑文本文件。不管文件是在本地主机还是在远程主机上termscp都提供了在你喜欢的文本编辑器中打开文件的功能。
如果文件位于远程主机上,该文件将首先被下载到你的临时文件目录中,然后,**只有**在对该文件进行了修改的情况下,才会重新上传至远程主机上。
多说一句,**你只能编辑文本文件**;二进制文件是不可以的。
### 如何配置文本编辑器?
文本编辑器是通过[awesome crate](https://github.com/milkey-mouse/edit)自动查找的如果你想改变默认的文本编辑器请在termscp配置中改变它。[阅读更多](#配置)
---
## 日志
termscp会为每个会话创建一个日志文件该文件在
- `$HOME/.config/termscp/termscp.log` -- Linux/BSD
- `$HOME/Library/Application Support/termscp/termscp.log` -- MacOs
- `FOLDERID_RoamingAppData\termscp\termscp.log` -- Windows
日志不会滚动,只是在每次启动 termscp 后被截断,所以如果你想报告一个问题并想附上你的日志文件,再次启动 termscp 之前请先将日志文件保存在一个安全的地方。日志文件总是以*trace*级别报告所以它有点冗长。我知道你可能有一些关于日志文件的问题所以我做了一个Q/A
> 有没有可能降低日志级别?
不可以,原因很简单:当一个问题发生时,你必须能够知道是什么原因造成的,而唯一的办法就是在日志文件中设置记录最多的细节。
> 如果日志级别设置为trace会产生很大的文件吗
应该不会除非你从不退出termscp但我认为这很可能发生。一个长的会话可能会产生高达10MB的日志文件我说的是一个长的会话但我认为一个正常的会话不会超过2MB。
> 我不希望有日志记录,我可以把它关掉吗?
可以的。只要用`-q or --quiet`选项启动termscp。你可以用别名来启动termscp从而使这个选项一直生效。记住日志是用来诊断故障的所以在每个开源项目的背后都应该有这样的互动反馈保留日志文件可能是你支持项目的途径😉。我不想让你感到内疚只是想提一句。
> 日志是安全的吗?
如果你担心安全问题,日志文件不包含任何普通的密码,所以不用担心,它暴露的信息与同级文件 `书签` 报告的信息相同。