【问题标题】:What does the "-;" mean at the end of a bash statement?“-;”是什么意思意思是在 bash 语句的末尾?
【发布时间】:2012-05-07 11:03:00
【问题描述】:

例如

bwa sampe ref.fa r1.sai r2.sai r1.fq r2.fq | samtools view -bSho out.bam -;

“-;”的用途是什么最后的字符?他们在做什么?为什么它们是必要的?

【问题讨论】:

  • 如果它是一个表情符号,那么他们忘记了包含笑脸。 (-;

标签: linux bash syntax pipe


【解决方案1】:

分号结束命令(我相信结束管道在技术上是正确的说法)。如果你愿意,你可以用另一个命令来跟随它,如

bwa sampe ref.fa r1.sai r2.sai r1.fq r2.fq | samtools view -bSho out.bam -; echo Here is another command.

否则,分号是无害的,但可能是不必要的。

关于分号前面的- 连字符,对于samtools 和许多其他命令,这意味着使用标准输入代替输入文件(或者,在某些情况下,使用标准输出代替输出文件) .这是典型的 Linux/Unix 用法。

(感谢@phatfingers 验证samtools 命令的用法。)

【讨论】:

  • 啊,我现在对它的理解是“正在传输的东西”,如果这有意义的话!太棒了,谢谢!
  • linux.die.net/man/1/samtools 的手册页证实了您在“描述”部分下的陈述。
  • 分号并不意味着结束“管道”。它表示命令或语句的结束,或者是分隔符。那就是“for x in ls; do echo $x; done”可以被认为是一个管道,但有两个分号。双分号用于大小写分隔符。
  • @AdamGent:感谢您的反馈。也许我误读了 Bash 的联机帮助页。我的手册页版本如下:“list 是一个或多个 pipelines 的序列,由运算符 ;、&、&& 或 || 之一分隔,并且可选由 ;、& 或 之一终止。”当然,你是对的,不想和你争论语义的琐事!但我认为我的用法是正确的。如果不是这样,请告知。
  • @thb 不,你的权利!在评论之前我并没有真正阅读或思考:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 2011-08-15
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多