块与输入行
tTerm 中的终端是一条由块组成的信息流:你运行的每条命令都会连同它的输出成为一个块。你在信息流下方 tTerm 自己的输入行中输入命令。块之后还可以用搜索重新找到。
块会显示命令及其结束状态:绿点,或带退出码的红叉,例如退出码 1。旁边是耗时、运行时所在的目录、git 分支和开始时间。下方是输出。输出很长时只显示最后 400 行,上方的按钮(显示前面的 120 行或显示全部输出)可以显示其余部分。
正在运行的命令会实时显示,和在任何终端里一样:颜色、进度条和密码提示都能正常工作,你输入的内容也会发送给它。vim 或 htop 这样的全屏程序运行时会占据整个窗口,退出后信息流会重新出现。命令结束后,它的屏幕内容会变成可以选择、搜索和复制的文本。
要停止正在运行的命令,点击它的块上的停止,或按 Ctrl+C。如果 shell 在等待命令的剩余部分(比如在未闭合的引号或 heredoc 之后),块上会显示未启动:在块中输入剩余部分,或点击停止。
把鼠标指向已结束的块,它的按钮就会出现。按钮的提示文字分别是:
- 复制命令及其输出和仅复制输出。按钮上出现对勾,就表示已复制。
- 重新运行会在这个终端中再次运行这条命令。新块开始运行时,会被一圈琥珀色的边框围住。
- 复制此块的链接会复制一个链接,打开它时信息流会定位到这个块并将其高亮。这个链接在你登录的任何地方都能用,但只对你有效。
- 为这条命令添加笔记会在命令下方打开一个输入框,按 Enter 保存笔记。笔记也会进入机器的日志,写下后保持原样,可以点击回复来回应。
- 折叠块会把输出折叠起来。折叠后的块会显示隐藏了多少,如已隐藏 12 行,点击即可展开。
输入行是 tTerm 自己的,不属于 shell。你输入的内容会一直留在这里,直到按下 Enter,整条命令才会交给 shell。
- Shift+Enter 换行:一条命令可以有多行。
- ↑ 和 ↓ 用于浏览你在所有设备上的历史记录:先是你在这台机器上运行过的命令,然后是同一项目中其他机器上的。先输入命令的开头,就只会出现以它开头的命令。Ctrl+R 会列出历史记录并提供搜索框,选中的命令会放入输入行。
- 输入时,历史记录中命令的剩余部分会以灰色显示。按 Tab 或 → 即可采用。
- 否则,Tab 会询问机器这个词可能是什么:命令、文件、目录或 git 分支。只有一个结果时直接填入,有多个时会打开一个列表。这个询问不经过终端,所以终端里和 shell 的历史记录中都不会留下任何痕迹。
- Ctrl+L 会清空信息流,和
clear一样。
输入行左侧是你当前所在的目录,以及 git 分支(如果有的话),两者都是按钮。点击目录会列出这里的目录,其中 .. 表示上一级,也可以直接输入路径。点击分支会列出分支,并标出当前和远程。你选择的内容会作为普通的 cd 或 git switch 运行,并以块的形式进入信息流。
命令运行时,输入行中会显示按键会发送给正在运行的命令。点击这里输入下一条命令。 你可以在这里先输入下一条命令,但要等当前命令结束后 Enter 才会生效;在此之前按下它,会显示仍有命令在运行。请等它结束,或在它的块中按 Ctrl+C 停止它。 在输入行中,Ctrl+C 会清除已输入的内容;输入行为空时,它会发送给 shell。
有些命令会造成无法挽回的破坏。tTerm 会先拦下这类命令,在输入行上方的提示栏中询问:这条命令会做什么、在哪台机器上执行、哪些东西将无法恢复。“这条命令会在 web-01 上执行:删除目录及其中的全部内容。无法撤销,也没有回收站可以找回。”运行会执行这条命令,取消则把它放回输入行。
以下命令运行前都会询问:
- 带
-r和-f的rm:删除目录及其中的全部内容; mkfs、fdisk、parted、wipefs:重写磁盘的文件系统;- 带
of=/dev/…的dd:直接写入设备; DROP DATABASE、DROP TABLE、TRUNCATE TABLE:删除数据库或数据表;shutdown、poweroff、halt、init 0:关机;reboot、init 6:重启;- 针对
ssh或sshd的systemctl stop、disable或mask:停止 SSH 服务; ufw deny、ufw reject、带DROP的iptables:修改防火墙规则;userdel、deluser:删除用户账户。
如果 rm -rf 指向 / 或 ~,还会加上一句这条命令针对的是整台机器。机器上的所有内容都将不复存在。 无论命令是你自己输入的、从历史记录中取出的,还是点击了重新运行,tTerm 都会同样询问。
在经典模式下,终端就是一个普通终端。每个按键都直接发送给 shell,Tab 补全和历史记录都由 shell 自己处理,所有内容也都由 shell 绘制,包括提示符。这里没有块,也不做任何检查:终端下方会显示此模式下,危险命令不会再次确认。
输入行右侧有输入行和经典两个选项,用来切换模式;在经典模式下,这个开关位于终端下方。shell 会照常继续运行,这个浏览器会为你的所有终端记住所选的模式。
不能标记命令从哪里开始的 shell(例如 4.4 之前的 bash)只能在经典模式下工作。这时输入行会变灰,开关的提示文字会说明原因。
clear(或 reset)和 Ctrl+L 只是把信息流移出视图,并不会删除它:顶部的已从视图中清除 3 个块:点击显示可以把它找回来。折叠的块和清除后的信息流在这个浏览器中会保持原样,刷新页面后、切换到经典模式再切回来后都是如此。顶部的显示更早的命令可以加载更早的块;块会保留 30 天。
双击终端的标签页,或者侧边栏中、项目页面上的这个终端,然后输入名称:最多 40 个字符,不能是纯数字。Enter 保存,Esc 取消。名称会显示在侧边栏、标签页和项目页面上。