Linux基础

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

原文 http://10.71.101.90/new_in.html

看完有空的话改改错别字也好
还有把图片附件转移过来
加新东西就更欢迎了

----

本文主要是介绍暑期集训中必需的和可能用到的Linux基础知识。内容并不全面,也难免存在缺漏和笔误。'''Linux 小白向''',牛人直接看最后一个section,New in~

QS发音"qin shou",对出处有兴趣的同学可考古88。

= 生存篇 =

集训用的OS是Ubuntu 9.04,安装的东西都是源里的。用户名acm,密码momo,有sudo权限。这里先介绍集训中最重要的三样东西浏览器、编辑器和编译器。

浏览器当然是用Firefox,顺便友情提醒登出和清空历史记录,不然下一个bg全版的就是你:-)。而编辑器可以选用gedit(上面画面中的Text Editor,当然有很多更好的选择),gedit是gnome桌面环境下默认的编辑器,比notepad自然是强多了,有语法高亮,还可以设置显示行号和自动补tab(自动!=智能)。只要新建一个文件,双击打开默认关联的就是gedit。编译C可以使用gcc,编译C++可以使用g++。编译需要在终端下进行,打开终端可以点击上面截图中的Terminal,当然你们也可以像我一样把终端的启动图标拖到快速启动栏上。编译的命令是"$(CC) $(CFLAGS) filename.ext",其中$(CC)是gcc或g++,$(CFLAGS)可以为空,但是C语言中#include<math.h> 时千万记得写上-lm(表示和数学库链接),否则会编译错误,C++则没有这个问题,filename.ext自然是你的源代码啦,ext可以是 c|cpp|cc。如果没有编译错误的话生成的可执行文件名叫a.out,我们可以通过在终端输入./a.out来执行之。

补充一下acm用户的主目录是/home/acm,如果是打开终端的话默认就在这个目录,也可以通过Place->Home Folder进入这个目录。强烈建议大家在这个目录再建立一个以自己id为名的目录,在里面维护自己的东西。

= 基础篇 =

首先指出Linux和瘟到死的几点区别,Linux的命令和文件都是区分大小写的;Linux的目录是单根的(盘符什么的最讨厌了),分割符是'/',而不是'\';Linux中的换行是"\n",而不是"\r\n",这一点在出题时尤为需要注意,你的input/output必须是Linux格式的;Linux的字符编码是UTF-8的,有效的处理了多国语言共存的问题(AppLocale退散>.<),但是Win是ANSI的,如果出现win传送过来的东西变成乱码,一般可以通过iconv命令解决。我国优秀的操作系统番茄花园在这些方面没能吸收Linux的优点而被Win带坏,实在是非常遗憾。

其次介绍一下如何安装软件,我想一般的软件源里都有了,所以就不用下载了,直接从源里安装吧。比如要安装eclipse的话只要在终端输入sudo apt-get install eclipse回车就好了,这里可能会要求输入密码(momo),其他东西类似。

然后是几个终端命令简介

    * TAB: 好吧,TAB其实不是命令,按TAB的功能是自动补全,这样就可以少敲错很多东西了啦啦啦;
    * ls: 现实单前目录的文件,加上参数-a会显示隐藏文件,而-l会列出更详细的信息;
    * cd DIRECTORY: 切换路径,DIRECTORY是目标目录,其中'.'是当前目录,'..'是上级目录;
    * mkdir DIRECTORY: 新建一个名为DIRECTORY的目录;
    * rmdir DIRECTORY: 删除目录DIRECTORY;
    * rm FILE: 删除文件FILE,删了可就基本找不回来了噢;
    * mv SOURCE DEST: 把SOURCE移到DEST,可以用来重命名;
    * cp SOURCE DEST: 把SOURCE复制到DEST;
    * cat|head|tail FILE: 分别是把FILE的全部、开头和结尾内容打印到屏幕上的命令,如果一屏显示不下可以试试less FILE,不要对二进制文件执行这些命令,容易小悲剧;
    * cmp|diff FILE1 FILE2: 比较FILE1和FILE2的内容,前者比较适合用于二进制文件,后者则适合用于比较文本文件,比如output和sample output,还有个叫gvimdiff的东东可以试试;
    * time COMMAND [ARGS]: 执行COMMAND [ARGS],并显示所用时间;
    * gedit FILE: 用gedit打开文件FILE,没有则新建,建议用gedit FILE&,这样可以回到终端接着输入命令。

当然这些命令都有很多变体,并可以带各种各样的参数,可以通过参数-h, -help或--help来看都有什么参数和这些参数的含义,还可以通过命令"man $cmd"来看关于命令$cmd更详细的信息。

然后再详细的介绍一下编译执行过程,这里的东西不论在出题还是做题中都是很有用的。这里就以C++为例,还在用C的也希望能在暑期转型为C++,毕竟在 ACM/ICPC中C++,特边是C++中STL的优势是很大的。在ZOJ中,编译命令大概是这样的

{{{
g++ foo.cpp -o foo -ansi -fno-asm -O2 -Wall --static -DONLINE_JUDGE
}}}

foo.cpp是你的文件;-o参数指定输出文件,这样生成的文件就是foo,而不是默认的a.out了;-ansi要求使用ANSI C++标准的规定,禁止g++的扩展;-O2表示开了2级的优化,类似还有-O3、-O4,本地打表的时候这个参数还是有帮助的;-Wall表示显示所有 warning,这个参数建议大家养成习惯加上;-DXXX等价与在代码里加上#define XXX,主要是给#ifdef/#ifndef ...用的;还有参数-ggdb,不过调试里gdb用的真的不多,就不介绍了。

本地测试的时候我们可能会用sample和自己的一些case,我们可以把这些测试数据写在foo.in里,而把期望的输出写在foo.out里。这样对于ZOJ1001,整个编码,编译,测试过程可以如下完成:

{{{
watashi@zjuicpc-host:~$ vim ZOJ1001.cpp
watashi@zjuicpc-host:~$ cat ZOJ1001.cpp
#include 
int main() {
        int a, b;
        while (scanf("%d%d", &a, &b) != EOF) {
                printf("%ld", a + b);
        }
        return 0;
}
watashi@zjuicpc-host:~$ g++ ZOJ1001.cpp -o ZOJ1001.exe -Wall
ZOJ1001.cpp: In function ‘int main()’:
ZOJ1001.cpp:5: warning: format ‘%ld’ expects type ‘long int’, but argument 2 has type ‘int’
watashi@zjuicpc-host:~$ cat ZOJ1001.{in,out}
1 5
6
watashi@zjuicpc-host:~$ time ./ZOJ1001.exe < ZOJ1001.in > ZOJ1001.ans

real    0m0.002s
user    0m0.000s
sys     0m0.000s
watashi@zjuicpc-host:~$ ls
Examples     ZOJ1001.ans  ZOJ1001.exe  ZOJ1001.out
public_html  ZOJ1001.cpp  ZOJ1001.in
watashi@zjuicpc-host:~$ diff ZOJ1001.ans ZOJ1001.out
1c1
< 6
\ No newline at end of file
---
> 6
}}}

注意到<和>,前者是输入重定向,后者是输出重定向,这是终端的功能,这样它将用重定向的文件来代替标准输入或输出。如果想对重定向或管道还有shell编程有更深入了解的可以参考水寒mm的ppt。

最后介绍一个强大的编辑器vim,当然还有其GUI版本gvim,Win平台下的gvim可以从这里下载到,安装后自带教程和文档,教程可以从开始菜单进去。 vim功能强大,但入门比较麻烦,不过我还是推荐gvim,原因在于即使不会使用其复杂强大的功能,只要简单的复制一个配置文件后,就可以得到上手容易但比gedit来的强大的编辑器了。vim的配置文件在"~/.vimrc"(~就是你的主目录),这里提供一个基本的配置文件

{{{
source $VIMRUNTIME/mswin.vim
source $VIMRUNTIME/vimrc_example.vim
behave mswin    " #支持C-a,C-x,C-c,C-v这些快捷键 "

set fileformats=unix    " 这样就能看出\n和\r\n的区别了 "
set fileformat=unix     " 设置回车为\n "
set number autoindent tabstop=4 shiftwidth=4    " 显示行号 自动缩进 TAB宽度为4 缩进宽度为4 "
colorscheme ron " 配色方案 "

autocmd FileType c,cpp set cindent cinoptions=:0g0t0(sus        " c/c++ 智能缩进 "

if has("gui_running")
        set lines=40 columns=111
        colo desert
endif
}}}

然后介绍vim/gvim的最基本的用法,vim是有模式的编辑器,启动时在普通模式下,这是输入":w<CR>"(<CR>表示回车)则保存文件,输入":q<CR>"表示退出,保存并退出就是":wq<CR>",如果不想保存而退出就是":q!<CR>",还有undo"u",redo"C-r"(Ctrl+r),具体看教程或百度之。那么如何输入内容呢,这就需要进入插入模式了,按"i"进入插入模式,这之后就可以输入代码什么的了,要回到普通模式可以按Esc。在普通模式下":!COMMAND<CR>" 将会调用终端执行命令COMMAND,这样就可以不退出vim来做些事了,比如编译一下代码。还有"/"是向后查找,"?"是向前查找,"C-p" 和"C-n"是通过基于词汇的自动补全,其他像替换,编写函数,绑定快捷键什么的就不一一介绍了。用智能编辑器的一个好处就是在写源代码的时候通过缩进和语法高亮避免低级错误,像括号不匹配和html里<未装义的话,都会红底警示的。

= 提高篇 =

Linux下还有很多编辑器,比如kate(KDE桌面环境的Text editor),emacs(@@)……有爱者自己尝试吧

你也可以打开"~/.bashrc",尝试修改一下,比如去掉几行配置代码的注释,再打开终端看看……等等,不能让你改你就随便改啊,备份啊备份,多重要的习惯啊。

其他想介绍的东西太多了,于是不写了……

= ZJUICPC-HOST =

ZJUICPC-HOST(90)是用于主要提供几方面功能,一是作为空间,可以架设个人主页,中转一些文件;二是作为Linux服务器,给大家SSH,也可以跑一些花时间的东西;三是作为代理服务器,提供代理,目前这一功能有待进一步完善。当然大家可以继续挖掘更多的用途。由于不管集训队所在机房的ip 段怎么换,我们总把90作为其保留ip地址,因此习惯上大家叫它90。

现在所有新建的帐号都可以架设个人主页,方法很简单,把网页和其他文件放到你用户主目录的public_html下(没有该目录则mkdir)。同时还支持php,未来应该会加入对jsp的支持,并且允许通过.htaccess文件来override默认配置。

Linux是真正支持多用户的操作系统,允许多个用户同时使用。有了90帐号后,就可以通过客户端远程到90上进行各种操作。我们可以通过 SSH(Secure Shell)远程登录到90上,在Linux下SSH的命令是"ssh user@hostname"

{{{
watashi@watashi-pc:~$ ssh watashi@10.71.101.90

...(password)... 

watashi@zjuicpc-host:~$ who
icpc     tty7         2009-06-17 20:35 (:0)
flyee    pts/2        2009-06-20 01:06 (10.13.63.102)
watashi  pts/0        2009-06-20 19:56 (watashi-pc.local)
watashi@zjuicpc-host:~$ exit
logout
Connection to 10.71.101.90 closed.
watashi@watashi-pc:~$
}}}

而在Win下我们可以使用putty等工具。而我们还能通过SFTP来上传下载文件。

90为每只QS提供了进校和出校代理(由于暂时没有分到公网IP,进校代理是空架子),端口218,代理需要绑定IP才能使用,每个帐号可以绑定三个IP。绑定IP请使用脚本bindIP,默认绑定出校代理,加参数 -r则绑定进校代理,后面接上需要绑定的IP列表。如果总绑定的IP超过三个,则会在去重复后把最老的几个IP从列表中移除。

{{{
watashi@zjuicpc-host:~$ /usr/sbin/bindIP 10.71.101.34 10.71.101.90 10.71.101.99
user: watashi
binding ip 10.71.101.34 for watashi...
binding ip 10.71.101.90 for watashi...
binding ip 10.71.101.99 for watashi...
DONE!
watashi@zjuicpc-host:~$ /usr/sbin/bindIP -r 0.0.0.0
user: watashi_rpry
binding ip 0.0.0.0 for watashi_rpry...
binding ip 255.255.255.255 for watashi_rpry...
DONE!
}}}

需要以上功能或90帐号的QS请发邮件到 Zejun.WU@gmail.com ,邮件标题为"[zjuicpc-host]$uid",其中$uid是你想要的id,一般我会在16小时内处理邮件,并回复您。新建帐号的初始密码为 momo,并且会强制要求您在第一次登录时修改自己的密码。如果你需要在这几天熟悉Linux一些操作,ssh 90是一个很好的选择,不过可能用不了GUI,也没有sudo权限。

= 更新 =

(2009.7.1)90代理的端口改成218,进校代理可以使用了,内网ip使用域名zjuicpc.9966.org,外网ip使用域名 zjuacm.9966.org。由于98限制通过代理访问,需要访问98请用 http://zjuacm.9966.org:98/ ,感谢水寒mm的技术支持。

(2009.7.3)限制cc98代理的访问,需要利用您的系统用户密码验证。添加了绑定IP的页面bind.html,以避免每次绑定IP都需要SSH的麻烦。

'''__Good Luck! Have Fun! __''' 

原文 http://10.71.101.90/new_in.html

看完有空的话改改错别字也好

还有把图片附件转移过来

加新东西就更欢迎了


本文主要是介绍暑期集训中必需的和可能用到的Linux基础知识。内容并不全面,也难免存在缺漏和笔误。Linux 小白向,牛人直接看最后一个section,New in~

QS发音"qin shou",对出处有兴趣的同学可考古88。

生存篇

集训用的OS是Ubuntu 9.04,安装的东西都是源里的。用户名acm,密码momo,有sudo权限。这里先介绍集训中最重要的三样东西浏览器、编辑器和编译器。

浏览器当然是用Firefox,顺便友情提醒登出和清空历史记录,不然下一个bg全版的就是你:-)。而编辑器可以选用gedit(上面画面中的Text Editor,当然有很多更好的选择),gedit是gnome桌面环境下默认的编辑器,比notepad自然是强多了,有语法高亮,还可以设置显示行号和自动补tab(自动!=智能)。只要新建一个文件,双击打开默认关联的就是gedit。编译C可以使用gcc,编译C++可以使用g++。编译需要在终端下进行,打开终端可以点击上面截图中的Terminal,当然你们也可以像我一样把终端的启动图标拖到快速启动栏上。编译的命令是"$(CC) $(CFLAGS) filename.ext",其中$(CC)是gcc或g++,$(CFLAGS)可以为空,但是C语言中#include 时千万记得写上-lm(表示和数学库链接),否则会编译错误,C++则没有这个问题,filename.ext自然是你的源代码啦,ext可以是 c|cpp|cc。如果没有编译错误的话生成的可执行文件名叫a.out,我们可以通过在终端输入./a.out来执行之。

补充一下acm用户的主目录是/home/acm,如果是打开终端的话默认就在这个目录,也可以通过Place->Home Folder进入这个目录。强烈建议大家在这个目录再建立一个以自己id为名的目录,在里面维护自己的东西。

基础篇

首先指出Linux和瘟到死的几点区别,Linux的命令和文件都是区分大小写的;Linux的目录是单根的(盘符什么的最讨厌了),分割符是'/',而不是'\';Linux中的换行是"\n",而不是"\r\n",这一点在出题时尤为需要注意,你的input/output必须是Linux格式的;Linux的字符编码是UTF-8的,有效的处理了多国语言共存的问题(AppLocale退散>.<),但是Win是ANSI的,如果出现win传送过来的东西变成乱码,一般可以通过iconv命令解决。我国优秀的操作系统番茄花园在这些方面没能吸收Linux的优点而被Win带坏,实在是非常遗憾。

其次介绍一下如何安装软件,我想一般的软件源里都有了,所以就不用下载了,直接从源里安装吧。比如要安装eclipse的话只要在终端输入sudo apt-get install eclipse回车就好了,这里可能会要求输入密码(momo),其他东西类似。

然后是几个终端命令简介

  • TAB: 好吧,TAB其实不是命令,按TAB的功能是自动补全,这样就可以少敲错很多东西了啦啦啦;
  • ls: 现实单前目录的文件,加上参数-a会显示隐藏文件,而-l会列出更详细的信息;
  • cd DIRECTORY: 切换路径,DIRECTORY是目标目录,其中'.'是当前目录,'..'是上级目录;
  • mkdir DIRECTORY: 新建一个名为DIRECTORY的目录;
  • rmdir DIRECTORY: 删除目录DIRECTORY;
  • rm FILE: 删除文件FILE,删了可就基本找不回来了噢;
  • mv SOURCE DEST: 把SOURCE移到DEST,可以用来重命名;
  • cp SOURCE DEST: 把SOURCE复制到DEST;
  • cat|head|tail FILE: 分别是把FILE的全部、开头和结尾内容打印到屏幕上的命令,如果一屏显示不下可以试试less FILE,不要对二进制文件执行这些命令,容易小悲剧;
  • cmp|diff FILE1 FILE2: 比较FILE1和FILE2的内容,前者比较适合用于二进制文件,后者则适合用于比较文本文件,比如output和sample output,还有个叫gvimdiff的东东可以试试;
  • time COMMAND [ARGS]: 执行COMMAND [ARGS],并显示所用时间;
  • gedit FILE: 用gedit打开文件FILE,没有则新建,建议用gedit FILE&,这样可以回到终端接着输入命令。

当然这些命令都有很多变体,并可以带各种各样的参数,可以通过参数-h, -help或--help来看都有什么参数和这些参数的含义,还可以通过命令"man $cmd"来看关于命令$cmd更详细的信息。

然后再详细的介绍一下编译执行过程,这里的东西不论在出题还是做题中都是很有用的。这里就以C++为例,还在用C的也希望能在暑期转型为C++,毕竟在 ACM/ICPC中C++,特边是C++中STL的优势是很大的。在ZOJ中,编译命令大概是这样的

g++ foo.cpp -o foo -ansi -fno-asm -O2 -Wall --static -DONLINE_JUDGE

foo.cpp是你的文件;-o参数指定输出文件,这样生成的文件就是foo,而不是默认的a.out了;-ansi要求使用ANSI C++标准的规定,禁止g++的扩展;-O2表示开了2级的优化,类似还有-O3、-O4,本地打表的时候这个参数还是有帮助的;-Wall表示显示所有 warning,这个参数建议大家养成习惯加上;-DXXX等价与在代码里加上#define XXX,主要是给#ifdef/#ifndef ...用的;还有参数-ggdb,不过调试里gdb用的真的不多,就不介绍了。

本地测试的时候我们可能会用sample和自己的一些case,我们可以把这些测试数据写在foo.in里,而把期望的输出写在foo.out里。这样对于ZOJ1001,整个编码,编译,测试过程可以如下完成:

watashi@zjuicpc-host:~$ vim ZOJ1001.cpp
watashi@zjuicpc-host:~$ cat ZOJ1001.cpp
#include 
int main() {
        int a, b;
        while (scanf("%d%d", &a, &b) != EOF) {
                printf("%ld", a + b);
        }
        return 0;
}
watashi@zjuicpc-host:~$ g++ ZOJ1001.cpp -o ZOJ1001.exe -Wall
ZOJ1001.cpp: In function ‘int main()’:
ZOJ1001.cpp:5: warning: format ‘%ld’ expects type ‘long int’, but argument 2 has type ‘int’
watashi@zjuicpc-host:~$ cat ZOJ1001.{in,out}
1 5
6
watashi@zjuicpc-host:~$ time ./ZOJ1001.exe < ZOJ1001.in > ZOJ1001.ans
real    0m0.002s
user    0m0.000s
sys     0m0.000s
watashi@zjuicpc-host:~$ ls
Examples     ZOJ1001.ans  ZOJ1001.exe  ZOJ1001.out
public_html  ZOJ1001.cpp  ZOJ1001.in
watashi@zjuicpc-host:~$ diff ZOJ1001.ans ZOJ1001.out
1c1
< 6
\ No newline at end of file
---
> 6

注意到<和>,前者是输入重定向,后者是输出重定向,这是终端的功能,这样它将用重定向的文件来代替标准输入或输出。如果想对重定向或管道还有shell编程有更深入了解的可以参考水寒mm的ppt。

最后介绍一个强大的编辑器vim,当然还有其GUI版本gvim,Win平台下的gvim可以从这里下载到,安装后自带教程和文档,教程可以从开始菜单进去。 vim功能强大,但入门比较麻烦,不过我还是推荐gvim,原因在于即使不会使用其复杂强大的功能,只要简单的复制一个配置文件后,就可以得到上手容易但比gedit来的强大的编辑器了。vim的配置文件在"~/.vimrc"(~就是你的主目录),这里提供一个基本的配置文件

source $VIMRUNTIME/mswin.vim
source $VIMRUNTIME/vimrc_example.vim
behave mswin    " #支持C-a,C-x,C-c,C-v这些快捷键 "
set fileformats=unix    " 这样就能看出\n和\r\n的区别了 "
set fileformat=unix     " 设置回车为\n "
set number autoindent tabstop=4 shiftwidth=4    " 显示行号 自动缩进 TAB宽度为4 缩进宽度为4 "
colorscheme ron " 配色方案 "
autocmd FileType c,cpp set cindent cinoptions=:0g0t0(sus        " c/c++ 智能缩进 "
if has("gui_running")
        set lines=40 columns=111
        colo desert
endif

然后介绍vim/gvim的最基本的用法,vim是有模式的编辑器,启动时在普通模式下,这是输入":w"(表示回车)则保存文件,输入":q"表示退出,保存并退出就是":wq",如果不想保存而退出就是":q!",还有undo"u",redo"C-r"(Ctrl+r),具体看教程或百度之。那么如何输入内容呢,这就需要进入插入模式了,按"i"进入插入模式,这之后就可以输入代码什么的了,要回到普通模式可以按Esc。在普通模式下":!COMMAND" 将会调用终端执行命令COMMAND,这样就可以不退出vim来做些事了,比如编译一下代码。还有"/"是向后查找,"?"是向前查找,"C-p" 和"C-n"是通过基于词汇的自动补全,其他像替换,编写函数,绑定快捷键什么的就不一一介绍了。用智能编辑器的一个好处就是在写源代码的时候通过缩进和语法高亮避免低级错误,像括号不匹配和html里<未装义的话,都会红底警示的。

提高篇

Linux下还有很多编辑器,比如kate(KDE桌面环境的Text editor),emacs(@@)……有爱者自己尝试吧

你也可以打开"~/.bashrc",尝试修改一下,比如去掉几行配置代码的注释,再打开终端看看……等等,不能让你改你就随便改啊,备份啊备份,多重要的习惯啊。

其他想介绍的东西太多了,于是不写了……

ZJUICPC-HOST

ZJUICPC-HOST(90)是用于主要提供几方面功能,一是作为空间,可以架设个人主页,中转一些文件;二是作为Linux服务器,给大家SSH,也可以跑一些花时间的东西;三是作为代理服务器,提供代理,目前这一功能有待进一步完善。当然大家可以继续挖掘更多的用途。由于不管集训队所在机房的ip 段怎么换,我们总把90作为其保留ip地址,因此习惯上大家叫它90。

现在所有新建的帐号都可以架设个人主页,方法很简单,把网页和其他文件放到你用户主目录的public_html下(没有该目录则mkdir)。同时还支持php,未来应该会加入对jsp的支持,并且允许通过.htaccess文件来override默认配置。

Linux是真正支持多用户的操作系统,允许多个用户同时使用。有了90帐号后,就可以通过客户端远程到90上进行各种操作。我们可以通过 SSH(Secure Shell)远程登录到90上,在Linux下SSH的命令是"ssh user@hostname"

watashi@watashi-pc:~$ ssh watashi@10.71.101.90
...(password)... 
watashi@zjuicpc-host:~$ who
icpc     tty7         2009-06-17 20:35 (:0)
flyee    pts/2        2009-06-20 01:06 (10.13.63.102)
watashi  pts/0        2009-06-20 19:56 (watashi-pc.local)
watashi@zjuicpc-host:~$ exit
logout
Connection to 10.71.101.90 closed.
watashi@watashi-pc:~$

而在Win下我们可以使用putty等工具。而我们还能通过SFTP来上传下载文件。

90为每只QS提供了进校和出校代理(由于暂时没有分到公网IP,进校代理是空架子),端口218,代理需要绑定IP才能使用,每个帐号可以绑定三个IP。绑定IP请使用脚本bindIP,默认绑定出校代理,加参数 -r则绑定进校代理,后面接上需要绑定的IP列表。如果总绑定的IP超过三个,则会在去重复后把最老的几个IP从列表中移除。

watashi@zjuicpc-host:~$ /usr/sbin/bindIP 10.71.101.34 10.71.101.90 10.71.101.99
user: watashi
binding ip 10.71.101.34 for watashi...
binding ip 10.71.101.90 for watashi...
binding ip 10.71.101.99 for watashi...
DONE!
watashi@zjuicpc-host:~$ /usr/sbin/bindIP -r 0.0.0.0
user: watashi_rpry
binding ip 0.0.0.0 for watashi_rpry...
binding ip 255.255.255.255 for watashi_rpry...
DONE!

需要以上功能或90帐号的QS请发邮件到 Zejun.WU@gmail.com ,邮件标题为"[zjuicpc-host]$uid",其中$uid是你想要的id,一般我会在16小时内处理邮件,并回复您。新建帐号的初始密码为 momo,并且会强制要求您在第一次登录时修改自己的密码。如果你需要在这几天熟悉Linux一些操作,ssh 90是一个很好的选择,不过可能用不了GUI,也没有sudo权限。

更新

(2009.7.1)90代理的端口改成218,进校代理可以使用了,内网ip使用域名zjuicpc.9966.org,外网ip使用域名 zjuacm.9966.org。由于98限制通过代理访问,需要访问98请用 http://zjuacm.9966.org:98/ ,感谢水寒mm的技术支持。

(2009.7.3)限制cc98代理的访问,需要利用您的系统用户密码验证。添加了绑定IP的页面bind.html,以避免每次绑定IP都需要SSH的麻烦。

Good Luck! Have Fun!