"ls" 파이핑이 필요한 명령에 특정 파일 나열

"ls" 파이핑이 필요한 명령에 특정 파일 나열

나는 파일 이름을 entr.

( entr파일을 감시하고 시작 시 및 해당 파일이 변경될 때 명령을 실행하는 프로그램입니다. ls *.ext예를 들어 해당 문서에 파이프로 연결되어 있다고 되어 있으므로 줄 바꿈으로 구분된 유효한 파일 이름 목록이 파이프로 연결될 것으로 예상합니다. 파일 이름이 잘못되었습니다.)

여러 줄

이 명령을 사용하면 여러 줄 문자열로 특정 파일을 나열할 수 있습니다.

$ entr echo "command ran" <<< "
> filename1
> filename2
> "

나는 따옴표를 발견하고 그것을 별도의 줄에 나열해야 하는 것이 짜증스럽습니다. 또한 빠른 검색에 따르면 Bash 이외의 셸에서는 작동하지 않을 수 있습니다.

대화식을 사용할 수 있습니다 cat.

$ cat | entr echo "command ran"
filename2
filename2

하지만 실수할 여지가 없도록 매번 줄을 감싸고 Ctrl-D마지막에는 주의 깊게 입력해야 합니다.

Heredoc도 비슷하게 작동하지만 북엔드 구문이 포함됩니다.

$ cat << EOF | entr echo "command ran"
> filename1
> filename2
> EOF

하나의 선:

나는 또한 이것을 할 수 있는데 ls, 언뜻 보기에 괜찮아 보인다:

$ ls filename1 filename2 | entr echo "command ran" 

그러나 ls철자가 틀린 이름은 제거되고, entr잘못된 이름은 검증 및 경고되며, ls를 이런 방식으로 호출할 때의 부작용이 걱정됩니다.

다음으로 파이핑하기 전에 echo파이핑 할 수 있습니다 .trentr

$ echo filename1 filename2 | tr " " "\n" | entr echo "command ran"

하지만 나는 모든 추가 명령을 갖고 싶지 않습니다.

질문:

대부분의(가급적이면 모든) 쉘에서 작동하는 짧고 우아한 명령을 작성하는 방법은 무엇입니까? posix가 기대하는 구문은 이상적입니다.

답변1

entr각 파일이 별도의 줄에 있기를 원하기 때문에 매우 제한적입니다. 너가지다각 파일 이름을 별도의 줄에 입력합니다. tr구분 기호가 파일 이름의 일부인 경우("파일 이름입니다") 이를 한 줄로 만들려는 시도(예: 예)는 실패합니다.

난 그냥 간단한 일들을 하고 싶어

echo 'filename 1
filename2' | entr echo "command ran"

관련 정보