资深Linux程序员的开发经验谈

2016-01-29 19:47 8 1 收藏

资深Linux程序员的开发经验谈,资深Linux程序员的开发经验谈

【 tulaoshi.com - Linux 】

 

作者: Sppence Murray 出处: IBM

  Sppence Murray 是 Linux 开发高手之一,同时长期以来他一直是 UNIX 的坚定支持者。本文介绍的是 Murray 和他在 Codemonks Consulting 的同事在日常的 Linux 开发以及应用服务工作中用到的基本技术: shell 脚本,相信 Linux 的开发人员都会受益于这项有用而且通用的技术。

  Spence Murray 是 Codemonks Consulting 的创始人之一,自从 20 世纪 80 年代最早在 SunOS 上编写代码到现在,一直致力于 UNIX/Linux 的开发。从那时起,他曾在 IBM 公司的 AIX、SGI 公司的 Irix 工作,长时间地编写跨平台的 UNIX 代码,包括 HP/UX,Irix,Solaris/SunOS,SCO UNIX,各种 BSD,MacOS X,当然,还有 Linux。从图形/视频设备驱动程序到 UI 代码,他什么工作都做过。Murray 编写的跨平台代码包括 X Window System Xserver 代码,以及作为 Netscape Navigator 一部分的核心浏览器代码。

  Murray 最经常使用的 Linux 工具是 vi、bash 和 Emacs。“不论我是在写 C、C++、Java、shell 脚本,还是 HTML,大部分的时间我都在这些工具中来回切换”,他说。

  Linux 秘密武器

  Murray 认为,对一个 Linux 开发人员来说,shell 是一个强大的软件开发工具,无论怎么评价都不过分。“在我做的每一项工作中都要用到 shell 脚本,不论是快速地阅读和修改普通文本还是编写代码”,他说。“它轻便而快捷,它短小的命令使得来回移动代码称为一个迅速而没有痛苦的过程。作为一名编辑,它很快就会成为第二本能”。

  对 Murray 来说,Emacs 作为一个开发工具出现的晚了一些。“在 90 年代早期,我尝试使用 Emacs 作为一个 IDE,并很快就转换门厅。Emacs 非常强大,在那些日子里,我会一直开着一个 Emacs 窗口,经常打开几十个源文件,每个都有我编辑的上下文、使用 gdb 的调试会话以及在不同的源目录下运行的 bash 脚本。有很多关于 Emacs 的资料,可以说,这是个可怕的工具...再者,您可以在任何您想要花时间去做开发的系统上运行 Emacs。

  自从 20 世纪 80 年代中期第一次使用 SunOS支持的 vi 这个简洁的环境以来,Emacs 编辑器已经成为了 Murray 的标准工具。"它在各种流派的 UNIX 上都可以使用,这是我在致力于跨平台的开发工作时选择它的主要原因之一”,他说。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/linux/)

  Linux 开发人员:了解您的 shell

  Murray 要求您要了解您的 shell。“Bash、tcsh、csh――shell 是您最基本的软件开发工具”,他强调说。“它可以做许多了不起的事情。所有的工作都要依赖于它……和它的强大功能”。作为说明通用的 shell 脚本功能强大的例子,在参考资料部分中有一个可以下载的文件,其中有一组脚本,用于获得 Red Hat 发行的更新 RPM 软件包并将它们合并到原来的软件包和定制的软件包。下载文件并解压缩后,您可以在 /developerworks/rpm_update_scripts 目录下找到脚本。最终结果是一个包括所有软件包最新版本的目录和一个用于网络安装的升级的 hdlist 文件。

  下面的代码片段实现的是对 Red Hat RPM 软件包的自动更新,以创建一个使用最新的 RPM 的可以安装的版本。这对任何一个维护公共 Linux 服务器的人来说是一个基本的步骤。就我们而言,我们通常是维护许多公共 Linux 服务器上的大量网络服务。下面是可以自动完成更新最新的安全和功能的过程的部分脚本。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/linux/)

  下面的脚本样例证明了普通的 shell 编程技术可以广泛应用于各种系统配置和程序设计应用。脚本使用的是 bourne shell,它是在不同的 UNIX 系统中最为常见的 shell。这样就可以保证这些非常轻便的代码可以稍加修改或者不加修改地在不同的 UNIX 系统上使用。修改 Red Hat 软件包的规范以应用于其它 Linux 发行版本是很容易的。

  freshen.sh 使用指定的 RPM ftp 更新站点上的 RPM 软件包来更新原有的 RPM 列表。执行过滤器来替换更新 RPM 软件包。最后,长长的发行列表根据从更新镜像站点上得到的新 RPM 软件包完成更新。

  清单 1. fresh.sh

 
#!/bin/sh 
rh_ver=$1 
rh_path=$2 
update_dir=${rh_path}/RH${rh_ver}-updates 
custom_dir=${rh_path}/RH${rh_ver}-custom 
install_dir=${rh_path}/RH${rh_ver}-install 

# Sanity check for the original directory. 

# Create update and install directories if they don’t exist 

[ -d ${update_dir} ] || mkdir ${update_dir} 
[ -d ${install_dir}/RedHat/RPMS ] || mkdir -p ${install_dir}/RedHat/RPMS 

# Get latest updates from fresh rpms FTP site 

./get_update.sh ${rh_ver} ${update_dir} 

# Create/update hardlinks from update, and custom directories 
# to the install directory. We assume that original RPMS are already 
# hardlinked to the install directory, so a

来源:http://www.tulaoshi.com/n/20160129/1510120.html

延伸阅读
关于Telnet 如果你希望用户用Telnet远程登录到你的服务器时不要显示操作系统和版本信息(可以避免有针对性的漏洞攻击),你应该改写/etc/inetd.conf中的一行象下面这样: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h 加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login。 关于特权账号 ...
标签: 生活常识
验楼经验谈 图老师阅读配图   一、土建工程的验收楼宇整体外观不出现倾斜, 房间内的梁、柱、墙无明显的尺寸偏差(请带上钢卷尺);墙面、楼板面、天花等不出现明显的裂缝;批荡层不允许有龟裂缝、脱皮、起沙眼以及起泡等缺陷;门窗与墙身之间结合部的处理应平整,无缺棱掉角。 二、给排水工程的验收 1、给排水管之间的...
标签: Web开发
一、垃圾还是经典 网页技术更新很快,一个网站的界面设计寿命仅仅2-3年而已。不管是垃圾还是精品,都没有所谓的经典。经典只存在于是哪个首次成功创新性的应用。网页设计者不管自己的学识、技术和经验如何,都自以为自己吊的不得了,这可能是源与商业设计自我意识体现的强烈主观因素。一个闭门造车者做出的东西,是远远赶不上综合借鉴者的。...
化蝶:从VB到VB.NET的编程体会(一) 一、接受开发工具的升级,但仅此而已。工具是更好用了,程序还基本是原来那样写,套用一句老话:没有银弹。二、首先要关注的是构架,也就是整个系统的结构。有许多好的构架可以利用,不用事事都自己动手,但一定要理解,并且多做练习。三、学一些面向对象的概念,比如对象的封装性、继承性、多态性。四、...
摄影初学经验谈   对于初学者来说,摄影入门并不只是使用单反拍照那么简单,抛开各种复杂的参数不说,从选取题材、器材使用到拍摄技巧都需要仔细研究。为了大家在拍照时少走弯路,小编结合日常拍摄经验,为大家总结出了7条拍摄建议,一起来看一下吧。 1. 养成备份、清空储存卡的好习惯 相信很多人都有类似不良习惯,...

经验教程

778

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部