파일 시스템에 명명된 파이프가 있는지 확인하는 방법

파일 시스템에 명명된 파이프가 있는지 확인하는 방법

명명된 파이프가 있는지 테스트하기 위해 -f 플래그를 사용해 보았습니다.

if [[ ! -f "$fifo" ]]; then
  echo 'There should be a fifo.lock file in the dir.' > /dev/stderr
  return 0;
fi

이 검사는 잘못된 것 같습니다. 그렇다면 명명된 파이프는 파일이 아니라 다른 것일 수도 있습니다.

답변1

-p파일 유형이 맞는지 확인하려면 구문을 사용해야 합니다.명명 된파이프. 표준 테스트 [(POSIX 호환) 및 확장 테스트 연산자 [[(bash/zsh 특정) 와 함께 작동합니다.

if [[ -p "$fifo" ]]; then
    printf '%s is a named pipe' "$fifo"
fi

manBash 페이지 에서

-p file

다음과 같은 경우 참file존재하며 명명된 파이프(FIFO)입니다.

또는 파일 이름 없이 유형 정보만 인쇄하려면 file명령과 함께 사용하십시오. POSIX와 호환되지 않을 수 있습니다 -b.-b

if [ $(file -b "$fifo") = "fifo (named pipe)" ]; then
   printf '%s is a named pipe' "$fifo"
fi

없이는 -b할 수 있습니다

type=$(file "$fifo")
if [ "${type##*: }" = "fifo (named pipe)" ]; then 

관련 정보