电脑技术学习

标准化您的 UNIX 命令行工具

dn001

  SVR4 系统(Gentoo Linux 主机)会显示同样的列,如清单 4 所示。

  清单 4. 在 SVR4 上使用 -A 选项

$ ps -A
 PID PPID CMD
  1   0 init [3]    
  2   1 [migration/0]
  3   1 [ksoftirqd/0]
  4   1 [watchdog/0]
  5   1 [migration/1]
  6   1 [ksoftirqd/1]
  7   1 [watchdog/1]
  8   1 [events/0]
  9   1 [events/1]
  10   1 [khelper]
  11   1 [kthread]
  14  11 [kblockd/0]
  15  11 [kblockd/1]
  16  11 [kacpid]
...

  另一个选项或多或少地镜像了本文其他地方给出的脚本和函数解决方案。该选项是为给定命令的特定输出创建别名,这些别名采用同一方法来提供相同的格式化输出。同样以 ps 为例,您可以创建别名 ps-all 来输出所有进程列表,并根据需要为每种平台设置相应的展开形式。

  设置这些别名的最佳位置是在登录期间执行的外壳初始化脚本中,例如 .ksh、.profile 或 .bashrc。您可以在这些脚本中执行同样的系统检查,以验证要启用哪些别名。如果希望提供适用于所有用户的全局解决方案,则应将别名定义放在公开可用的文件中(例如放在 /etc or /usr/local 中),并设置用户初始化脚本以获得别名定义来源。

  别名机制最适合于您希望设置单个命令的命令行选项的情况,虽然也可以使用它们来将给定的命令展开为一组命令或管道。这样削弱了为展开形式中除最后一个命令以外的其他任何命令指定附加参数的能力。对于处理此类包装,外壳中的内联函数可能更为适合。

  使用内联外壳函数

  大多数外壳都支持函数,这些函数本质上是微型脚本,您可以在其中放置命令和其他外壳脚本元素以执行特定的任务。由于它们是主外壳定义中的函数,因此使用起来方便快捷,同时仍然支持许多完整外壳脚本所具有的相同功能,如命令行参数。

标签: