外部过滤器,程序和命令--终端控制命令

本文介绍如何使用tput命令自定义控制台显示效果,包括光标操作、颜色设置及文本属性调整等,并通过示例展示如何编写脚本来实现这些功能。

影响控制台或终端的命令

tput

  初始化终端或者从 terminfo 数据中取得终端信息.

  光标属性

tput clear # 清屏 
tput sc # 保存当前光标位置 
tput cup 10 13 # 将光标移动到 row col 
tput civis # 光标不可见 
tput cnorm # 光标可见 
tput rc # 显示输出
tput rev # 反显当前的颜色方案

  移动光标
  使用tput cup X Y将会把光标移动到当前终端的(X,Y)坐标上, 使用这个命令之前一般都要先用clear命令清屏, 设备左上角的坐标为 (0,0)。

  更改光标的属性
  在向某一设备显示数据时,很多时候您并不希望看到光标. 将光标转换为不可见可以使数据滚动时的屏幕看起来更整洁. 要使光标不可见,请使用 civis 选项(例如,tput civis). 在数据完全显示之后,您可以使用 cnorm 选项将光标再次转变为可见.

  文本属性
  setb 选项(用于设置背景颜色). #(setab和setb)?
  setf 选项(用于设置前景颜色). #(setaf和setf)?
  在 terminfo 数据库中分配的颜色数值. 通常情况下,分配的数值与颜色的对应关系如下:
  0:黑色
  1:蓝色
  2:绿色
  3:青色
  4:红色
  5:洋红色
  6:黄色
  7:白色

tput setb 6 tput setf 4     # 将背景颜色更改为黄色,将前景颜色更改为红色.

例:

#!/bin/bash
# tput.sh: 设置字符串格式

printf $(tput setaf 2; tput bold)'color show\n\n'$(tput sgr0)

for (( i=0; i<=7; i++ ))
do
    echo $(tput setaf $i)"Show me the money"$(tput sgr0) 
done

printf '\n'$(tput setaf 2; tput setab 0; tput bold)'background color show'$(tput sgr0)'\n\n' 

for (( i=0,j=7; i<=7; i++,j-- ))
do
    echo $(tput setaf $i; tput setab $j; tput bold)"Show me the money"$(tput sgr0) 
done

exit 0

运行效果:
这里写图片描述


infocmp

  这个命令会打印出大量当前终端的信息. 事实上它是引用了terminfo数据库的内容.

bash$ infocmp
#   Reconstructed via infocmp from file: /lib/terminfo/x/xterm-256color
xterm-256color|xterm with 256 colors,
    am, bce, ccc, km, mc5i, mir, msgr, npc, xenl,
    colors#256, cols#80, it#8, lines#24, pairs#32767,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,

reset

  复位终端参数并且清除屏幕. 与clear命令一样, 光标和提示符将会重新出现在终端的左上角.

  这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少.


clear

  clear命令只不过是简单的清除控制台或者xterm 的屏幕. 光标和提示符将会重新出现在屏幕或者xterm window的左上角. 这个命令既可以用在命令行中也可以用在脚本中.

  这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令.


script

  这个工具将会记录(保存到一个文件中)所有的用户按键信息(在控制台下的或在xterm window下的按键信息). 这其实就是创建了一个会话记录.

参数:
  -t 指明输出录制的时间数据
  -f 如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。PS:可以用于教学,两个命令行接-f可以实时演示
  -a 输出录制的文件,在现有内容上追加新的内容
  -q 选项可以让scirpt命令以静默模式运行,登录进来的用户不会知道script命令已经运行了. 而-a选项将会让记录附加到文件中,而不会擦除先前的记录.

  要退出记录活动,我们可以在终端中按下Ctrl+D,或者输入exit. 在退出script前,你会发现记录文件的大小为0 Kb,而在退出之后,文件大小会发生改变.


### 终端中执行命令行操作以及强制关闭 Vim 的方法 在 Linux 或类 Unix 系统中,终端是一个强大的工具,允许用户通过命令行界面与操作系统交互。以下是如何在终端中执行命令的操作说明,同时也涵盖了如何强制关闭 Vim 的方法。 #### 在终端中执行外部命令 Vim 提供了一种机制,可以直接从其内部调用外部 shell 命令。这种功能使得用户无需退出 Vim 即可运行系统级的任务。要执行外部命令,可以使用 `:!` 指令[^2]。例如: ```bash :!ls -l ``` 这条命令会在当前目录下列出所有文件及其详细信息[^2]。 如果想再次运行最近的一条外部命令,则只需简单地输入: ```bash :!! ``` 还有其他一些有用的组合包括但不限于: - 调用 Shell 并保持 Vim 运行状态可用:`:sh`, 当完成后可通过键入 exit 返回到 Vim 中; - 把某个外部命令的结果插入到正在编辑的文档里:`:r !cmd`; - 对选定范围内的文本应用外部过滤器程序:`:[range]w !cmd`. #### 强制终止 Vim 会话而不保存更改 当处于不需要保留修改的情况下工作时, 可能会出现想要迅速脱离编辑环境的情形. 那么就可以采用下面介绍的技术手段. ##### 不存储任何变更直接离开 最简单的办法就是在命令模式状态下打入如下内容后敲击回车确认: ```plaintext :q! ``` 该动作将无视一切尚未提交的数据变动情况立刻停止应用程序实例.[^2] ##### 应急状况下的极端措施 假如常规途径失效了(比如说因为权限不足等原因),那么还可以考虑运用信号量来达成目标。具体做法是在另一个独立的新建出来的TTY窗口里面定位进程ID(PID), 接着向那个PID发送SIGKILL信号: ```bash kill -9 $(pgrep vim) ``` 注意这种方式比较粗暴,通常只有在完全没有别的选择的时候才应该采取这样的行动。 ### 文本选择技巧补充 除了上述关于命令执行的内容外,在日常使用过程中我们也常常需要用到高效的文本选取能力。这里简短回顾几个常用的视觉区块定义方式以便大家灵活选用适合场景的具体实现方案: | 动作描述 | 快捷按键 | | --- | --- | | 字符级别高亮标注 | v | | 行单位整体框定 | V | | 列块状区域勾勒 | Ctrl+v | 特别值得一提的是利用复合型导航指令配合这些基础单元可以获得更加精准的目标划定效果。举个例子说如果我们打算一次性圈选出整个文档的所有材料的话,可以试试看这样一组连贯的动作流程:先按下 gg 定位至文章起始处开启逐字扫描过程,接着触发 shift-v 开启跨行列跟踪模式直至抵达最终段落为止最后补上 g 键完成闭合循环形成封闭区间[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值