Unix配置

经验法则:


  • 提高适应能力,除非这样做会产生超过0.7秒的延迟。0.7秒是一个魔数,人们几乎察觉不到少于0.7秒的启动延迟。
  • 用户不应该看到优化开关。让程序经济运行时设计者的任务,不是用户的任务。与提高界面复杂度成本相比,让用户从优化开关来获取那点儿性能收益,换来界面复杂度的提升,往往得不偿失。
  • 能用脚本包装器或简单管道实现的任务,就不要用配置开关实现。能简单利用其它程序来完成的任务,就不要增加本程序的复杂度。

增加配置是要考虑的问题:


  • 能省掉这个功能吗?为什么在加厚手册之外还要加重用户负担?
  • 能否用某种无伤大雅的方式改变程序的常规行为从而无需这个选项?
  • 这个选项是否花哨没用?是否应该少考虑用户界面的可配置性而多考虑正确性?
  • 这个选项附加的行为是否应该用一个独立的程序来代替?


增加不必要的选项会产生很多不良后果。其中最严重的后果是对测试覆盖率的影响。

unix命令行选项

  参数 说明
-a all : 全部,所有 (ls , lsattr , uname) archive : 存档 (cp , rsync) append : 附加 (tar -A , 7z)
-b blocksize : 块大小,带参数 (du , df) batch : 批处理模式 (交互模式的程序通常拥有此选项,如 top -b)
-c commands : 执行命令,带参数 (bash , ksh , python) create : 创建 (tar)
-d debug : 调试 delete : 删除 directory : 目录 (ls)
-e execute : 执行,带参数 (xterm , perl) edit : 编辑 exclude : 排除
-f force : 强制,不经确认(cp , rm ,mv) file : 文件,带参数 (tar) configuration file : 指定配置文件(有些守护进程拥有此选项,如 ssh , lighttpd)
-g
-h –help : 帮助 human readable : 人性化显示(ls , du , df) headers : 头部
-i interactive : 交互模式,提示(rm , mv) include : 包含
-k keep : 保留 kill
-l long listing format : 长格式(ls) list : 列表 load : 读取 (gcc , emacs)
-m message : 消息 (cvs) manual : 手册 (whereis) create home : 创建 home 目录 (usermod , useradd)
-n number : 行号、编号 (cat , head , tail , pstree , lspci) no : (useradd , make)
-o output : 输出 (cc , sort) options : 选项 (mount)
-p port : 端口,带参数 (很多网络工具拥有此选项,如 ssh , lftp ) protocol : 协议,带参数 passwd : 密码,带参数
-q quiet : 静默
-r reverse : 反转 recursive : 递归 (cp , rm , chmod -R)
-s silent : 安静 size : 大小,带参数 subject
-t tag type : 类型 (mount)
-u user : 用户名、UID,带参数
-v verbose : 冗长 version : 版本
-w width : 宽度 warning : 警告
-x exclude : 排除 (tar , zip)
-y yes
-z zip : 启用压缩 (bzip , tar , zcat , zip , cvs)




上一页  Unix编程艺术(四)

下一页  Unix编程艺术(六)