• ベストアンサー

cshでのリンクファイルの存在確認方法

cshで if (-f ***) then endif とすると *** というファイルが存在するかどうか調べられますが、*** というファイルが、リンクファイルかどうか調べるにはどうすればよいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

/bin/sh なら if test -L *** then xxxxxxxxx fi ですね。 cshはログインシェルとして使うだけならまだしも、スクリプトを書くのには機能が貧弱なので、/bin/sh か /bin/bash 等を使ったほうがいいでしょう。testはビルトインコマンドです。

その他の回答 (2)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

オリジナルのcshのファイル照会演算子には、シンボリックを検査するものはないので、 ・tcshを使う。 ・Perlなどを使う。 ・外部コマンドtestをつかう。 ・ls -ldの結果からファイルモードの先頭がlなやつをgrepして、その行数をカウントする。 ――といったやり方が考えられます。

taurus4
質問者

お礼

分かりました。ありがとうございます。 いろいろ試してみたいと思います。

  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.1

リンクファイルってシンボリックリンクのことですか? if ( -l *** ) then ... endif でいいと思います。

taurus4
質問者

補足

早速やってみたんですが、実行すると、 if: 数値形式が正しくありません。 というエラーがでて終わってしまいました。「-l」って言うオプションcshで使えるんですか? シンボリックリンクかどうかはよく分かりませんが。。。 ln -s で1つ上のディレクトリからリンクしてきているファイルです。