假设有一段简单的脚本。
如果我在Bourne shell中运行上述脚本,结果将如下所示(这将提供指定类路径中包含的所有jar文件的唯一列表):
在zsh中,然而,我仍然得到:
for file in `hadoop classpath | tr ':' ' ' | sort | uniq`; do echo $file; done
原始的 hadoop classpath
输出结果看起来像这样(即要查找Jars的文件夹列表):
zsh %> hadoop classpath
/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/contrib/capacity-scheduler/*.jar
如果我在Bourne shell中运行上述脚本,结果将如下所示(这将提供指定类路径中包含的所有jar文件的唯一列表):
bash-4.1$ for file in `hadoop classpath | tr ':' ' ' | sort | uniq`; do echo $file; done
/usr/local/hadoop/etc/hadoop
/usr/local/hadoop/share/hadoop/common/lib/activation-1.1.jar
/usr/local/hadoop/share/hadoop/common/lib/asm-3.2.jar
/usr/local/hadoop/share/hadoop/common/lib/avro-1.7.4.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-beanutils-1.7.0.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-beanutils-core-1.8.0.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-cli-1.2.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-codec-1.4.jar
...
在zsh中,然而,我仍然得到:
zsh %> for file in `hadoop classpath | tr ':' ' ' | sort | uniq`; do echo $file; done
/usr/local/hadoop/etc/hadoop
/usr/local/hadoop/share/hadoop/common/lib/*
/usr/local/hadoop/share/hadoop/common/*
/usr/local/hadoop/share/hadoop/hdfs
/usr/local/hadoop/share/hadoop/hdfs/lib/*
/usr/local/hadoop/share/hadoop/hdfs/*
/usr/local/hadoop/share/hadoop/yarn/lib/*
/usr/local/hadoop/share/hadoop/yarn/*
/usr/local/hadoop/share/hadoop/mapreduce/lib/*
/usr/local/hadoop/share/hadoop/mapreduce/*
/usr/local/hadoop/contrib/capacity-scheduler/*.jar
(即只有类路径中的文件夹内容)。
出于好奇,如何将目录列表转换为已排序的zsh文件列表?
该系统是Red Hat Enterprise Linux Server 6.5版本。
| sort | uniq
的操作其实是无用的,因为sort
命令只会对行进行排序,而tr
命令的输出仍然在单行中。如果你想要对hadoop classpath
输出进行排序,那么管道命令应该是hadoop classpath | tr ':' '\n' | sort | uniq
。 - just somebody