用猫管道和重定向

时间:2013-10-01 11:13:25

标签: bash cat

查看Dokku source code,我发现了两种我不熟悉的管道和重定向用途。

一个是:cat | command

示例:id=$(cat | docker run -i -a stdin progrium/buildstep /bin/bash -c "mkdir -p /app && tar -xC /app")

另一个是cat > file

示例:id=$(cat "$HOME/$APP/ENV" | docker run -i -a stdin $IMAGE /bin/bash -c "mkdir -p /app/.profile.d && cat > /app/.profile.d/app-env.sh")

在这两种情况下管道和重定向的用途是什么?

1 个答案:

答案 0 :(得分:1)

通常情况下,这两种用法都是完全没用的。

没有参数的

cat从stdin读取,并写入stdout。

cat | commandcommand等效。

假设上一个命令处理了stdin输入,

&& cat >file>file等效。

更仔细地看一下,第二个例子中cat命令的唯一目的是从stdin读取。没有它,您可以将mkdir的输出重定向到该文件。因此,命令首先确保目录存在,然后通过stdin将任何内容写入文件。