Arthas 应用诊断利器学习及使用(四) 基础命令pwd,plaintext,wc,keymap

622 阅读2分钟

这是我参与更文挑战的第2天,活动详情查看: 更文挑战

本文内容基于arthas 3.5.1 版本,介绍基础命令pwd,plaintext,wc,keymap的使用及实现。

一.pwd命令

返回当前的工作目录,和linux命令类似

文件位于com.taobao.arthas.core.command.basic1000.PwdCommand.java

image.png

new File("").getAbsolutePath()返回当前工作目录。

二.plaintext命令

将输出的结果去除ANSI颜色

文件位于com.taobao.arthas.core.shell.command.internal.PlainTextHandler.java

实际调用的方法是RenderUtil.ansiToPlainText

该方法去除颜色然后输出文本,通过将\u001b[[;\d]*m替换掉来实现ANSI去除颜色。 image.png

三.wc命令

按行统计输出结果。

文件位于com.taobao.arthas.core.shell.command.internal.WordCountHandler.java

参数名称参数缩写参数说明必填项示例
-l统计输出的行数必填jad demo.MathGame main | wc -l

按行分割统计input.split("\n").lengthimage.png

四.keymap命令

keymap命令输出当前的快捷键映射表,keymap命令仅支持在终端模式下。

默认输出内容如下:

快捷键快捷键说明命令名称命令说明
\C-actrl + abeginning-of-line跳到行首
\C-ectrl + eend-of-line跳到行尾
\C-fctrl + fforward-word向前移动一个单词
\C-bctrl + bbackward-word向后移动一个单词
\e[D键盘左方向键backward-char光标向前移动一个字符
\e[C键盘右方向键forward-char光标向后移动一个字符
\e[A键盘上方向键history-search-backward上翻显示上一个命令
\e[B键盘下方向键history-search-forward下翻显示下一个命令
\C-hctrl + hbackward-delete-char向后删除一个字符
\C-?ctrl + shift + /backward-delete-char向后删除一个字符
\C-uctrl + uundo撤销上一个命令,相当于清空当前行
\C-dctrl + ddelete-char删除当前光标所在字符
\C-kctrl + kkill-line删除当前光标到行尾的所有字符
\C-ictrl + icomplete自动补全,相当于敲TAB
\C-jctrl + jaccept-line结束当前行,相当于敲回车
\C-mctrl + maccept-line结束当前行,相当于敲回车

文件位于com.taobao.arthas.core.command.basic1000.KeymapCommand.java

Helper.loadInputRcFile()方法获取快捷键

1.加载目录$USER_HOME/.arthas/conf/inputrc为用户自定义快捷键文件
2.获取默认文件ShellServerOptions.DEFAULT_INPUTRC即路径为com/taobao/arthas/core/shell/term/readline/inputrc 的文件。
3.若未找到则使用com.alibaba.middleware:termd-corejar包中的快捷键文件,否则报错无法加载该文件。\

读取完成后,如果是#开头的说明是注释,忽略,符合条件的行按冒号分割出快捷键及命令名称。
RenderUtil.render方法生成表格形式的字符串内容。