前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[效率编程] 几个 Shell小工具( Expect Htop Ccat Z Iotop)

[效率编程] 几个 Shell小工具( Expect Htop Ccat Z Iotop)

作者头像
呼延十
发布2019-07-01 17:06:10
1.2K0
发布2019-07-01 17:06:10
举报
文章被收录于专栏:呼延呼延

背景介绍

总结记录几个shell小工具,都是很常用且很好用的东西.

  • expect : 实现人机交互的一个命令行工具
  • ccat : linux 下上色版本的cat
  • htop : 上色增强版本的top
  • 软连接
  • z: 快速的cd

最终实现了,高效的登录至服务器,不用输入密码.以及使用ccat查看源码,使用htop观察机器内存等信息.

Expect

介绍

Expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作.

通俗的讲,就是允许你在脚本里设定一些”原本要手动输入”的东西.

安装

mac OS: brew install expect

几个重要的命令
  • send:向进程发送字符串,用于模拟用户的输入。注意一定要加\r回车
  • expect:从进程接收字符串
  • spawn:启动进程(由spawn启动的进程的输出可以被expect所捕获)
  • interact:用户交互
Demo
代码语言:javascript
复制
#!/usr/local/bin/expect
set server [lindex $argv 0]
set timeout -1
set passwd XXXXXXX
spawn ssh jump
expect {
    "*Enter passphrase*" {send "$passwd\r";exp_continue}
    "*Welcome to*" {send "$server\r";}
}
interact

这是实现的一个expect的简单应用.实现了自动登录跳板机并选择机器进行登入.具体解释一下.

  • 第一行注释,说明此文件使用expect解释器
  • 第二行设置一个变量,server=输入的第一个参数
  • 第三行设置一个变量,passwd=密码
  • 第四行新起了一个进程来执行ssh jump命令,
  • expect命令匹配到Enter passphrase时输入密码.
  • 匹配到welcome*时输入server.
  • 交给用户来交互

<a href=”http://xstarcd.github.io/wiki/shell/expect.html” 很不错的expect教程</a> 中有多个常用的expect的示例.可以参考.

ccat

安装

brew install ccat

效果

输出一个java文件

2019-04-02-17-34-21
2019-04-02-17-34-21

htop

安装

brew install htop

常用功能键
代码语言:javascript
复制
            F1 : 查看htop使用说明
            F2 : 设置
            F3 : 搜索进程
            F4 : 过滤器,按关键字搜索
            F5 : 显示树形结构
            F6 : 选择排序方式
            F7 : 减少nice值,这样就可以提高对应进程的优先级
            F8 : 增加nice值,这样可以降低对应进程的优先级
            F9 : 杀掉选中的进程
            F10 : 退出htop

            / : 搜索字符
            h : 显示帮助
            l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
            u :显示所有用户,并可以选择某一特定用户的进程
            s : 将调用strace追踪进程的系统调用
            t : 显示树形结构

            H :显示/隐藏用户线程
            I :倒转排序顺序
            K :显示/隐藏内核线程    
            M :按内存占用排序
            P :按CPU排序    
            T :按运行时间排序

            上下键或PgUP, PgDn : 移动选中进程
            左右键或Home, End : 移动列表    
            Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程
效果
2019-04-02-17-35-13
2019-04-02-17-35-13

在这个界面,可以使用f3搜索,f4过滤,具体操作

linux设置软连接

经过上面的第一个步骤,我们有了一个jump的脚本,但是每次都要去执行脚本也是一件非常麻烦的事情.

我们希望可以像使用mysql等等命令那样在全局都可以.

这里有两种实现方式:

软连接

/usr/local/bin目录下设置一个目标脚本的软连接即可.

代码语言:javascript
复制
ln -s ~/jump /usr/local/bin/jump
使用zsh的全局别名

在~/.zshrc文件中加入alias="~/jump"即可.

Z

这个名字真的是简洁.

这是一个快速管理你的cd命令的脚本.github仓库

基本实现就是:

你安装了z,之后你的cd会被记录到.z文件,然后当你想切换目录的时候,只需要z xx + tab即可. xx是你想去的目录的部分名字即可,z使用正则表达式来匹配,所以只要你输入的xx足够不重复,基本是无敌精准的.

安装

使用zsh的朋友,打开~/.zshrc,将其中的plugins={git} 添加z,变成plugins={git z},然后执行source ~/.zshrc即可.

使用

先瞎cd几下.然后z:

2019-04-02-20-25-53
2019-04-02-20-25-53

参考文章

很不错的expect教程

中文版expect教程

iotop

查看磁盘IO的工具.

在ubuntu环境下:

代码语言:javascript
复制
wget http://guichaz.free.fr/iotop/files/iotop-0.6.tar.bz2
tar -xjvf iotop-0.6.tar.bz2
cd iotop-0.6/

之后执行./iotop.py即可.

如果嫌麻烦,可以设置软连接即可全局使用啦.

代码语言:javascript
复制
# 仅显示实际在做io的进程
iotop -o
# 根据pid进行筛选
iotop -p

完.

ChangeLog

2019-04-02 完成 2019-04-03 添加Z 2019-04-21 添加iotop

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • Expect
    • 介绍
      • 安装
        • 几个重要的命令
          • Demo
          • ccat
            • 安装
              • 效果
              • htop
                • 安装
                  • 常用功能键
                    • 效果
                    • linux设置软连接
                      • 软连接
                        • 使用zsh的全局别名
                        • Z
                          • 安装
                            • 使用
                            • 参考文章
                            • iotop
                              • ChangeLog
                              相关产品与服务
                              命令行工具
                              腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档