在通过SSH和一些终端软件访问Linux服务器时,通常只能使用Shell命令行,而不能使用图形用户界面。若工作环境中只能使用Shell,同时又需要通过互联网查询资料时,不能使用传统的图形化浏览器无疑是非常不方便的。幸好,w3m可以实现在Shell中访问互联网的大部分功能。
w3m是个开放源代码的文字式网页浏览器。w3m支持表格、框架、SSL连线、颜色。如果是在合适的终端软件上,甚至还支持“内联图像(Inline Image)”,这个软件通常会尽量呈现出网页本来的排版和布局。“w3m”这名字是来自“WWW-wo-Miru(WWWを見る)”,也就是日文的“看WWW”之义。
一、环境描述
1. 虚拟机配置
- CPU:单核 2.4GHz
- 内存:DDR3 1333 2GB
- 硬盘:120GB
- IP地址:192.168.21.135
- 操作系统:CentOS 6.6 x86_64 Minimal
2. 编译环境
- GCC:4.4.7 20120313
- YUM源:官方Base源 + EPEL源 + RepoForge源
3. w3m
- 版本:w3m-0.5.3.tar.gz
- 安装方式:编译安装(本文内容)
二、编译安装
1. 添加软件源
在Shell中运行以下命令,添加EPEL和RepoForge的软件源:
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
2. 安装依赖
在Shell中运行以下命令,安装依赖包:
yum install libgnomeui-devel
yum install gc-devel imlib-devel imlib2-devel gdk-pixbuf2-devel gpm-devel ncurses-devel openssl-devel compface-devel man nkf wget
yum groupinstall "Development Tools"
注意,需要遵守命令执行的顺序,否则很有可能会安装CentOS官方源中的0.52版本的w3m。
3. 下载源码包
在Shell中运行以下命令,下载w3m的源码包:
cd /root/Downloads
wget http://nchc.dl.sourceforge.net/project/w3m/w3m/w3m-0.5.3/w3m-0.5.3.tar.gz
4. 解压源码包
在Shell中运行以下命令,解压缩源码包:
tar xvzf w3m-0.5.3.tar.gz
cd w3m-0.5.3
5. 编译安装
在Shell中运行以下命令,编译安装w3m:
./configure --prefix=/usr/local/w3m --enable-keymap=w3m --enable-image="x11,fb,fb+s" --with-charset=GBK --enable-japanese --enable-gopher --with-libiconv-prefix --with-libintl-prefix --with-imagelib="gtk2 gdk-pixbuf imlib imlib2" --with-migemo --with-editor --with-mailer --with-browser --with-ssl --with-termlib="terminfo mytinfo termcap ncurses curses" --with-gc
make && make install
上述的编译配置命令会将w3m安装在/usr/local/w3m
目录,并且使用w3m自己的键盘映射。
6. 验证
在Shell中运行w3m,若命令输出如下图所示,则表示编译安装成功:
三、命令选项
由于采用最小化的方式来安装CentOS系统,这种方式默认是不会建立各种命令手册的索引数据库的,这样会导致通过关键字搜索手册时找不到任何结果。需要在Shell中运行以下命令:
makewhatis
1. w3mman
w3mman是一种基于w3m浏览器的man工具,可以用来查看各种Linux命令的手册,基本用法如下所示:
- w3mman [-M path] [section] page
- w3mman [-M path] -k keyword
可以使用的命令行选项如下所示:
-
-M path
显式指定命令手册的路径,会覆盖MANPATH
环境变量指定的路径。 -
section
显式指定命令所属的类别。手册中分为几个section,section号与其对应的内容为:
1:可执行程序或shell命令
2:系统调用(由内核提供的函数)
3:库调用(程序库中的函数)
4:特殊文件(通常是在/dev
目录找到的设备文件)
5:文件格式和约定(例如,/etc/passwd
)
6:游戏
7:杂项
8:系统管理命令(通常需要root权限)
9:内核例程 -
page
section下面再分为page,也就是每个Linux命令的手册页面,通常名称就是命令名。不同的section可能含有相同名字的page,例如section(1)、section(2)都含有叫kill的page,这两个page表示为kill(1),kill(2),括号中的数字为section号,表示在对应section中的page。 -
-k keyword
这个选项会在命令手册的索引数据库中搜索指定的关键字。
2. w3m
w3m是一种基于文本的Web浏览器,基本用法如下所示:
- w3m [options] [URL or filename]
可以在命令行中运行w3m -h
命令,显示当前所有可用选项的完整列表。在启动时,w3m将会加载命令行指定的任何本地文件或远程URL。如果想要查看运行时选项的帮助信息,那么在运行w3m时按下“H”快捷键即可。可用的命令行选项如下所示:
-
-t tab
设置标签页的宽度,默认值为8。 -
-r
忽略退格键的效果。 -
-l line
当从标准输入读取text/plain文档时,指定w3m内部保留的行号,默认值为10000。 -
-I charset
指定文档的字符集。 -
-O
指定显示/输出的字符集。 -
-e
使用EUC-JP日文编码。 -
-s
使用Shift_JIS日文编码。 -
-j
使用JIS日文编码。 -
-B
加载书签(收藏夹)。 -
-bookmark file
指定书签文件。 -
-T type
指定文档类型。若不使用这个选项,文档类型取决于文件名的后缀。如果确定失败,那么就将文档当做text/plain格式。可选值为text/html和text/plain。 -
-m
互联网消息模式。 -
-v
可视化的启动模式。 -
-M
单色显示模式。 -
-N
在每个新的标签页打开命令行指定的URL。 -
-F
自动渲染框架。 -
-cols width
指定列的宽度(和-dump
选项同时使用)。 -
-ppc count
指定每个字符的像素数量(可取值:4.0…32.0)。 -
-ppl count
指定每行的像素数量(可取值:4.0…64.0)。 -
-dump
将格式化页面的内容转储至标准输出(stdout)。 -
-dump_head
将HEAD请求的响应信息转储至标准输出(stdout)。 -
-dump_source
将页面源码转储至标准输出(stdout)。 -
-dump_both
将页面的HEAD和源码转储至标准输出(stdout)。 -
-dump_extra
将页面的HEAD、源码和额外信息转储至标准输出(stdout)。 -
-post file
使用POST方法提交指定文件的内容。 -
-header string
插入指定字符串作为页面头部。 -
+<num>
跳转至行数为<num>的行。 -
-num
显示行号。 -
-no-proxy
不使用代理服务器。 -
-4
只使用IPv4协议(等同于-o dns_order=4
选项)。 -
-6
只使用IPv6协议(等同于-o dns_order=6
选项)。 -
-no-mouse
不使用鼠标。 -
-cookie
使用cookie。 -
-no-cookie
不使用cookie。 -
-graph
表格和菜单的边界使用DEC专用的图形。 -
-no-graph
表格和菜单的边界使用ASCII字符。 -
-S
压缩多个空行。 -
-W
切换循环搜索模式。 -
-X
不使用termcap命令的init/deinit方法。 -
title[=TERM]
将缓冲名称设置为终端的标题字符串。 -
-o opt=value
为指定的配置选项赋值。 -
-show-option
输出所有的配置选项。 -
-config file
指定配置文件。 -
-help
输出w3m的帮助信息。 -
-version
输出w3m的版本信息。 -
-reqlog
记录请求日志文件。
四、文档颜色
超链接和图像的显示效果如下表所示:
彩色模式 | 单色模式 |
---|---|
超链接 | 蓝色 |
内联图像 | 绿色 |
表单输入 | 红色 |
可以通过选项配置命令“o”来自定义颜色。
五、快捷键
在调用之后,你可以通过键盘的单字符命令操作w3m浏览器。w3m默认的快捷键设置如下所示:
1. 页面/光标动作
-
space
或ctrl+v
下一页 -
b
或esc+v
上一页 -
l
或ctrl+f
光标右移 -
h
或ctrl+b
光标左移 -
j
或ctrl+n
光标下移 -
k
或ctrl+p
光标上移 -
shift+j
向上滚动一行 -
shift+k
向下滚动一行 -
^
或ctrl+a
跳转至行首 -
$
或ctrl+e
跳转至行尾 -
w
跳转至下一个单词 -
shift+w
跳转至上一个单词 -
>
将屏幕右移 -
<
将屏幕左移 -
.
将屏幕右移一列 -
,
将屏幕左移一列 -
g
跳转至首行 -
shift+g
跳转至末行 -
数字+g
跳转至指定行号 -
shift+Z
跳转至中间的行 -
z
跳转至中间的列 -
tab
跳转至下一个超链接 -
ctrl+u
或esc+tab
跳转至上一个超链接 -
[
跳转至第一个超链接 -
]
跳转至最后一个超链接 -
shift+t
打开一个新的标签页 -
esc+t
打开标签页列表 -
{
向左切换标签页 -
}
向右切换标签页 -
ctrl+q
关闭当前的标签页
2. 超链接操作
-
enter
进入超链接 -
esc+enter
将链接保存至文件 -
u
查看链接的URL -
i
查看图像的URL -
shift+i
查看内联图像 -
esc+I
将内联图像保存至文件 -
:
将URL字符串标记为锚链接 -
c
查看当前页面的URL -
=
显示当前文档的相关信息 -
ctrl+h
查看URL的浏览历史 -
shift+f
渲染框架
3. 文件/流操作
-
shift+u
打开指定的URL -
shift+v
查看新指定的文件 -
@
加载和执行Shell命令 -
#
浏览和执行Shell命令
4. 缓冲操作
-
shift+b
回退至前一个页面缓冲(上一页) -
v
查看HTML源码 -
s
选择页面缓冲 -
shift+e
编辑页面缓冲源 -
ctrl+l
重绘屏幕 -
shift+r
重新加载页面缓冲(刷新页面) -
shift+s
保存页面缓冲 -
esc+s
保存页面源码 -
esc+e
编辑缓冲图像
5. 缓冲选择模式
按下s
键即可进入缓冲选择模式,该模式可用的快捷键如下所示:
-
k
或ctrl+p
选择前一个页面缓冲 -
j
或ctrl+n
选择下一个页面缓冲 -
shift+d
删除选择的页面缓冲 -
enter
跳转至选择的页面缓冲
6. 书签操作
-
esc+b
加载书签 -
esc+a
将当前页面添加至书签
7. 搜索
-
ctrl+s
向前搜索 -
ctrl+r
向后搜索 -
n
搜索下一个 -
shift+n
搜索上一个 -
ctrl+w
切换循环搜索模式
8. 标记操作
-
ctrl+space
设置/清除标记 -
esc+p
跳转至上一个标记 -
esc+n
跳转至下一个标记 -
"
通过正则表达式标记
9. 杂项
-
!
执行Shell命令 -
shift+h
打开帮助页面 -
o
设置选项 -
ctrl+k
显示cookie信息 -
ctrl+c
停止 -
ctrl+z
挂起 -
q
退出(需要确认退出) -
shift+q
退出(不需要确认)
10. 行编辑模式
在执行Shell命令或者搜索关键字时,便会使用行编辑模式,该模式可用的快捷键如下所示:
-
ctrl+f
光标向前移动 -
ctrl+b
光标向后移动 -
ctrl+h
删除前一个字符 -
ctrl+d
删除当前字符 -
ctrl+k
删除光标后面的所有字符 -
ctrl+u
删除光标前面的所有字符 -
ctrl+a
光标移动至行首 -
ctrl+e
光标移动至行尾 -
ctrl+p
从历史列表中获取前一个字符串 -
ctrl+n
从历史列表中获取下一个字符串 -
tab
补全文件名或路径名 -
enter
接受输入的内容
六、鼠标操作
如果w3m的编译配置包含鼠标选项,那么当你在xterm/kterm/rxvt(在这种情况下,你就必须将TERM
环境变量设置为xterm或kterm)终端中使用w3m,或者在GPM环境中使用w3m时,你就可以在浏览网页时使用鼠标。可用的鼠标操作如下所示:
-
单击左键
将光标移动至鼠标当前所在的位置。如果你点击了光标,且光标在一个超链接上面,那么就打开这个超链接。 -
单击中键
回退至前一个页面缓冲。 -
单击右键
打开弹出菜单。你可以在菜单中点击选择一个条目。 -
拖动左键
滚动文档。默认行为是抓取文档,然后拖动这个文档。
七、使用示例
在Shell中运行以下命令,打开公司内部的Zabbix监控系统:
w3m -no-proxy -cookie http://zabbix.cnsuning.com
打开的首页如下图所示:
输入自己的工号和密码,将光标移至Sign in
超链接,然后按下回车键,登录入监控系统,如下图所示:
此时,按下快捷键ctrl+k
,便能查看相关的cookie信息,如下图所示:
回到zabbix的监控数据页面,按下快捷键v
,便能看到这个页面的HTML源码,如下图所示:
再按一次快捷键v
,回到网页浏览的模式,然后再按快捷键esc-a
,此时就会将监控页面添加至书签(收藏夹),如下图所示: