.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