wget下载使用详解(转)

转自http://linux.ccidnet.com/art/1101/20051128/628467_1.html

A。使用wget工具

linux所以的主要版本都自带了wget这个下载工具.

bash$ wget http://place.your.url/here

它还能控制ftp来下载整个web站点的各级目录,当然,如果你不小心,可能会把整个网站以及其他和他做链接的网站全部下载下来.

bash$ wget -m http://target.web.site/subdirectory

由于这个工具具有很将的下载能力,所以可以在服务器上把它用作镜像网站的工具.让它按照"robots.txt"的规定来执行.

有很多参数用来控制它如何正确地做镜像,可以限制链接的类型和下载文件的类型等等.例如:只下载有联系的链接并且忽略GIF图片:

bash$ wget -m -L --reject=gif http://target.web.site/subdirectory

wget也能够实现端点续传(-c参数),当然,这种操作是需要远程服务器支持的.

bash$ wget -c http://the.url.of/incomplete/file

可以把端点续传和镜像功能结合起来,这样可以在以前断过多次的情况下继续镜像一个有大量选择性文件的站点.如何自动实现这个目的我们在后面会讨论得更多.

如果你觉得下载时老是断线会影响你办公的话,你可以限制wget重试的次数.

bash$ wget -t 5 http://place.your.url/here

这样重试五次后就放弃了.用"-t inf"参数表示永远不放弃.不停地重试.

B.那对于代理服务该怎么办呢?

可以使用http代理的参数或者在.wgetrc配置文件里指定一个如何通过代理去下载的途径.但是有这么一个问题,

如果通过代理来进行端点续传的话可能会有几次失败.如果有一次通过代理下载的过程发生中断,那么代理服务器上缓存里保存是那个完整的

文件拷贝.所以当你用"wget -c"来下载剩余部分的时候代理服务器查看它的缓存,并错误地认为你已经下载了整个文件.于是就发出了错误的信号.

这个时候你可以用添加一个特定的请求参数来促使代理服务器清除他们的缓存:

bash$ wget -c --header="Pragma: no-cache" http://place.your.url/here

这个"--header"参数能够以各种数字,各种方式添加。通过它我们可以更改

web服务器或者代理服务器的某些属性。有些站点不提供外部连接的文件服务,只有通过同一个站点上其他的一些页面时内容

才会被提交。这个时候你可以用加上"Referer:"

参数:

bash$ wget --header="Referer: http://coming.from.this/page" http://surfing.to.this/page

有些特殊的网站只支持某种特定的浏览器,这个时候可以用"User-Agent:"参数

bash$ wget --header="User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;Windows NT; DigExt)" http://msie.only.url/here

C.那我怎么设定下载时间呢?

如果你需要在你的办公电脑上通过和其他同事共享的一个连接来下载一些很大的文件,而且你希望你的同事不会因为网络速度的减慢而收到影响,

那你就应该尽量避开高峰时段。当然,不需要在办公室里等到所以人都走掉,也不需要在家里用完晚饭后还惦记着要上网下载一次。

用at来就可以很好的定制工作时间:

bash$ at 2300

warning: commands will be executed using /bin/sh

at> wget http://place.your.url/here

at> press Ctrl-D

这样,我们设定了下载工作在晚上11点进行。为了使这个安排能够正常进行,请确

认atd这个后台程序正在运行。

D.下载要花很多时间?

当你需要下载大量的数据,而且你又没有享有足够的带宽,这个时候你会经常发现在你安排的下载任务还没有完成,一天的工作却又要开始了。

作为一个好同事,你只能停掉了这些任务,而开始另外的工作。然后你又需要反复地重复使用"wget -c"来完成你的下载。这样肯定太繁琐了,

所以最好是用crontab来自动执行。创建一个纯文本文件,叫做"crontab.txt",包含下面的内容:

0 23 * * 1-5 wget -c -N http://place.your.url/here

0 6 * * 1-5 killall wget

这个crontab文件指定某些任务定期地执行。前五列声明是什么时候执行这个命令,而每行的剩余部分则告诉crontab执行什么内容。

前两列指定了每天一到晚上11点就开始用wget下载,一到早上6点就停止一切wget

下载。第三四列的*表示每个月的每一天都执行这个任务。第五列则指定了一个星期的哪几天来执行这个程序。 --"1-5"表示从星期一

到星期五。

这样在每个工作日的晚上11点,下载工作开始,到了上午的6点,任何的wget任务

就被停掉了。你可以用下面的命令来执行crontab:

bash$ crontab crontab.txt

wget的这个"-N"参数将会检查目标文件的时间戳,如果匹配了,下载程序就会停止,因为它说明整个文件已经下载完全了。

用"crontab -r"可以删除这个计划安排。我已经多次采用这种方法,通过共享的电话拨号来下载过很多的ISO镜像文件,还是

比较实用的。

E.如何下载动态变化的网页

有些网页每天都要根据要求变化好几次.所以从技术上讲,目标不再是一个文件,它没有文件长度.因此"-c"这个参数也就失去了意义.

例如:一个PHP写的并且经常变动的linux周末新闻网页:

bash$ wget http://lwn.net/bigpage.php3

我办公室里的网络条件经常很差,给我的下载带了很大的麻烦,所以我写了个简单的脚本来检测动态页面是否已经完全更新了.

#!/bin/bash

#create it if absent

touch bigpage.php3

#check if we got the whole thing

while ! grep -qi bigpage.php3

do

rm -f bigpage.php3

#download LWN in one big page

wget http://lwn.net/bigpage.php3

done

这个脚本能够保证持续的下载该网页,直到网页里面出现了"",这就表示该文件已经完全更新了.

 

F.对于ssl和Cookies怎么办?

如果你要通过ssl来上网,那么网站地址应该是以"https://"来开头的.在这样的情况下你就需要另外一种下载工具,叫做curl,它能够

很容易获得.有些网站迫使网友在浏览的时候必须使用cookie.所以你必须从在网站上得到的那个Cookie里面得到"Cookie:"这个参数.这样才

能保证下载的参数正确.对于lynx和Mozilla的Cookie的文件格式,用下面的:

bash$ cookie=$( grep nytimes ~/.lynx_cookies |awk {printf("%s=%s;",$6,$7)} )

就可以构造一个请求Cookie来下载http://www.nytimes.com上的内容.当然,你要已经用这个浏览器在该网站上完成注册.

w3m使用了一种不同的,更小巧的Cookie文件格式:

bash$ cookie=$( grep nytimes ~/.w3m/cookie |awk {printf("%s=%s;",$2,$3)} )

现在就可以用这种方法来下载了:

bash$ wget --header="Cookie: $cookie" http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html

或者用curl工具:

bash$ curl -v -b $cookie -o supercomp.html http://www.nytimes.com/reuters/technology/tech-tech-supercomput.htm

G.如何建立地址列表?

到现在为止我们下载的都是单个文件或者是整个网站.有的时候我们需要下载某个网页上链接的大量文件,但没有必要把它整个网站

都镜像下来.比如说我们想从一个依次排列的100首歌里面下载前20首.注意,这里"--accept"和"--reject"参数是不会

起作用的,因为他们只对文件操作起作用.所以一定要用"lynx -dump"参数来代替.

bash$ lynx -dump ftp://ftp.ssc.com/pub/lg/ |grep gz$ |tail -10 |awk {print $2} > urllist.txt

lynx的输出结果可以被各种GNU文本处理工具过虑.在上面的例子里,我们的链接地址是以"gz"结尾的,并且把最后10个文件地址放到

urllist.txt文件里.然后我们可以写一个简单的bash脚本来自动下载这个文件里的目标文件:

bash$ for x in $(cat urllist.txt)

> do

> wget $x

> done

这样我们就能够成功下载Linux Gazette网站(ftp://ftp.ssc.com/pub/lg/)上的最新10个论题.

 

H.扩大使用的带宽

如果你选择下载一个受带宽限制的文件,那你的下载会因为服务器端的限制而变得很慢.下面这个技巧会大大缩短下载的过程.但这个技巧

需要你使用curl并且远程服务器有多个镜像可以供你下载.例如,假设你想从下面的三个地址下载Mandrake 8.0:

url1=http://ftp.eecs.umich.edu/pub/linux/mandrake/iso/Mandrake80-inst.iso

url2=http://ftp.rpmfind.net/linux/Mandrake/iso/Mandrake80-inst.iso

url3=http://ftp.wayne.edu/linux/mandrake/iso/Mandrake80-inst.iso

这个文件的长度是677281792个字节,所以用curl程序加"--range"参数来建立三个同时进行的下载:

bash$ curl -r 0-199999999 -o mdk-iso.part1 $url1 &

bash$ curl -r 200000000-399999999 -o mdk-iso.part2 $url2 &

bash$ curl -r 400000000- -o mdk-iso.part3 $url3 &

这样就创建了三个后台进程.每个进程从不同的服务器传输这个ISO文件的不同部分.这个"-r"参数指定目标文件的字节范围.当这三个

进程结束后,用一个简单的cat命令来把这三个文件衔接起来-- cat mdk-iso.part? > mdk-80.iso.(强烈建议在刻盘之前先检查md5)

你也可以用"--verbose"参数来使每个curl进程都有自己的窗口来显示传输的过程.

结束语

不用担心使用非交互式的下载方式会影响你的下载效果.无论网站设计者如何绞尽脑汁想阻止我们从他们的网站下载,我们都可以得到

免费的工具来自动完成下载任务.这会大大丰富我们的网络经历.

怎样给内核打补丁(转)

节自(http://www.xxlinux.com/linux/article/development/kernel/20051125/96.html

我以2.6.10为例子,patche以bk4的例子,目的只是让大家知道怎么打patch,

其实本人用的是2.6.6的内核,因为在AS3.0上升级到2.6.9以上的内核,

mount大的nfs网络硬盘时,df 显示不正确,明明是800G的盘变成4.2G,

不过还是能正常用,我升级过nfs和mount的包都没用,/var/log/message里

提示是kernel: nfs warning: mount version older than kernel,

还望知道的 告知一声,谢 🙂 BTW:2.6.8的内核没用过

内核源代码:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2

最新内核补丁:http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.10-bk4.bz2

cd /usr/src

rm -rf linux

tar jxf /download/linux-2.6.10.tar.bz2

ln -s linux-2.6.10 linux

cd linux

bunzip2 -dv /download/patch-2.6.10-bk4.bz2 |patch -p1

如果在/usr/src目录下就用patch -p0

令人气愤的w3m下载的文件不能保存到硬盘上,失踪了

今天在w3m下下载:ftp://ftp.hk.kernel.org/pub/linux/kernel/v2.6/patch-2.6.17.8.bz2

有40M的内容,结果下载后就消失得无影无踪,(在这个站点上也试了http下载,也是这样)。我只好到X界面下用firefox下载了这个文件。

而在w3m下下载另一个ftp站点的内容,w3m会开一个对话框,问你存在哪里?然后在另一个页面下载并显示下载进度。

这样文件就保存到了一个固定的地方。

请问:为什么w3m下载文件在不同的站点会工作得不正常呢?有没有办法解决这个问题?

Emacs 中文化指南(转帖)

转自:http://zhdotemacs.sourceforge.net/emacs/book.html

Emacs 中文化指南

Jerry 最后更新时间: 2004年3月21日

本文件仅收集我个人在使用Emacs中的一些经验和技巧, 本文可以随意转载, 无需通知作者, 本文最新文档可以从http://zhdotemacs.sourceforge.net上获得, E-mail: unidevel@yahoo.com.cn. 不定期更新 如有错误, 敬请指出, E-mail: unidevel@yahoo.com.cn

[ Split HTML / Single HTML ]

Table of Contents

1 最近更新

    1.1 2004年08月11日

    1.2 2004年05月01日

    1.3 2004年04月20日

    1.4 2004年03月21日

    1.5 2004年01月20日

    1.6 2003年12月19日

    1.7 2003年12月17日

2 Emacs 安装

    2.1 下载Emacs源代码

    2.2 安装Emacs

    2.3 遇到问题怎么办

    2.4 Emacs 基本编辑命令(1)

    2.5 Emacs基本编辑指令(2)

3 Emacs 中文设置

    3.1 系统对多语言的支持性

        3.1.1 Console环境

        3.1.2 Windows系统

        3.1.3 X Window系统

    3.2 中文设置

        3.2.1 通用配置

        3.2.2 Windows配置

        3.2.3 X Window设置

    3.3 Emacs输入法

4 一些常用的Emacs功能

    4.1 auto-insert -- 自动插入功能

    4.2 QuickURL -- 快速插入地址

    4.3 time-stamp -- 记录修改时间

    4.4 我最最讨厌的

5 Emacs 扩展包安装

    5.1 Tramp -- Transparent Remote Access, Multiple Protocol

        5.1.1 tramp简介

        5.1.2 Tramp原理

        5.1.3 tramp的安装及使用

        5.1.4 常见问题

    5.2 session

        5.2.1 session简介

        5.2.2 session的使用

    5.3 Emacs mew -- 强大的Emacs Email客户端

        5.3.1 Emacs Mew的安装

        5.3.2 Emacs mew配置

        5.3.3 常见问题

        5.3.4 一些mew的屏幕截图

    5.4 Color Theme -- 让你的Emacs更多彩

        5.4.1 color-theme的安装

        5.4.2 color-theme的使用

6 一些小巧的Emacs lisp

    6.1 tab-display.el

    6.2 wb-line-number.el

    6.3 keisen-mode

7 自己写的一些Emacs lisp

8 Emacs中一些有趣的功能

    8.1 Emacs中的游戏

9 迷你型的Emacs

    9.1 zile 中文设置

10 Emacs网络资源汇总

    10.1 中文资源

    10.2 Lisp资源

    10.3 文档资源

Chapter 1 最近更新

Jerry

1.1 2004年08月11日

   1.

      更新Section 10.2中的mule-gbk的链接.

   2.

      由于更换了操作系统,以前使用FreeBSD docproj编写的文档暂时无法更新

1.2 2004年05月01日

   1.

      新增 Section 9.1zile中文设置.

1.3 2004年04月20日

   1.

      新增 Section 5.3.3设置多个邮件.

1.4 2004年03月21日

   1.

      新增 Chapter 7自己写的一些Emacs lisp.

1.5 2004年01月20日

   1.

      新增 Section 5.3.3mew发送和接收邮件.

1.6 2003年12月19日

   1.

      新增 Chapter 9迷你型的Emacs.

   2.

      修改 Section 4.4我最最讨厌的, 新增step 10如何忽略错误.

1.7 2003年12月17日

   1.

      新增 Section 4.3 time-stamp -- 记录修改时间.

   2.

      修改 Section 3.2.2 Windows配置, 新增不使用intlfonts的配置.

   3.

      修改 Section 10.1 中文资源, 新增邮件列表.

Chapter 2 Emacs 安装

Jerry

Emacs可以运行于*NIX及Windows平台, 我用它来搭建统一的开发环境

不过首先最好认识一下Stallman.

2.1 下载Emacs源代码

Emacs最新版本的源代码可以从http://ftp.gnu.org/pub/emacs上获得, 或者通过cvs获得开发版及稳定版的源代码, 我一般选择稳定的版本, 毕竟很多扩展包都经过了测试, 使用起来稳定可靠(Windows下的应该除外, 我用过几个版本, 总是会出一些问题, Linux上的Emacs比较稳定, 通过FreeBSD ports安装的Emacs也比较稳定), 不过感觉Emacs 21.3对中 文支持并不如从CVS中编译的好, 因此本文就是使用CVS下载Emacs的源代 码在FreeBSD 5.1-Current下编译的.

2.2 安装Emacs

FreeBSD下推荐通过ports或者安装包直接安装, 也可以从cvs中下载最新代码编译, 编译时则可以使用./configure调整编译选项进行编译, 请不要使用--without-xim选项, 该选项使Emacs不使用XIM输入协议, 因此使用该选项则不能使用像chinput, xcin等使用XIM协议的输入法, 虽然Emacs子带输入系统, 但是中文的输入实在太差, 后面我会讲到如何扩展Emacs的输入法, 我在FreeBSD下编译Emacs(CVS)的命令如下,

$script emacs_build.log

$CPPFLAGS=-I/usr/local/include CXXFLAGS=-I/usr/local/include \

 CFLAGS=-I/usr/local/include LDFLAGS=-I/usr/local/lib \

 ./configure --prefix=/dtroot --with-xpm --with-jpeg \

 --with-tiff -with-gif --with-png --with-x --with-xim

$make -j4 bootstrap

$make install

$exit

  

或者使用--with-gtk, 来使用gtk的外观

$script emacs_build.log

$CPPFLAGS=-I/usr/local/include CXXFLAGS=-I/usr/local/include \

 CFLAGS=-I/usr/local/include LDFLAGS=-I/usr/local/lib \

 ./configure --prefix=/dtroot --with-xpm --with-jpeg \

 --with-tiff -with-gif --with-png --with-x --with-xim --with-gtk

$make -j4 bootstrap

$make install

$exit

  

假如你是用cvs获得的源代码, configure后应该使用 make bootstrap编译

2.3 遇到问题怎么办

以我的经验来看, 最好的办法就是先找找对应的FAQ, 然后找手册, 再去 对应的邮件列表上问一下, 最后就是自己调试程序.

2.4 Emacs 基本编辑命令(1)

Emacs的强大功能相信大家都已经听说过了, 熟悉vi或windows下IDE 工具开始使用时Emacs会觉得十分难受. 这一节讲一下基本的几个编译命 令, 首先说明一下以`C-'开头的是 `Ctrl'键加上后面的键一块按下, 例如 `C-x 0'就是Ctrl键和 x键一块按下, 然后再按下0, 以 `M-'开头的就是META键, 一般就是 Alt键.

    *

      `C-x C-f 文件名' -- 打开文件

    *

      `C-x C-s' -- 保存文件

    *

      `C-x C-c' -- 退出Emacs

    *

      `C-x u' -- 取消上一次操作

有了这四个基本指令就可以进行通常的编辑保存功能了, 不过现在你 肯定感觉不到Emacs的强大功能. 甚至会觉得Emacs还不如Windows的 Notepad, 别急, 熟悉一下Emacs后我们再来感受Emacs的超强功能.

2.5 Emacs基本编辑指令(2)

我们继续讲解Emacs的基本指令, 这一部分讲解基本的光标指令, 你 可以用Emacs打开一个文件, 我们一起来"运动"

    *

      `C-v' -- 向后翻一页

    *

      `M-v' -- 向前翻一页

    *

      `C-l' -- 将当前行居中

    *

      `C-f' -- 向前移动一个字符

      `M-f' -- 向前移动一个单词

    *

      `C-b' -- 向后移动一个字符

      `M-b' -- 向后移动一个单词

    *

      `C-n' -- 向下移动一行

      `C-p' -- 向上移动一行

    *

      `C-a' -- 移至当前行的第一个字符

      `M-a' -- 移至当前所在句子的第一个字符

    *

      `C-e' -- 移至当前行的最后一个字符

      `C-p' -- 移至当前所在句子的最后一个字符

    *

      `M-<' -- 移动到当前窗口的第一个字符

      `M->' -- 移动到当前窗口的最后一个字符

      注意: `M-<'输入时要同时键入`Alt', `Shift'和`,'

这些命令前可以加入`C-u N'表示重复N次, 例如向下移动8行可以这 样按键`C-u 8 C-n'

好了, 基本的移动指令就介绍完了, 可能这些键使用起来是不太顺手, 在本章最后, 我们将讲一下如何定制这些键, 使Emacs更加符合个人的使用 习惯.

Chapter 3 Emacs 中文设置

Jerry

Emacs发展到今天, 功能已经十分完善和强大, Emacs有强大的多语言编辑功 能, 当然设置的得当才能发挥出Emacs的强大功能, 下面讲述一下在Windows 以及X Window上的多语言的设置问题

3.1 系统对多语言的支持性

3.1.1 Console环境

这里的Console是像Windows下的cmd, command, Unix下的console, tty 的统称, Console环境下, 只要本身能正常显示中文就可以了, Emacs自 带输入法, 基本上不用怎么设置就可以使用

3.1.2 Windows系统

Windows本身对多语言支持的已经是十分完善了, 只是要切换缺省语言 比较麻烦, 设置完后总要重启(针对Windows 2000和Windows XP), Emacs对中文的支持也因版本的不同而不同, 通常的方法和在X Window 下类似, 需要设置对应的字体, 而Windows下最好使用bdf字体, 相关的 字体可以在XEmacs站点上下载到, 我用的是intlfonts-1.2

3.1.3 X Window系统

X Window下首先需要汉化X, 使X能正常使用中文, 其实和Windows差不 多, 也不过是设置字体, 因为X本身已经对多语言提供支持(建议使用 XFree86 V4.2及以上版本), X上最好是把Windows下的那些ttf和ttc的 字体拿来使用, 毕竟不是免费字体, 作工还是要好一些

3.2 中文设置

3.2.1 通用配置

这一部分是所有系统都要设置的

(set-language-environment 'Chinese-GB)

(set-keyboard-coding-system 'euc-cn)

(set-clipboard-coding-system 'euc-cn)

(set-terminal-coding-system 'euc-cn)

(set-buffer-file-coding-system 'euc-cn)

(set-selection-coding-system 'euc-cn)

(modify-coding-system-alist 'process "*" 'euc-cn)

(setq default-process-coding-system

            '(euc-cn . euc-cn))

(setq-default pathname-coding-system 'euc-cn)

  

3.2.2 Windows配置

这一部分设置Windows下的字体, 解压intlfonts-1.2, 设置变量 fonts-dir为所安装的字体目录

(setq fonts-dir "<path to intlfonts>")

(setq bdf-directory-list

      (list

       (expand-file-name "Asian" fonts-dir)

       (expand-file-name "Chinese" fonts-dir)

       (expand-file-name "Chinese.BIG" fonts-dir)

       (expand-file-name "Chinese.X" fonts-dir)

       (expand-file-name "Ethiopic" fonts-dir)

       (expand-file-name "European" fonts-dir)

       (expand-file-name "European.BIG" fonts-dir)

       (expand-file-name "Japanese" fonts-dir)

       (expand-file-name "Japanese.BIG" fonts-dir)

       (expand-file-name "Japanese.X" fonts-dir)

       (expand-file-name "Korean.X" fonts-dir)

       (expand-file-name "Misc" fonts-dir)

       (expand-file-name "TrueType" fonts-dir)

       (expand-file-name "Type1" fonts-dir)))

(setq w32-bdf-filename-alist

      (w32-find-bdf-fonts bdf-directory-list))

(create-fontset-from-fontset-spec

 "-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,

 chinese-gb2312:-*-*-medium-r-normal-*-16-*-*-*-*-*-gb2312.1980-*,

 japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,

 katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,

 latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,

 japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,

 thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,

 lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,

 tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,

 ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,

 tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")

(setq font-encoding-alist

      (append '(("MuleTibetan-0" (tibetan . 0))

        ("GB2312"        (chinese-gb2312 . 0))

        ("JISX0208"      (japanese-jisx0208 . 0))

        ("JISX0212"      (japanese-jisx0212 . 0))

        ("VISCII"        (vietnamese-viscii-lower . 0))

        ("KSC5601"       (korean-ksc5601 . 0))

        ("MuleArabic-0"  (arabic-digit . 0))

        ("MuleArabic-1"  (arabic-1-column . 0))

        ("MuleArabic-2"  (arabic-2-column . 0))) font-encoding-alist))

(set-default-font "fontset-bdf")

    

注意: 上面的中文字体的大小只能为16,24,40,48, 因为intlfonts 中的BDF字体只有这几种大小的中文字体能匹配上面的chinese-gb2312的配置, 此外在Emacs 21.3中还可以这样设置

(set-language-environment 'Chinese-GB)

(set-default-font "-outline-新宋体-normal-r-normal-normal-12-*-96-96-c-*-gb2312")

    

假如你不知道系统的字体就M-x set-default-font, 然后使用TAB 键来看一下补全的字体信息

3.2.3 X Window设置

X的中文设置我就不说了, 自己搞定吧, 我拷贝了Windows的simsun.ttc 和mingliu.ttc来使用, 看简繁体中文不成问题了, 设置好X的字体后, 通过配置X Resources, 来设置emacs的字体, 通常就是配置$HOME/.Xdefaults, 1024x768的分辨率下可以设置字体为8x16, 800x600可以设置7x14的字体就可以达到字体等宽的效果

emacs.font:  8x16

emacs.paneFont:  8x16

Emacs.pane.menubar.font: 8x16

Emacs.foreground: white

Emacs.background: black

emacs.geometry:  100x32

    

3.3 Emacs输入法

Emacs自带多种输入法, 当然不止一种语言了, 但它自带的中文输入 法实在是太......, 想必不会有谁去用它的中文输入法来输入汉字吧, 不过 还是有几种比较好的输入法像自然码等, 我从fcitx和xcin的源码包中转换出 几种输入法, 有五笔, 注音, 双拼等, 下面说一下使用方法, 可以从 http://sourceforge.net/projects/zhdotemacs/ 下载到emacsim.tar.bz2

安装及使用方法, 参见安装包中的INSTALL文件

   1.

      安装输入法

      $tar -xvjf emacsim.tar.bz2

      $cd emacsim

      $cp -R gb big5 ${emacs-install-dir}/share/emacs/${emacs-version}/leim

        

   2.

      配置输入法, 拿gb/pingyin.el为例, 把下面的代码加入到文件 ${emacs-install-dir}/share/emacs/${emacs-version}/leim/leim-list.el中

      (register-input-method

       "chinese-pinyin-gb" "Chinese-CNS" 'quail-use-package

       "拼音" "汉字输入∷【拼音】∷"

       "gb/pinyin")

        

   3.

      输入法的使用, 按照上面的例子, 使用 `M-x set-input-method RET chinese-pinyin-gb RET' 就可以使用了

Chapter 4 一些常用的Emacs功能

Jerry

这一部分对Emacs安装后自带的一些实用的扩展功能进行讲解

4.1 auto-insert -- 自动插入功能

auto-insert是一个十分有用的功能, 比如我们在写一个C语言的头文 件时, 一般会加入下面的代码

#ifndef XXX_H

#define XXX_H

#endif /* XXX_H */

  

auto-insert就方便了我们, 不用每次都要手工输入这些代码, 新建 一个头文件时, 它会询问是否要加入这些自动生成的代码, 下面来看一下 auto-insert如何使用

`M-x auto-insert'会根据当前的mode在新建的文 件插入一些预定的文本, 如果想在打开文件时自动插入的话, 将下面的代 码加入~/.emacs中

(add-hook 'find-file-hooks 'auto-insert)

  

修改`auto-insert-alist'可以定制插入的模板, 可以使用`defint-auto-insert'来加入或者修改 `auto-insert-alist'

变量`auto-insert'用来定制自动插入时的动作类 型

    *

      `nil' 什么都不作, 即不执行插入动作

    *

      `t'根据auto-insert-alist和当前的mode执 行对应的插入动作

    *

      其他值 同`t', 但是自动插入文本后, 不置 文档修改标志

变量`auto-insert-query'定义自动插入文本前是 否询问, `Non-nil'表示自动插入文本前要询问.

变量`auto-insert-prompt'设定询问的语句, 如 果有%s, 则将被替换为执行插入的条件

变量`auto-insert-directory'设定模板的路径, 注意必须以`/'结尾

下面是一个比价完整的配置

(setq auto-insert t)

(setq auto-insert-query t)

(add-hook 'find-file-hooks 'auto-insert)

(setq auto-insert-directory "~/insert/")

(define-auto-insert '("^build\\.xml\\'" . "Ant编译脚本") "build.xml")

  

常见问题, auto-insert-directory的值必须以`/'结尾, 否则就不能 正常工作

4.2 QuickURL -- 快速插入地址

QuickURL允许我们快速的插入一个单词对应的地址, 也允许加入新的 地址, 这有点像浏览器的收藏夹, 对于经常写这些文档的我来说十分方便实 用, 同时也可以收藏一些好文章的地址.

QuickURL是Emacs自带的, 所以不需要特殊的配置就可以直接使用, 常用功能如下:

   1.

      `quickurl-ask'在当前位置插入所选的URL

   2.

      `quickurl-add'加入新的URL

   3.

      `quickurl-list'列出所有的URL

   4.

      `quickurl-edit'编辑所有的URL

QuickURL还有一些其他的指令, 自己看看帮助吧, 希望它能对你有用

4.3 time-stamp -- 记录修改时间

打开time-stamp可以记录最后运行time-stamp的时间, 所以一般将 time-stamp 加入 write-file-hooks 中, 记录文件的最后修改时间, ~/.emacs 配置如下:

(add-hook 'write-file-hooks 'time-stamp)

(setq time-stamp-format "%:u %02m/%02d/%04y %02H:%02M:%02S")

  

上面设置写入文件时执行time-stamp, 并设置时间格式为"%:u %02m/%02d/%04y %02H:%02M:%02S", 缺省的情况下, 在所编辑文件的前八行内插入如下标记

Time-stamp: <>

  

或者

Time-stamp: " "

  

Emacs在保存时就会运行write-file-hooks中的time-stamp, 从而加 入修改时间, 结果类似下面所示

Time-stamp: <jerry 12/17/2003 12:00:54 (unidevel.com)>

  

或者

Time-stamp: "jerry 12/17/2003 12:00:54 (unidevel.com)"

  

要使用中文表示, 可以这样设置

(setq time-stamp-start "最后更新时间:[     ]+\\\\?")

(setq time-stamp-end: "\n")

(setq time-stamp-format: "%:y年%:m月%:d日")

  

上面设置了如果碰到"最后更新时间:"的字样, time-stamp就将其后 面的字符替换为当前时间的"XXXX年XX月XX日", 注意, time-stamp-end的结束符 为换行符, 所以"最后更新时间:"行后所有字符都将无条件被替换为"XXXX年XX月XX日" 格式的时间, 本文首页上的更新时间就是这样做出来的

4.4 我最最讨厌的

   1.

      不要打入 TAB 时总是听到 PC 喇叭嘀嘀嘀的叫

      (setq visible-bell t)

   2.

      不要总是没完没了的问yes or no, 为什么不能用 y/n

      (fset 'yes-or-no-p 'y-or-n-p)

   3.

      为什么不能显示个时间什么的

      (display-time)

   4.

      为什么不显示当前所在的行号和列号

      (column-number-mode t)

   5.

      为什么不能像Windows下编辑器那样, 高亮显示要拷贝的区域

      (transient-mark-mode t)

   6.

      我要显示匹配的括号

      (show-paren-mode t)

   7.

      为什么使用语法显示的大文件在移动时如此之慢

      (setq lazy-lock-defer-on-scrolling t)

      (setq font-lock-support-mode 'lazy-lock-mode)

      (setq font-lock-maximum-decoration t)

        

   8.

      不要那个如此大的工具条

      (tool-bar-mode -1)

        

   9.

      在mozilla, openoffice等拷贝的中文文字无法正确粘贴在Emacs中(Emacs 21.3 发布版有此问题, 至少在我的FreeBSD下是这样的)

      (set-clipboard-coding-system 'ctext)

        

  10.

      启动Emacs报错, ~/.emacs中有问题, 如何忽略错误

       (condition-case err

           (progn

           (require 'xxx) )

         (error

          (message "Can't load xxx-mode %s" (cdr err))))

        

      如上所示, 可以截获progn内部出错, 在mini-buffer下打出错误信息

  11.

      不要生成临时文件

      (setq-default make-backup-files nil)

        

Chapter 5 Emacs 扩展包安装

Jerry

Emacs的扩展包可谓无所不有, 我只把关于开发的一些常用工具的安装 和配置及问题写一下

5.1 Tramp -- Transparent Remote Access, Multiple Protocol

5.1.1 tramp简介

tramp提供给我们的是可以使用Emacs对本地/远程的文件进行编辑, 保存, 版本管理等, tramp的功能十分强大, 它可以使用多种协议(telnet, ftp, ssh等)进行文件的获取和保存, 也可以使用这些协议的组合来编辑和保存文件, 对本地文件的一个比较方便的操作是su, 即使用其他用户编辑只有这些用户才有权限进行编辑的文件. 例如以普通用户jerry运行Emacs 对只有root可以编辑的/etc/inetd.conf进行编辑和保存, 免去了再开一个shell以root登陆编辑的步骤

5.1.2 Tramp原理

Tramp的原理是使用标准的协议ftp, rsync, smb等直接获取和保存文件, 使用ssh, telnet, rsh等加上uuencode, uudecode等一些编码解码程序对文件进行 获取和保存

5.1.3 tramp的安装及使用

我使用的是tramp-2.0.33, 它加入了对smb支持(暂时还不是很完善, 如编辑一些中文名称的文件), 及对ftp的改进. 安装过程如下:

   1.

      下载 tramp-2.0.33.tar.gz

   2.

      假设安装到/tmp/tramp目录下, 解包tramp到/tmp/tramp下

      $tar -xvzf tramp-2.0.33.tar.gz

      $mv tramp-2.0.33 /tmp/tramp

          

   3.

      编译tramp

      $./configure --with-emacs

      $gmake

          

   4.

      安装tramp, 在~/.emacs中加入下面的代码

      (add-to-list 'load-path "/tmp/tramp/lisp")

      (setq tramp-default-method "scp")

      (setq tramp-auto-save-directory "/tmp")

      (setq auto-save-file-name-transforms

            '(("\\`/[^/]*:\\(.+/\\)*\\(.*\\)" "/tmp/\\2")))

      (setq tramp-chunksize 328)

      (require 'ange-ftp)

      (require 'tramp)

          

   5.

      重新启动Emacs或使用C-x C-e顺序执行上述代码就可以了

5.1.4 常见问题

tramp在一些版本的Emacs上会出现读出正常, 保存就无响应的现象, 设置tramp-chunksize为小于500的整数就可以了, 因为一些版本的Emacs中 process-send-string按照文档记载最长只能为500.

此外tramp和ange-ftp有些冲突, 因为ange-ftp使用autoload装入, ange-ftp会设置 file-name-handler-alist变量, 从而将tramp设置的值覆盖掉, 因此使用 (require 'ange-ftp)首先装入ange-ftp, 然后使用(require 'tramp)装入tramp, 就不会出现这种问题.

上述配置在windows平台上不能使Emacs正常使用tramp. Windows上推荐 使用tramp+putty, 相关配置可以使用Google查到.

5.2 session

5.2.1 session简介

session扩展包可以使Emacs保存每次编辑的一些历史记录, 这样, 在下次打开Emacs时就可以使用上下键在以前输入的信息中选取, 十分方便实用.

5.2.2 session的使用

session的使用十分简单, 只需要在~/.emacs中加入如下几句就可 以了:

(add-to-list 'load-path "<path to session>")

(require 'session)

(add-hook 'after-init-hook 'session-initialize)

    

5.3 Emacs mew -- 强大的Emacs Email客户端

Emacs mew是一个由日本人编写的Emacs邮件客户端, 对中文支持非常 之好也是我选择它的原因. 废话少说, 开始----

5.3.1 Emacs Mew的安装

Emacs mew的最新版本和源代码可以从 http://www.mew.org上下 载, 下载后解压, 使用make进行编译安装, 路径可以修改一下Makefile 中的prefix, elispdir和etcdir, 注意${prefix}/bin必须在PATH变量 中, 没有的话作个符号链接也可以, 对于NTEmacs的用户, 要把下载mew 安装包中的几个exe文件拷贝到emacs安装目录的bin下.

5.3.2 Emacs mew配置

把下面的代码加入~/.emacs中, 把用户名, 主机名换成对应的就可 以了

(autoload 'mew "mew" nil t)

(autoload 'mew-send "mew" nil t)

(if (boundp 'read-mail-command)

    (setq read-mail-command 'mew))

(autoload 'mew-user-agent-compose "mew" nil t)

(if (boundp 'mail-user-agent)

    (setq mail-user-agent 'mew-user-agent))

(if (fboundp 'define-mail-user-agent)

    (define-mail-user-agent

       'mew-user-agent

       'mew-user-agent-compose

       'mew-draft-send-message

       'mew-draft-kill

       'mew-send-hook))

(setq mew-pop-size 0)

(setq mew-smtp-auth-list nil)

(setq toolbar-mail-reader 'Mew)

(set-default 'mew-decode-quoted 't) 

(setq mew-prog-pgp "gpg")

(setq mew-name "显示的用户名")

(setq mew-user "用户名")

(setq mew-smtp-user "用户名")

(setq mew-mail-domain "主机的域名")

(setq mew-smtp-auth-list nil)

(setq mew-smtp-server "SMTP主机")

(setq mew-pop-server "POP主机")

(setq mew-pop-user "用户名")

(setq mew-pop-auth 'pass) ;;认证方式

(setq mew-use-cached-passwd t)

(setq mew-nntp-server "NNTP服务器")

(setq mew-icon-directory (expand-file-name "mew/etc" dtsite-dir))

(when (boundp 'utf-translate-cjk)

      (setq utf-translate-cjk t)

      (custom-set-variables

         '(utf-translate-cjk t)))

(if (fboundp 'utf-translate-cjk-mode)

    (utf-translate-cjk-mode 1))

(require 'flyspell) ;;非常好用的英文的拼写检查

    

5.3.3 常见问题

    *

      无法从网上下载所有邮件,总是报告类似"no new messages (3 messages left)"的消息

      删除Mail/.mew-uidl文件使Mew将邮件认为新邮件,设置(setq mew-pop-size 0) 使mew下载所有邮件,不论大小, 注意首先要使 用'Q'退出new ( 'Q' is 'shift' + 'q', not just 'q'), 保证 mew重新加载~/Mail/.mew-uidl

    *

      如何在mew将邮件地址加入地址簿?

      C-cC-a加入地址簿, C-uC-cC-a加入地址和用户信息, 在发送邮件时可以使用TAB补全, 使用M-TAB将地址转换为User<address>的样子

    *

      无法发送和接收邮件

      在mew的分发包中一般包含mewls, mewl, mewencode, mewdecode, incm等可执行文件, 检查它们所在路径是否包含在环境变量PATH中, 或者拷贝这些文件到emacs安装目录的bin目录下

    *

      设置多个邮件

      mew提供多邮件设置, 这是通过设置mew-config-alist变量完成的, 例如我的邮箱设置 (可以设置在~/.emacs或者~/.mew.el中)

      (setq mew-config-alist

            '(("yahoo"

           ("name"         .  "Jerry")

           ("user"         .  "myname")

           ("smtp-server"  .  "127.0.0.1")

           ("smtp-port"    .  "5059")

           ("pop-server"   .  "127.0.0.1")

           ("pop-port"     .  "5058")

           ("smtp-user"    .  "myname")

           ("pop-user"     .  "myname")

           ("mail-domain"  .  "nonexist.com")

           ("mailbox-type" .  pop)

           ("pop-auth"     .  pass)

           ("smtp-auth-list" . ("PLAIN" "LOGIN" "CRAM-MD5"))

           )

          ("default"

           ("name"         .  "Jerry")

           ("user"         .  "sample")

           ("smtp-server"  .  "127.0.0.1")

           ("smtp-port"    .  "25")

           ("pop-server"   .  "127.0.0.1")

           ("pop-port"     .  "110")

           ("smtp-user"    .  "sample")

           ("pop-user"     .  "sample")

           ("mail-domain"  .  "sample.net")

           ("mailbox-type" .  pop)

           ("pop-auth"     .  pass)

           ("smtp-auth-list" . ("PLAIN" "LOGIN" "CRAM-MD5"))

           )))

          

      设置好后, 可以通过在summary列表下输入`C'切换设置, 不过需要注意 "mailbox-type"和"pop-auth"设置的值是没有引号的

5.3.4 一些mew的屏幕截图

mew屏幕截图1

mew屏幕截图2

5.4 Color Theme -- 让你的Emacs更多彩

这个扩展包与开发工具没有多大关系, 不过还是有一点点的, 至少可 以帮助htmlize生成的html有不同的背景, 它主要是为Emacs配置不同的色 彩搭配, 使之像Windows那样据有不同的色彩主题, 例如某些变变总是把 各种IDE的编辑器设置的像是控制台下的VI一样黑底白字.

5.4.1 color-theme的安装

想不起来在哪里下载的了, 用Google搜索一下吧, 安装起来比较简单, 就是将安装目录加入load-path, 调入color-theme, 需要的话再选择一个缺 省的theme就可以了, 例如将color-theme.el放在/tmp下, 则配置如下:

(add-to-list 'load-path "/tmp")

(require 'color-theme)

(color-theme-dark-blue)

    

5.4.2 color-theme的使用

安装完后, Tools菜单下会有一个Color Theme的菜单项, 可以用这 个定制color-theme, color-theme自带有不少的颜色主题

Chapter 6 一些小巧的Emacs lisp

Jerry

有很多的Emacs lisp, 非常小巧而实用, 下面就介绍一些我常用的

6.1 tab-display.el

tab-display.el是用来以'<'字符标识出文件中的那些tab字符, 对于编辑某些文件来说非常有用, 它清楚地标明那些字符是tab的字符

点击这里下载tab-display.el

使用十分简单, 只需要在~/.emacs中加入(require 'tab-display)就可以了, 当然首先你要作的是把tab-display.el所在的路径加入load-path中

tab-display屏幕截图

6.2 wb-line-number.el

wb-line-number.el可以在窗口左侧分割出一个显示行号的小窗口, 比那个mode-line上的行号看的更清楚一些

点击这里下载wb-line-number.el

使用时在~/.emacs中加入下面的语句(不要总是要我提醒你注意load-path设置哦)

(set-scroll-bar-mode nil)   ; no scroll bar, even in x-window system

(require 'wb-line-number)

  

在需要显示行号的buffer打入M-x wb-line-number-toggle就可以了, 或者像我这样在~/.emacs中再加入一句(wb-line-number-enable)缺省显示行号

wb-line-number屏幕截图

6.3 keisen-mode

keisen-mode是一个用来绘制表格的好工具, 尤其是绘制中文表格, 比起那个table.el来说好多了, kersen-mode是小日本写的, 点击这里下载 keisen-mule.lzh, 文件使用lha压缩, 使用时在~/.emacs中加入下面的语句

(if window-system

    (autoload 'keisen-mode "keisen-mouse" "MULE table" t)

  (autoload 'keisen-mode "keisen-mule" "MULE table" t))

  

操作起来只要使用Emacs中的移动键或者鼠标移动, 就可以绘制出各种表格了, 它会自动计算各个连接点, 简单方便

keisen-mode屏幕截图

Chapter 7 自己写的一些Emacs lisp

Jerry

   1.

      Emacs MPG123歌词同步显示 -- lrc.el, 点击下载, 可以显示大部分lrc格式的歌词, 还有一些BUG, 导致某些的歌词无法显示, 正在修改中

      安装说明: 替换掉mpg123.el, 删去原来的mpg123.el,mpg123.elc, 在~/.emacs中加入下面的代码就可以了

      (setq lrc-lyric-dir "lrc文件的路径") to ~/.emacs

      (require 'mpg123)

          

      歌词显示在minibuffer中, 点击看大图

以前的一些这里下载

Chapter 8 Emacs中一些有趣的功能

Jerry

8.1 Emacs中的游戏

Emacs自带了一些小游戏, 介绍几个

   1.

      M-x tetris

      俄罗斯方块

   2.

      M-x gomoku

      五子棋游戏

   3.

      M-x mpuz

      填数字游戏

   4.

      M-x snake

      贪吃蛇游戏

   5.

      M-x zone

      一个Emacs的屏保, 因为抓不出动的效果, 所以还是自己体验吧, 我第一次用它时把同事吓了一跳, 被误认作病毒

   6.

      M-x dunnet

      一个Mud游戏, 比较难玩, 推荐英文比较好的一定玩一下

   7.

      M-x nethack

      这个可不是Emacs自带的, 给那些nethack的faners, 需要下载nethack.el, 自己搜一下吧, 不过记得要重新编译nethack来支持Emacs

剩下的那些不是我不会玩就是不好玩, 故不浪费时间介绍了, 自己体会吧

Chapter 9 迷你型的Emacs

Jerry

网上有一些类似Emacs的编辑程序, 十分小巧, 比较著名的有下面几个

   1.

      em, 下载地址http://www3.famille.ne.jp/~ncc1701/em/

   2.

      zile 下载地址http://sourceforge.net/projects/zile/

   3.

      qemacs 下载地址http://fabrice.bellard.free.fr/qemacs/

当你的机器无法忍受庞大的Emacs时, 不妨试试这些小巧的编辑器, 我在一台PII266/64M RAM 的笔记本上就使用zile来进行开发

9.1 zile 中文设置

zile安装完毕后需要修改缺省的配置来显示中文, 一般就是在$HOME/.zilerc中加入或者修改 displayable-characters, 修改成下面的样子

      displayable-characters = "0x20-0xff"

  

Chapter 10 Emacs网络资源汇总

Jerry

10.1 中文资源

1. 我在yahoo groups上申请了邮件列表, 希望大家可以参与讨论

   1.

      参与讨论:zhdotemacs@yahoogroups.com [1]

   2.

      订阅:zhdotemacs-subscribe@yahoogroups.com [2]

   3.

      退订:zhdotemacs-unsubscribe@yahoogroups.com [3]

此外, 可以通过http://groups.yahoo.com/group/zhdotemacs/来查看以往信件, 不过必须注册一个yahoo帐号.

10.2 Lisp资源

    *

      Emacs Lisp List--- Emacs Lisp大全

    *

      Mule-GBK--- Emacs的GBK编码

10.3 文档资源

    *

      Emacs 快速指南(官方) --- 官方的快速指南

    *

      Emacs wiki中文版

    *

      王春宇的Emacs中文资料 --- emacs和gnus的配置资料和一些非常有用的参考资料

    *

      王垠的Emacs资料 --- 一些Emacs的配置和使用技巧

    *

      Emacs/Cygwin配置资料 --- NTEmacs与Cygwin环境的整合, 推荐NTEmacs的用户看一下

    *

      Emacs wiki -- 大量的Emacs资源

    *

      Emacs dotfiles -- 大量的.emacs的配置样本

Notes

[1]

首先需要订阅, 订阅后可以向zhdotemacs@yahoogroups.com发送邮件参与讨论

[2]

订阅时向zhdotemacs-subscribe@yahoogroups.com发送一封邮件, 主题上写"subscribe"就可以了, 注意不要加上引号, 收到确认信后, 按照内容中所说的回复或点击对应链接就可以了

[3]

退订时向zhdotemacs-unsubscribe@yahoogroups.com发送一封邮件, 主题上写"unsubscribe"就可以了, 注意不要加上引号, 收到确认信后, 按照内容中所说的回复或点击对应链接就可以了

ubuntu6.0.6 linux系统搬家

把原来装在mvp3+k6-2 450+256M SDR机器的ubuntu6.0.6系统的硬盘挂到新的机器上(intel845G+P4 1.8g+256M DDR),为IDE0的主盘,出现如下问题:

1、文字界面的控制台下无鼠标;(原来是串口机械鼠标,现在是usb 滚轮光电鼠标)

2、不能启动图形界面,报告x server配置错误;(原来是pci s3 2M显卡,现在是intel845G 主板集成显卡)

3、不能上网;(好像都是8139的,只不过型号不同)

解决步骤如下:(用root帐号登录)

1、执行命令配置gpm:

    dpkg-reconfigure gpm

   配置后的/etc/gpm.conf内容是:

 


device=/dev/input/mice

responsiveness=

repeat_type=none

type=exps2

append=''

sample_rate=

 

 

2、执行命令重新配置xorg.conf

  dpkg-reconfigure xserver-xorg

一切都是自动识别,这里就不贴了。

我原来的k6-2 450机器上的/etc/X11/xorg.conf见:ubuntu6.0.6 linux下面我的/etc/X11/xorg.conf

3、经过上面两个步骤,能进入图形界面了,控制台下和图形界面都能使用鼠标了;上面是重新配置网卡:

  进入:系统->系统管理->联网,启动配置程序。发现eth1没有启用和激活,启用并激活eth1,能够联网了,而且重启后也不成问题了。

从上可以看出,linux对硬件的依赖性没有windows强,也算是它的一个特点吧。换了机器后,我觉得系统的运行速度没有提高多少,估计重新在这个机器上编译一下内核要快点吧?

linux下的多窗口程序sceen的使用简介

转自http://gentoo-wiki.com/TIP_Using_screen

在图形界面下,一个桌面可以有许多窗口,在控制台下也可以实现。

命令简介:


Quick walk-through

       Command                                                          Effect

screen                 Login and start a Screen session right away

C-a "                  Show list of terminals managed by Screen; Here: only one

Esc                    Close the list window

C-a c                  Create a new terminal window

C-a "                  The list of terminals now shows two entries

Esc                    Close the list window

ls                     show the directory contents in this window

C-a p                  return to the previous, first window

ping forums.gentoo.org Do something in this window, too

C-a c                  Create another window

C-a S                  Split the term vertically into two regions

C-a X                  Kill the current region

C-a <Tab>              Focus the newly created region

C-a -                  Resize this region and make it 3 lines smaller

C-a 1                  Show the first window in this region

C-a <Tab>              Move the focus back to the upper region

C-a d                  Detach the Screen session

                       open a xterm

screen -DR             login again and make Screen re-attach (R) to the first session found, after detaching (D) the session

                       first, if necessary (which it wasn't)

 

下面还有动画演示。

 Seeing is believing

An animation of Screen's usage

Enlarge

An animation of Screen's usage

This animated .gif shows most basic commands in a sequence of 50 pictures. This is a transcript of all typed keystrokes:

xterm<Enter>

screen<Enter>

C-a "

<Esc>

C-a c

C-a "

<Esc>

ping forums.gentoo.org<Enter>

C-a n

ls -la<Enter>

C-a S

C-a <Tab>

C-a 1

C-a <Tab>

C-a +

C-a :resize 18<Enter>

C-a x

password

C-a d

screen -ls<Enter>

screen -R<Enter>

printf 'GET / HTTP/1.0\n\n' | telnet forums.gentoo.org 80<Enter>

C-a <Esc>

<PageUp>

<ArrowKeys>

<Space>

<ArrowKeys>

<Space>

C-a c

lynx C-a ]

Exiting Screen

One way to close a Screen session is to exit all terminal sessions you are running inside, one after the other. After the last exit inside Screen you will get [screen is terminating] as a confirmation that your Screen session has ended.

However, a simpler and faster way to do the same thing is to use Screen's quit command.

C-a :quit

This will kill all programs running inside the current Screen session and exit the session. If you use this command frequently, it may be useful to create a keybinding in your configuration file:

File: ~/.screenrc

# bind F10 to Screen's quit command

bindkey -k k; quit

See the "INPUT TRANSLATION" section of the Screen manual for details on how to bind function keys (e.g, F1, F2, ...).

调整学习linux的方向,不能为了学习linux而学linux

自从我下定决心学习linux基础以来要对linux的基础知识作一个基本的学习,时间已经过去了1个月又10天,现在我发觉自己的学习有点钻牛角了。我学linux的目的是为了应用,想想,我会用字符界面的w3m来上网吗?会用emacs来写学习日记这个程序吗?不会。所以,对字符界面的程序我有个基本的了解就行了。不必一门深入。

现在应该把重点放在学习linux的精华,怎样高效的用它来工作?

shell的编程应该掌握,因为可以用它进行一些配置使系统更高效;

安全设置要掌握,这些是基本;

linux的系统管理应该还是主要应该在字符下面进行的,所以,我可以学习一下vi和emacs的基本操作,emacs的功能可以被我已知的一些软件代替,不必为了新鲜去花时间。

编辑器重点学习vi吧。

总之,一句话,我学linux的目的是应用。

linux的学习应该快完成第一阶段的学习了吧?

linux字符界面下面的mp3播放器mp3blaster

<Tucows Downloads - MP3Blaster 3.2.0 GPL Software> http://www.tucows.com/preview/8475

跟winamp比较相像,支持播放列表,文件夹下的多个文件用一个命令可以随机播放。

如:mp3blaster -p allrandom 我的音乐/*.mp3

就可以随机播放“我的音乐”文件夹下面的所有mp3文件了。

最上面是下载的页面。

现在,我就是开着两个字符终端(是这样叫的吧,还没有搞懂一个终端有没有办法同时运行多个命令行程序,不是后台运行的服务程序),一个字符终端用mp3blaster放音乐,一个终端用w3m上网写日记。回到字符界面的“石器时代”也是一种别样的享受吧。:)

用w3m上网就是有这点不好,那个小小的光标稍不注意就不知道跑到什么地方去了,不知道有没有办法让光标变得明显些?

解决redhat linux9.0下挂载windows分区中的中文文件(夹)名乱码

转自http://linux.chinaitlab.com/chinese/8689.html

解决redhat在windows分区中不能显示中文文件名的方法

● ChinaITLab ● 2003-3-1 ● 保存本文 ● 推荐给好友 ● QQ上看本站 ● 收藏

本站

      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

     

  我从redhat发布至今无论哪个版本当你挂接上windows分区,都不能正确的显示中文文件名,这给大多数使用

redhat的朋友带来了麻烦.mandrake就做的很不错.安装后不仅自动挂接widows分区,而且可以正确的显示中文文件

名,我就为大家介绍两种解决方法!

  1:你可以找一个linuxconf的rpm包,redhat已经在默认情况下已经不装它了.你可以在你的光盘中或网上找到,

一般不会存在版本问题,比如我用的是redhat8.0,linxuconf确是7.2版的.

  找到linuxconf,然后rpm -ivh linuxconf****.rpm

  (1)在终端运行linuxconf,(2)找到File systems树型菜单中的 Access local drive进入

  (3)先挂接windows选择add,下来例如:Partition--/dev/hda1 Type--vfat mount--/mnt/c

  (4)就是显示中文文件名的参数

  在挂接完一个分区,接着光标下移,Dump frequency输入0;Fsck priority输入0; default permission输入0;

Other options输入iocharset=gb2312,codepage=936.完成,最后一直确定,从启动机子.

  2:你也可以在/etc/fstab中修改配置文件.

  vi /etc/fstab

  加入:

  /dev/hda1 /mnt/c vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

  /dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

  /dev/hda6 /mnt/e vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

  /dev/hda7 /mnt/f vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

  /dev/hda8 /mnt/g vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

  如果你已经mount过了,那就主意把参数加入,就行了.

  记好,最好在你想挂接的地方现把文件夹创建好!

   我的系统已经可以正常显示了,在xmms中打开带有中文名的歌曲方便多了.

下载新版本,解决redhat linux9.0下xpdf的中文乱码问题

Redhat linux9.0自有的xpdf不能显示中文,如我转在强烈推荐一本很不错的linux电子教程 (0篇)这篇帖子中的linux中文教程。

按照网上的办法把一个叫作好像是add-to-xpdfrc文件中的内容加到/etc/.xpdfrc中,依然不能正确中文,报错:找不到“adobe identity”(大概是这个名字)字符集。我懒得再去修复这个问题了。

用命令: rpm -e xpdf卸载了原来的xpdf。然后到http://www.foolabs.com/xpdf/download.html处下载了一个:x86, Linux  (glibc 2.2, staticly linked to Motif, t1lib, and FreeType):

xpdf-3.01pl2-linux.tar.gz (5604272 bytes)

解压后,按照里面INSTALL文件的说明拷贝几个文件到相应的目录。执行命令xpdf 文件名。能正常显示中文了。

不知是怎么一回事,我并没有安装下载地提供的中文支持语言包就能显示中文了,也许是卸载老版本的文件时并没有去掉中文支持包?

如果你像上面那样安装了xpdf-3.0.1pl2后仍然不能显示中文,不妨下载安装上述页面的两个中文语言支持包。

如下:


Language Support Packages

The Xpdf language support packages include CMap files, text encodings, and various other configuration information necessary or useful for specific character sets. (They do not include any fonts.) Any or all of these can be installed by simply unpacking the tar file and adding a few lines to your xpdfrc configuration file (see the README file inside each package for details).

The following packages are available:

    * Arabic: xpdf-arabic.tar.gz (1058 bytes)

    * Chinese/simplified: xpdf-chinese-simplified.tar.gz (835807 bytes)

    * Chinese/traditional: xpdf-chinese-traditional.tar.gz (794568 bytes)

...