ファイルシステムに名前付きパイプがあるかどうかを確認する方法

ファイルシステムに名前付きパイプがあるかどうかを確認する方法

名前付きパイプが存在するかどうかをテストするために-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 

関連情報