这个命令在shell linux中做什么

这个命令在shell linux中做什么,linux,shell,grep,tee,Linux,Shell,Grep,Tee,我想从上面的代码中知道这条精确的线在做什么 TMPFILE=/tmp/jboss_ps.$$ ${PS} ${PS_OPTS} | \ grep ${JBOSS_HOME}/java | \ egrep -v " grep | \ tee | $0 " | ${AWK} '{print $NF " "}' | \ sort -u > ${TMPFILE} 2>/dev/null 起初,我认为这行搜索的是所有不包含这个字符串“grep

我想从上面的代码中知道这条精确的线在做什么

TMPFILE=/tmp/jboss_ps.$$
     ${PS} ${PS_OPTS} | \
     grep ${JBOSS_HOME}/java | \
     egrep -v " grep | \
     tee | $0 " | ${AWK} '{print $NF " "}' | \
     sort -u > ${TMPFILE} 2>/dev/null
起初,我认为这行搜索的是所有不包含这个字符串“grep |\tee |$0”的内容,但似乎egrep正在处理管道,那么这里管道的意义是什么,它是指还是?从我的测试来看,它似乎不是,但如果它意味着输出重定向,那么内部grep得到了什么?为什么tee也是一个人?

AFAIK

egrep -v " grep | \
     tee | $0 "
只是

egrep -v " grep | \
     tee | $0 "
其中,
\
是bash中的连续字符

egrep
grep-E

-v表示反向选择

tee
只是另一个字符串

因此,
egrep-v“grep | tee |$0”
确实会找到具有字符串{java path}的行,并且在这个结果中,所有与条件{grep或tee或$0}不匹配的行,其中
$0不是文件名“$0”
,因为它使用双引号而不是单引号:)


“commands |$variables”
倾向于扩展变量并使用实用程序

egrep命令之前管道中的命令可能类似于 ps-ef | grep。。。。您询问的egrep-v(选项)行只是省略了您需要的行 不希望出现在结果中,在本例中是由 脚本,任何tee命令,最后是$0,它是该脚本的名称 正在执行。egrep允许输入包含在双引号和
由管道符号分隔。语法egrep-[option or not]“patern1 | patern2 | patern…”

tee
不仅仅是另一个字符串。它是一个管道拆分器。
T形三通
是带引号的字符串的一部分(正好被拆分为两行)。我怀疑问题中的代码不正确;它至少格式不好。查找bash
tee
——它允许您分割输出,以便您可以将其重定向到文件(如“>”),但仍然可以在屏幕上看到它,或者仍然与其他管道(
)符号一起使用。第一行末尾是否有反斜杠?带引号的字符串“grep | tee |$0”用反斜杠分成两行;这是一个坏主意(我不得不通过实验来弄清楚它到底起什么作用)。
egrep -v " grep | tee | $0 "