ファイル名がシンボリックリンクかどうかをテストするためにPOSIXユーティリティを探しています。

ファイル名がシンボリックリンクかどうかをテストするためにPOSIXユーティリティを探しています。

私はいくつかのシェルが、少なくともファイル名がシンボリックリンクを命名する場合を検出するためにファイルテスト演算子をサポートしていることを知っています。

POSIXはありますか?便利1同じ機能を提供しますか?


1ここでは正しい用語を使用していない可能性があります。 「ユーティリティ」とは組み込みシェルではなく、/binetc.以下のスタンドアロン実行可能ファイルを意味します。/usr/bin

ベストアンサー1

あなたが探しているtest:

-h パス名

パス名が存在し、シンボリックリンクであるファイルで解決された場合は真です。パス名が解決できない場合、またはパス名が存在するがシンボリックリンクではないファイルで解決された場合は、False を返します。パス名の最後のコンポーネントがシンボリックリンクの場合、シンボリックリンクに従わないでください。

ほとんどのシェルには組み込みプログラムがありますが、test途中でシェルを呼び出さずに他のプログラムから呼び出すことができるスタンドアロンプ​​ログラムとしても存在します。これは、シェル自体で機能する機能(break、、、 ...などの特殊な組み込み機能exportsetを除いて、シェルに存在できるほとんどの組み込み機能に当てはまります。

[ -h pathname ]Equivalenttest -h pathname[まったく同じように機能しますtestが、[最後に追加のパラメータが必要です。のようにスタンドアロンプ​​ログラムとして存在します。][test

たとえば、

$ ln -s foo bar
$ /usr/bin/test -h bar && echo y
y

おすすめ記事