如何在CentOS上安装和使用w3m浏览器

在通过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的软件源:

  1. 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
  2. rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

2. 安装依赖

在Shell中运行以下命令,安装依赖包:

  1. yum install libgnomeui-devel
  2. yum install gc-devel imlib-devel imlib2-devel gdk-pixbuf2-devel gpm-devel ncurses-devel openssl-devel compface-devel man nkf wget
  3. yum groupinstall "Development Tools"

注意,需要遵守命令执行的顺序,否则很有可能会安装CentOS官方源中的0.52版本的w3m。

3. 下载源码包

在Shell中运行以下命令,下载w3m的源码包:

  1. cd /root/Downloads
  2. wget http://nchc.dl.sourceforge.net/project/w3m/w3m/w3m-0.5.3/w3m-0.5.3.tar.gz

4. 解压源码包

在Shell中运行以下命令,解压缩源码包:

  1. tar xvzf w3m-0.5.3.tar.gz
  2. cd w3m-0.5.3

5. 编译安装

在Shell中运行以下命令,编译安装w3m:

  1. ./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
  2. make && make install

上述的编译配置命令会将w3m安装在/usr/local/w3m目录,并且使用w3m自己的键盘映射。

6. 验证

在Shell中运行w3m,若命令输出如下图所示,则表示编译安装成功:

w3m命令输出信息

三、命令选项

由于采用最小化的方式来安装CentOS系统,这种方式默认是不会建立各种命令手册的索引数据库的,这样会导致通过关键字搜索手册时找不到任何结果。需要在Shell中运行以下命令:

  1. 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. 页面/光标动作

  • spacectrl+v
    下一页

  • besc+v
    上一页

  • lctrl+f
    光标右移

  • hctrl+b
    光标左移

  • jctrl+n
    光标下移

  • kctrl+p
    光标上移

  • shift+j
    向上滚动一行

  • shift+k
    向下滚动一行

  • ^ctrl+a
    跳转至行首

  • $ctrl+e
    跳转至行尾

  • w
    跳转至下一个单词

  • shift+w
    跳转至上一个单词

  • >
    将屏幕右移

  • <
    将屏幕左移

  • .
    将屏幕右移一列

  • ,
    将屏幕左移一列

  • g
    跳转至首行

  • shift+g
    跳转至末行

  • 数字+g
    跳转至指定行号

  • shift+Z
    跳转至中间的行

  • z
    跳转至中间的列

  • tab
    跳转至下一个超链接

  • ctrl+uesc+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键即可进入缓冲选择模式,该模式可用的快捷键如下所示:

  • kctrl+p
    选择前一个页面缓冲

  • jctrl+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监控系统:

  1. w3m -no-proxy -cookie http://zabbix.cnsuning.com

打开的首页如下图所示:

zabbix首页

输入自己的工号和密码,将光标移至Sign in超链接,然后按下回车键,登录入监控系统,如下图所示:

登录zabbix

此时,按下快捷键ctrl+k,便能查看相关的cookie信息,如下图所示:

查看cookie信息

回到zabbix的监控数据页面,按下快捷键v,便能看到这个页面的HTML源码,如下图所示:

zabbix页面源码

再按一次快捷键v,回到网页浏览的模式,然后再按快捷键esc-a,此时就会将监控页面添加至书签(收藏夹),如下图所示:

w3m收藏夹