Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:终端、会话与日常操作 · 终端展示、媒体与桌面工具至Shell条件、历史与目录跳转 ​

返回分篇目录

终端展示、媒体与桌面工具 ​

天气、ASCII 文字、动漫、游戏平台、窗口管理与鼠标显示属于日常交互工具,集中在此便于跳过。

ansiweather · 一个 shell 脚本,用于在终端中显示当前的天气状况 ​

更多信息:https://github.com/fcambus/ansiweather#usage。

  • 使用公制单位显示 Rzeszow, Poland 接下来 7 天的天气预报:
bash
ansiweather -u metric -f 7 -l {{Rzeszow,PL}}
  • 显示带符号和日光数据信息的天气预报:
bash
ansiweather -F -s true -d true
  • 显示带风力等级和湿度信息的天气预报:
bash
ansiweather -w true -h true

banner · 将给定参数输出为大型 ASCII 文字 ​

更多信息:https://manned.org/banner。

  • 将文字信息打印为大横幅(引号是可选的):
bash
banner "{{Hello World}}"
  • 将文字信息打印为横幅,宽度为 50 个字:
bash
banner {{[-w|--width]}} 50 "{{Hello World}}"
  • 从 stdin 中读取文本:
bash
banner

ani-cli · 一个用于浏览和观看动漫的命令行工具 ​

另请参阅:animdl。 更多信息:https://manned.org/ani-cli。

  • 按名称搜索动漫:
bash
ani-cli "{{动漫名称}}"
  • 下载([d]ownload)剧集:
bash
ani-cli {{[-d|--download]}} "{{动漫名称}}"
  • 下载([d]ownload)一个范围([r]ange)的剧集:
bash
ani-cli {{[-d|--download]}} {{[-r|--range]}} "{{1 6}}" "{{动漫名称}}"
  • 下载([d]ownload)整部动漫(所有剧集的范围):
bash
ani-cli {{[-d|--download]}} {{[-r|--range]}} "1 -1" "{{动漫名称}}"
  • 使用 [v]LC 播放器播放:
bash
ani-cli {{[-v|--vlc]}} "{{动漫名称}}"
  • 观看特定([e]pisode)剧集:
bash
ani-cli {{[-e|--episode]}} {{剧集序号}} "{{动漫名称}}"
  • 从历史记录中([c]ontinue)继续观看动漫:
bash
ani-cli {{[-c|--continue]}}
  • 更新([U]pdate)ani-cli:
bash
ani-cli {{[-U|--update]}}

steam · Valve 的电子游戏平台 ​

更多信息:https://developer.valvesoftware.com/wiki/Command_Line_Options。

  • 启动 Steam 同时将调试信息输出到 stdout:
bash
steam
  • 启动 Steam 并启用内置调试控制台标签页:
bash
steam -console
  • 在运行的 Steam 实例中启用并打开控制台标签页:
bash
steam steam://open/console
  • 使用指定认证信息登录 Steam:
bash
steam -login {{username}} {{password}}
  • 以大屏幕模式启动 Steam:
bash
steam -tenfoot
  • 退出 Steam:
bash
steam -shutdown

i3 · 一款动态平铺窗口管理器 ​

更多信息:https://i3wm.org/docs/userguide.html。

  • 启动 i3(注意在此命令运行前,务必关闭其它先前存在的窗口管理器):
bash
i3
  • 打开新终端窗口:
bash
<Super Enter>
  • 将当前容器移到指定编号工作区(按示例配置使用 Super 为 mod 键):
bash
<Super Shift {{数字键}}>
  • 切换到 数字 号工作区:
bash
<Super {{数字键}}>
  • 水平布局打开新窗口:
bash
<Super h>
  • 垂直布局打开新窗口:
bash
<Super v>
  • 打开应用(在执行命令后输入应用名称):
bash
<Super d>

unclutter · 隐藏鼠标光标 ​

更多信息:https://manned.org/unclutter.1x。

  • 在 3 秒后隐藏鼠标光标:
bash
unclutter -idle {{3}}

Shell条件、历史与目录跳转 ​

atuin · 存储您的 shell 历史记录到可搜索的数据库 ​

可选择在机器之间同步加密历史记录。 更多信息:https://docs.atuin.sh/。

  • 为 Bash/Zsh 加载 Atuin 的 Shell 集成(不是安装可执行程序;fish 使用自己的初始化方式):
bash
eval "$(atuin init {{bash|zsh}})"
历史混用反例(保留旧记录,勿直接执行)

旧例把 fish 与 Bash/Zsh 放进同一个 eval 模板;fish 的集成方式应按其 Shell 语法配置,不能从这里机械替换。

bash
eval "$(atuin init {{bash|zsh|fish}})"
  • 从 shell 默认历史记录文件导入:
bash
atuin import auto
  • 搜索 shell 历史记录中指定的命令:
bash
atuin search {{命令}}
  • 使用指定的用户名,邮箱和密码在默认同步服务器注册账号:
bash
atuin register {{[-u|--username]}} {{用户名}} {{[-e|--email]}} {{邮箱}} {{[-p|--password]}} {{密码}}
  • 登录默认同步服务器:
bash
atuin login {{[-u|--username]}} {{用户名}} {{[-p|--password]}} {{密码}}
  • 与同步服务器同步历史记录:
bash
atuin sync

[[ · 检查文件类型,比较数值 ​

如果条件计算结果为真返回 0,如果计算结果为假返回 1。 更多信息:https://gnu.org/software/bash/manual/bash.html#index-_005b_005b。

  • 测试一个给定的变量是否等于/不等于指定的字符串:
bash
[[ ${{变量}} {{==|!=}} "{{字符串}}" ]]
  • 测试一个给定的变量是否符合指定的通配符/正则表达式:
bash
[[ ${{变量}} {{==|=~}} {{模式}} ]]
  • 测试一个给定的变量是否等于/不等于/大于/小于/大于等于/小于等于指定的数字:
bash
[[ ${{变量}} -{{eq|ne|gt|lt|ge|le}} {{数字}} ]]
  • 测试指定的变量的值是否非空:
bash
[[ -n ${{变量}} ]]
  • 测试指定的变量的值是否为空:
bash
[[ -z ${{变量}} ]]
  • 测试指定文件是否存在:
bash
[[ -f {{路径/到/文件}} ]]
  • 测试指定目录是否存在:
bash
[[ -d {{路径/到/目录}} ]]
  • 测试指定文件或目录是否存在:
bash
[[ -e {{路径/到/文件或目录}} ]]

[ · 检查文件类型,比较数值 ​

如果条件计算结果为真返回 0,如果计算结果为假返回 1。 另请参阅:test。 更多信息:https://gnu.org/software/bash/manual/bash.html#index-test。

  • 测试一个给定的变量是否等于/不等于指定的字符串:
bash
[ "${{变量}}" {{=|!=}} "{{字符串}}" ]
  • 测试一个给定的变量是否等于/不等于/大于/小于/大于等于/小于等于指定的数字:
bash
[ "${{变量}}" -{{eq|ne|gt|lt|ge|le}} {{数字}} ]
  • 测试指定的变量的值是否非空:
bash
[ -n "${{变量}}" ]
  • 测试指定变量的值是否为空:
bash
[ -z "${{变量}}" ]
  • 测试指定文件是否存在:
bash
[ -f {{路径/到/文件}} ]
  • 测试指定目录是否存在:
bash
[ -d {{路径/到/目录}} ]
  • 测试指定文件或目录是否存在:
bash
[ -e {{路径/到/文件或目录}} ]

^ · Bash 内置命令,用于快速替换上一个命令中的字符串并运行结果 ​

等效于 !!:s^string1^string2。 另请参阅:!。 更多信息:https://gnu.org/software/bash/manual/bash.html#Event-Designators。

  • 运行上一个命令,将 字符串 1 替换为 字符串 2:
bash
^{{字符串 1}}^{{字符串 2}}
  • 从上一个命令中移除 字符串 1:
bash
^{{字符串 1}}^
  • 在上一个命令中将 字符串 1 替换为 字符串 2,并在其末尾添加 字符串 3:
bash
^{{字符串 1}}^{{字符串 2}}^{{字符串 3}}
  • 替换所有出现的 字符串 1:
bash
^{{字符串 1}}^{{字符串 2}}^:&

! · Bash 内置命令,用于替换历史记录中找到的命令 ​

另请参阅:^。 更多信息:https://gnu.org/software/bash/manual/bash.html#Event-Designators。

  • 使用sudo重新执行上一个命令:
bash
sudo !!
  • 通过在history中出现的行号来调取命令:
bash
!{{行号}}
  • 调取history中的倒数第数字条命令:
bash
!-{{数字}}
  • 调取以字符串开头的最近执行的命令:
bash
!{{字符串}}
  • 调取上一个命令的参数给当前命令:
bash
{{当前命令}} !*
  • 调取上一个命令的最后一个参数给当前命令:
bash
{{当前命令}} !$
  • 调取上一个命令,但不包含最后一个参数:
bash
!:-
  • 显示以特定字符串开头的最后一个命令,但不执行:
bash
!{{字符串}}:p

test · 检查文件类型,比较数值 ​

如果条件评估为真,则返回 0,如果评估为假,则返回 1。 另请参阅:[。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/test-invocation.html。

  • 测试指定的变量是否等于指定的字符串:
bash
test "{{$MY_VAR}}" = "{{/bin/zsh}}"
  • 测试指定的变量是否为空([z]ero 长度):
bash
test -z "{{$GIT_BRANCH}}"
  • 测试指定的文件是否存在([f]ile):
bash
test -f "{{路径/到/文件}}"
  • 测试指定的目录是否不存在([d]irectory):
bash
test ! -d "{{路径/到/目录}}"
  • 如果 A 为真,则执行 B,如果出错则执行 C(请注意,即使 A 失败,C 也可能会运行):
bash
test {{condition}} && {{echo "true"}} || {{echo "false"}}
  • 在条件语句中使用 test:
bash
if test -f "{{路径/到/文件}}"; then echo "文件存在"; else echo "文件不存在"; fi

unimatrix · 使用 Unicode 字符模拟《黑客帝国》的视觉效果 ​

另请参阅:cmatrix。 更多信息:https://github.com/will8211/unimatrix。

  • 模仿 cmatrix 的默认输出(无 Unicode,适用于 TTY):
bash
unimatrix --no-bold --speed {{96}} --character-list {{o}}
  • 无粗体字符,缓慢地显示,使用表情符号、数字和少量符号:
bash
unimatrix --no-bold --speed {{50}} --character-list {{ens}}
  • 更改字符的颜色:
bash
unimatrix --color {{red|green|blue|white|...}}
  • 使用字母代码选择字符集(可用字符集请参阅 unimatrix --help):
bash
unimatrix --character-list {{character_sets}}
  • 更改滚动速度:
bash
unimatrix --speed {{number}}

z · 记录被使用次数最多的目录并允许在它们之间以字符串或正则表达式来进行匹配和跳转 ​

更多信息:https://github.com/rupa/z。

  • 跳转到一个名字带有 "foo" 的文件夹:
bash
z {{foo}}
  • 跳转到一个名字带有 "foo" 并且后面带有 "bar" 的文件夹(例:fooesbar):
bash
z {{foo}} {{bar}}
  • 跳转到名字带有 "foo" 并且拥有最高访问次数的文件夹:
bash
z -r {{foo}}
  • 跳转到最近使用的名字带有 "foo" 的文件夹:
bash
z -t {{foo}}
  • 列出在 z 的数据库中名字带有 "foo" 的文件夹:
bash
z -l {{foo}}
  • 将当前文件夹从 z 的数据库中移除:
bash
z -x
  • 限制匹配结果为当前目录的子目录:
bash
z -c {{foo}}

示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。

继续阅读