查看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")
在这两种情况下管道和重定向的用途是什么?
答案 0 :(得分:1)
通常情况下,这两种用法都是完全没用的。
没有参数的 cat
从stdin读取,并写入stdout。
cat | command
与command
等效。
&& cat >file
与>file
等效。
更仔细地看一下,第二个例子中cat
命令的唯一目的是从stdin读取。没有它,您可以将mkdir
的输出重定向到该文件。因此,命令首先确保目录存在,然后通过stdin将任何内容写入文件。