【发布时间】:2020-05-11 01:24:53
【问题描述】:
我看到有人在将剪贴板中的命令粘贴到终端之前运行 cat|bash。
bash 在 bash 中执行命令 我不知道为什么我们这里需要cat 和|(pipe)。
这种做法有什么有用的效果?
【问题讨论】:
-
...一般来说,在断言 stdin 不是 TTY 的同时,还有其他/更好的方法可以将输入输入到 stdin 上的 shell。
bash <<'EOF'将完成这项工作,f/e。不需要cat——因为heredoc 是作为文件呈现的,而不是TTY。curl | bash或bash < inputfile或我能想到的几乎任何其他有用的案例也是如此。 -
@CharlesDuffy 感谢您的命令,是我的同事在终端中执行了一堆命令,如果直接复制并粘贴到终端中,它将被执行但他在粘贴之前做了
cat|bash那些命令集。 -
这清楚地说明了这个问题!就我个人而言,我会改为运行
bash <<'EOF",然后在粘贴后键入EOF,但这些方法通常可以完成相同的事情。
标签: bash shell terminal scripting