以whois包中的mkpasswd的源码mkpasswd.c文件为例,   
两者都需要做的事情:    
    (1)在程序运行前需要满足其运行环境,包括声明需要使用哪些库哪些文件,例如C中的条件编译,Shell编程中的部分条件判断,如文件是否存在、是否可执行    
    (2)具备灵活性和可移植性:充分运用宏定义或全局变量(Shell专用),尽管C中许多宏定义不仅仅用于程序运行还用于程序移植,Shell中的许多全局变量也可用于脚本的移植    
    (3)都需要做参数(argument)声明:允许用户给程序传入那些参数,不允许用户传入那些参数;哪些参数是不可同时使用,哪些参数必须同时使用    
    (4)定义程序是否接受长选项(--sargv)    
    (5)对用户的输入做过滤判断处理,各种输入情况的判断处理、非法输入和特殊字符的处理    
    (6)控制用户使用逻辑和避免流程缺陷:保证用户输入不会超出程序设计预期,如输入(字符串长度、数字长度)溢出,保证流程流向并正确处理和结束    
    (7)与操作系统结合紧密:符合操作系统规范和操作系统哲学,如恰当的函数返回值、程序退出返回值、接受管道、区分stdin、stdout、stderr等    
    (8)函数调用或外部程序调用,需要捕获异常并处理异常,来自用户或系统的中断处理、信号处理    
    (9)执行核心方法前做好一切事情    
    (10)main函数尽可能的清晰精短、注意功能的拆分,保持函数原子性,尽可能的将函数复用,使用必要的缩进    
    (11)站在巨人的肩膀上,避免重复造轮子,使用并保持一致的编程风格    
    (12)程序运行完,擦好自己的屁股,程序运行前后充分与用户交互    
    (13)适当卖弄一下自己的编程技巧和编程艺术    
    (14)有时需要注意语言国际化问题    
    (15)声明协议、许可和较为详细注释、TODO,允许他人使用,改写,再创作等    
    (16)接受bug,留下自己的联系方式,哈哈!

tag:Linux C编程,Linux哲学,UNIX哲学,Linux shell编程,Linux编程思想

--end--

本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1712280,如需转载请自行联系原作者

Linux C编程与Shell编程在开发实用工具方面的相同点总结相关推荐

  1. Linux知识点回顾之shell编程

    Linux知识点回顾之shell编程 shell编程 1 基本介绍 1.1 Shell 脚本 1.2 Shell 环境 1.3 第一个shell编程 1.4 运行 Shell 脚本有两种方法: 1.5 ...

  2. Linux进阶之路———Shell 编程入门

    引言 通过 Shell 编程的学习,铺平架构师道路上的一块大砖. Shell 在Linux 系统中的定位如下所示: 一.第一个 Shell 脚本 我们通过一个简单的 Shell 脚本来感受一下. 在 ...

  3. Linux高级命令和Shell编程

    1.Linux高级命令 该章节的所有操作都在/export/data/shell目录进行,请提前创建该目录. mkdir -p /export/data/shell/ 1.1.重定向命令 1.重定向& ...

  4. 用linux下的C语言编程万年历,shell编程万年历月历和对应c语言程序.docx

    shell编程万年历月历和对应c语言程序.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网 ...

  5. 第13章代码《跟老男孩学习Linux运维:Shell编程实战》

    本书历史上已出版最实战的Shell高级编程实战书籍,没有之一,和市面书籍不同,本书是作者经过18年的运维工作及教学工作后,创新类企业级实战书籍,适合所有学习及从事Linux相关工作的读者. <跟 ...

  6. 【Linux系统管理】10 Shell 编程进阶篇

    六 Shell 编程 6.1 正则表达式 6.1.1 概述 还记得我们在上一章说过正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别 ...

  7. 《linux命令行与shell编程大全》--读书笔记

    1.初识Linux shell 图片链接 2.走进shell 1.进入命令行,CLI(command line interface),也叫Linux控制台 通过Linux控制台终端访问CLI Ctrl ...

  8. 总结下linux中一些入门级shell编程实例

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shel ...

  9. Linux 命令行与shell编程 第10章 构建基本脚本

    本章内容 构建基本脚本 使用多个命令 创建shell脚本文件 现在我们已经介绍了Linux系统和命令行的基础知识,可以开始编程了.本章讨论编写shell脚本的基础知识.在开始编写自己的shell脚本大 ...

  10. linux系列之-—01 shell编程笔记

    一.特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的 ...

最新文章

  1. Eclipse中用户库的使用
  2. 文件操作:fread()和fwrite()
  3. ITK:将itk :: Image转换为vtkImageData
  4. PyTorch基础-模型的保存和加载-09
  5. 接口调试利器:Postman
  6. 《DSP using MATLAB》Problem 6.20
  7. [算法导论]练习16.1-4 活动教室分配(区间着色问题)
  8. 汉仪尚巍手书有版权吗_为什么“汉仪尚巍手书”会大行天下?
  9. Xamarin.Android开发实践(十四)
  10. RC充放电网络的定量计算
  11. python-5 函数
  12. 北京/西安内推 | 中国移动研究院NLP组招收自然语言处理算法实习生
  13. Windows10中microsoft商店打不开解决办法
  14. 「python自学建议贴」Python学习路线+视频教程完整版
  15. Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法
  16. 带南海九段线分位数地图可视化(R语言版)
  17. 华三 mstp-路由聚合-ospf-三层聚合 入门全套实验
  18. Go语言 - 并发控制
  19. 黑莓8800装不上软件的问题
  20. 基于JavaWeb的工厂仓库管理系统的设计与实现

热门文章

  1. 转 json数组对象和对象数组
  2. 【msdn】配置 ReportViewer 以进行远程处理
  3. 远程桌面连接(连接服务器)报错Oracle修正
  4. go语言练习:条件语句和循环语句
  5. 从jsp页面到servlet传值的不同方式
  6. 蓝桥 PREV-34 历届试题 矩阵翻硬币
  7. BZOJ 2957 分块
  8. 【项目经验】EasyUI Tree
  9. floodlight make the VMs can not getDHCP IP address
  10. 解决IIS安装的问题:要求输入用户名和密码