制作一个去除所有前导空格的 FIFO?

制作一个去除所有前导空格的 FIFO?

我从个人手册.txt文件中复制了一个代码块。我将其粘贴到终端中并通过按 Enter(回车)执行。最近,出于美观原因,我在那里缩进了它,但是当我复制它时,它缩进了执行中断(打开了辅助提示符)。为了处理这种现象我想到了使用先进先出(FIFO)。

我尝试创建一个 FIFO,并向其传递以下代码块:

⇨⇨⇨⇨(
⇨⇨⇨⇨Indented commands...
⇨⇨⇨⇨)

FIFO 应从此原始代码块中删除所有前导空格(通常是制表符,但也可能是空格),并返回其未缩进的版本:

(
commands...
)

据我了解,我应该放入 FIFO 文件中的代码是's/^\s*//g'.

我的问题:

当我将代码块粘贴到 Bash 终端时,在执行之前如何使其受到我创建的 FIFO 文件的影响?

更新:

这是我测试的完整语法。它未能正确执行(没有错误,只是打开了辅助提示),因此我考虑使用 FIFO 过滤器:

⇨⇨⇨⇨(
⇨⇨⇨⇨command1...
⇨⇨⇨⇨cat <<-'PMA' > /opt/script.sh
⇨⇨⇨⇨⇨⇨⇨⇨#!/bin/bash
⇨⇨⇨⇨⇨⇨⇨⇨strings...
⇨⇨⇨⇨PMA
⇨⇨⇨⇨command2...
⇨⇨⇨⇨) | sed 's/^\s*//g'

答案1

我不相信你可以(相当容易地)简单地创建一个 FIFO(又名“命名管道”)来改变通过它的数据。当数据从管道的远端出来时,过滤数据可能会更简单,就像[...] | sed 's/^\s*//'(该g标志是多余的,因为“行的开头”每行只能出现一次)。

相关内容