在通过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
显示行号。
-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
,此时就会将监控页面添加至书签(收藏夹),如下图所示: