首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>perl>正文

改良的Perl:程序员面向Linux的设置

http://www.oklinux.cn  2007-02-09  oklinux收集整理   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn


  作者:Teodor Zlatanov
  
  优化机器来满足需要
  
  为面向 Java 和 Perl 的编程环境定制了 tcsh、Enlightenment、Eterm 和 Emacs 后,Teodor 为我们展示了他桌面的 Linux 配置。这是为 Java 和 Perl 编程设置优化的,但毫无疑问,其他程序员也会在其中发现许多有用的窍门。
  
  
  
  几年前,我就开始了在 Unix 中构建我的编程环境。这项工作至今仍未完成!我在这里所介绍的是我所使用的环境的一个缩影,但请您理解,它并不完整,也不够完美。您应该不断地改进计算环境。做些修修补补的事很有趣,因为可能会在过程中学到许多新知识。
  
  所有的过错都是我犯的,但我仍要感激几年来曾帮助过我的那些人。(人数众多,以至我无法一一列出他们的名字。)如果没有他们的帮助,无论是个人还是新闻组,我都无法写出下面的文章。
  
  入门
  本文旨在面向中高级 Linux 用户。应该安装 Perl 5.6.0,或至少 5.005 才能完成某些示例。这里将会提到 Emacs 编辑器,如果希望尝试 Emacs 示例,需要安装它。还会提到 Enlightenment 窗口管理器,它需要和 Eterm 终端仿真器一起安装,但大多数最近的窗口管理器和终端仿真器都具有与 Enlightenment 和 Eterm 在本文环境中提供的类似的那些特性。
  
  您应该习惯于编辑文件,进行系统修改、从源码安装 Linux 软件包,并愿意使用 Linux。如果您不熟悉这些任务的话,在尝试这里描述的任何操作的时候要格外小心,并且注意将每样事物进行备份。(在任何情况下这都不失为一个好的做法。)
  
  tcsh 定制
  我使用 tcsh 作为主要登录 shell。很容易将示例转换成由 bash、zsh 或其它 shell 使用。我使用 tcsh shell 好几年了,但这并不意味着说对每个人都适合。
  
  tcsh shell 使用一些初始化 (rc) 文件。在 UNIX 中,rc(发音为:"ar cee")文件是由程序在初始化时读取的文件。rc 名字来自文件名的公共 "rc" 后缀(例如,"tcshrc" 用于 tcsh shell,"exrc" 用于标准 vi 编辑器)。rc 文件有时还称作 "dot" 文件,因为它们以一个点 (dot) 开头,这样可以在正常的目录列表中隐藏起来。
  
  我所进行的 tcsh shell 定制位于 .cshrc、.login 和 .logout 文件中。其他人使用 .tcshrc 而不是 .cshrc,但除非您也使用 C (csh) shell(其实不应该使用它;tcsh 更好),否则没什么差异。
  
  .login 文件是为登录 shell 执行的第一个文件:
  
  清单 1:我的 .login 文件
  
  stty erase \^?
  echo TERM = $TERM
  
  switch ($HOST)
   case "workmachine":
   fetchmail
   breaksw
   case "homemachine":
   fortune
   echo "---"
   from | tail
   mesg y
   echo "---"
   breaksw
   default:
   breaksw
  endsw
  
  
  
  
  
  
  "stty erase" 那一行将擦除字符设置成删除键。我比较喜欢这个设置,因为我习惯于使用删除键来向后擦除,但如果您觉得缺省值很适合您,就不必更改它。
  
  然后,echo 语句打印出当前的终端。我之所以这样做是因为可以知道是否支持 xterm 能力,但这不那么重要。
  
  后面跟着 switch 语句。它在形式上与 C switch() 语句类似(毕竟 C [csh] shell 以及稍后的 tcsh shell 都沿袭了它)。根据不同的主机名,可以运行 fetchmail(我在我的工作机器上每个登录 shell 中运行它,因为多个 fetchmail 的副本相互之间不影响),或者在本地运行其它一些命令。
  
  本地机器的命令如下:print a fortune(试一下;非常有趣!);然后是除数 ("---");然后是邮箱中最后几条消息;然后打开分页面许可权;然后打印另一个除数。
  
  命令还有一种缺省情况,应该可以随处运行。但未在我的环境中使用。
  
  在 .login 文件之后,tcsh shell 经过 .cshrc 文件(它更喜欢使用 tcshrc 文件,但如果只能使用 .cshrc 的话也只能将就了)。
  
  清单 2:我的 .cshrc 文件,第 1 部分:特定于 shell 的设置
  
  清单 2 中的代码是特定于 shell 的,意味着它不直接与任何其它 shell 相接。一般来说,特定于 shell 的设置是使用 "set" 命令设置的,而环境设置是使用 "setenv" 设置的。路径是个例外,因为 tcsh shell 维护着 $PATH 和 $path 的同步,所以可以使用 set 或 setenv 来设置路径。这是个人喜好的问题。
  
  set 和 setenv 的反操作是 unset 和 unsetenv。只有 set 或 setenv 才打印出 shell 和环境设置的列表。
  
  就我个人来看,我认为环境和 shell 设置之间的差异是 tcsh 最糟糕的一个方面。我会使用其中一个,但不会同时使用它们。当前的设计强迫我同时使用它们。
  
  清单 3:我的 .cshrc 文件,第 2 部分:环境
  
  # another switch statement
  switch ($HOST)
   case "homemachine":
   # from home, I use my work machine's external network interface
   setenv CVSROOT tzz@workmachine-external:/cvsroot
  
   # of course, ssh is the only protocol allowed. rsh is insecure.
   setenv CVS_RSH ssh
  
   # my NNTP server at home
   setenv NNTPSERVER nntp
  
   # give Emacs a name, for Enlightenment positioning
   alias emacs emacs -name workmachine-emacs
   breaksw
   case "homemachine-2":
   # same as homemachine
   setenv CVSROOT tzz@workmachine-external:/cvsroot
   setenv CVS_RSH ssh
   # but this is a Solaris machine, so use mailx (I could have used
   # OSTYPE instead of $HOST for generality)
   alias mail mailx
   breaksw
   default:
   # default CVS root for all machine at work. Leave rsh as the
   # default transport.
   setenv CVSROOT tzz@workmachine:/cvsroot
   breaksw
  endsw
  
  
  
  
  
  清单 3 中的环境设置主要考虑是否正确设置了 CVS 资源库根。如果使用 CVS,这是自动设置事物以使所有 CVS 命令可以从任何机器上使用的一种简便方法。另外,我给主要 Emacs 窗口提供了一个名称,这样 Enlightenment 可以准确地找到它。
  
  我应该使用 $OSTYPE 而不是 $HOST,并设置单独的 switch() 语句来处理 Solaris;但所有为将 mail 取别名为 mailx 的语句对我来说都似乎有些多余。
  
  清单 4:我的 .cshrc 文件,第 3 部分:别名
  
  要尝试下面定义的别名,只需要在提示上输入它们。"abc" 别名将自己在一行上打印 "foreach?" 并等待您的输入。例如,如果输入 "echo $a",然后在下一个提示上输入 "end", "echo" 命令将在 $a 中运行 1 到 9,然后从 A 到 Z,然后从 a 到 z。
  
  最后,我的 .logout 非常简单。它是在登录 shell 退出时执行的一系列命令,但只在我的本地机器上。在所有其它机器上,它什么都不做。
  
  清单 5:我的 .logout 文件
  
  switch ($HOST)
   case "homemachine":
   # save the list of subscribed newsgroups, just in case:
   # save only the first 2000 characters of each lines (the
   # .newsrc file can have very long lines), then filter out the
   # unsubscribed newsgroups, and save the output in ~/.subbed
   cut -c 1-2000 ~/.newsrc | egrep -v "!" > ~/.subbed
  
   # remove any dead letter files (/bin/mail generates them)
   rm ~/dead.letter
   breaksw
   default:
   breaksw
  endsw
  
  
  
  
  
  Enlightenment 和 Eterm 定制
  我最常用的窗口管理器是 Enlightenment。我喜欢它所以使用它。您可能不喜欢 Enlightenment(以下称为 "E"),但不管怎样,您的窗口管理器也可能支持 E 中我所喜欢的大多数特性。要复制 Eterm 的功能比较困难,尽管 aterm 程序在目的和效果上与之类似。
  
  E 和 Eterm 都使用主题。主题是给人看的,在实际当中不派什么用场。我发现它们对于 Eterm 很有用,但对于 E,我不会将主题用于编程支持。
  
  我对 E 进行的最重要的一项修改就是更改了与 e16keyedit 程序的缺省键绑定。我将 Alt-F1 到 Alt-F12 映射成桌面 1 到 12,这样可以快速地在不同任务之间切换。我给某些桌面取了别名,添加了按键 -- 例如,Alt-Shift-M 可以带我到邮件桌面。
  
  另外,我还让 Ctrl-Alt-M 启动一个邮件窗口(实际上是 "emacs -name gnus -f gnus",因为我使用 Gnus 来阅读邮件)。以类似的方式,我让 Alt-Shift-Letter 转到特定桌面,而 Ctrl-Alt-Letter 启动该桌面上的一个程序。
  
  E 可以记住程序的位置和命令行调用。这意味着如果程序具有独特的名称,E 可以在下次您登录的时候重新启动它,或者在下次您启动它的时候记住它的位置。名称是窗口的 X 名,通常用 -name 参数指定给程序。
  
  Eterm 使用主题来指定定制行为。可以尝试 Eterm 所带的所有缺省主题(例如,"Eterm -t mutt" 用于面向 mutt 的终端,或




上一篇:CJavaPHPPerlPython的程序代码美化工具   下一篇:Perl的经典用法:用Open()函数打开文件

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·CJavaPHPPerlPython的程序代码美化工具
·Perl的经典用法:用Open()函数打开文件
·功能丰富的Perl:用Perl读写Excel文件
·使用Perl/Tk把GUI加入服务器编程
·功能丰富的Perl:Perl自动化系统管理
·Linux使用基本知识:编写简单的perl
·优化Perl榨取代码的最大性能
·功能丰富的Perl:Perl用于实现遗传算法
·以非超级用户身份安装mod_perl
·功能丰富的Perl:轻松调试Perl的技巧
·Perl的经典用法:读入多个记录
·吸引C和Java程序员目光的Perl5.6
·Perl的经典用法:用Sysopen()进行控制
·功能丰富的Perl:Perl6语法和正则表达式
·功能丰富的Perl:xinetd程序用于系统管理
·功能丰富的Perl:编写说英语的Perl程序
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux下安装Perl脚本语言的方法
·以非超级用户身份安装mod_perl
·优化Perl榨取代码的最大性能
·功能丰富的Perl:Perl自动化系统管理
·使用Perl/Tk把GUI加入服务器编程
·Perl的经典用法:用Open()函数打开文件
·CJavaPHPPerlPython的程序代码美化工具
·功能丰富的Perl:轻松调试Perl的技巧
·功能丰富的Perl:Perl用于实现遗传算法
·Linux使用基本知识:编写简单的perl
·功能丰富的Perl:用Perl读写Excel文件
·Perl的经典用法:读入多个记录
  阅读排行
·使用Perl自动化UNIX系统管理
·功能丰富的Perl:用Perl读写Excel文件
·利用Perl列出系统环境变量清单范例
·Perl的经典用法:用Open()函数打开文件
·Linux下安装Perl脚本语言的方法
·优化Perl榨取代码的最大性能
·用Pear加速PHP程序开发
·怎样从Perl中调用C库里的函数
·Linux使用基本知识:编写简单的perl
·功能丰富的Perl:轻松调试Perl的技巧
·在Perl中使用SendMail发送邮件
·功能丰富的Perl:编写说英语的Perl程序
·用Perl写不刷屏的聊天室原理分析
·吸引C和Java程序员目光的Perl5.6
·用Gtk2-Perl建立具有复杂GUI界面的应用
网摘收藏: