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

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

명명된 파이프가 존재하는지 테스트하기 위해 -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

man배쉬 페이지 에서

-p file

만약에 사실이다file존재하며 명명된 파이프(FIFO)입니다.

또는 파일 이름을 표시하지 않고 유형 정보만 인쇄 file하려면 with 명령을 사용하십시오. 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 

관련 정보