[解決済み] MacでGNUのreadlink -fの動作を得るにはどうしたらいいですか? [クローズド]です。
2022-02-14 06:30:37
質問
Linuxでは
readlink
ユーティリティは、オプション
-f
を追加しています。これは、MacやおそらくBSDベースのシステムでは動作しないようです。同等のものは何でしょうか?
デバッグ情報です。
$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]
解決方法は?
readlink -f
は2つのことをします。
- 実際のファイルを見つけるまで、一連のシンボリックリンクにそって反復します。
- そのファイルの 正規化された という名前、つまり絶対パス名です。
もし必要なら、バニラ・リードリンクの動作を利用したシェルスクリプトを作成するだけで、同じことが実現できます。 以下はその例である。 もちろん、これを自分のスクリプトに挿入して
readlink -f
#!/bin/sh
TARGET_FILE=$1
cd `dirname $TARGET_FILE`
TARGET_FILE=`basename $TARGET_FILE`
# Iterate down a (possible) chain of symlinks
while [ -L "$TARGET_FILE" ]
do
TARGET_FILE=`readlink $TARGET_FILE`
cd `dirname $TARGET_FILE`
TARGET_FILE=`basename $TARGET_FILE`
done
# Compute the canonicalized name by finding the physical path
# for the directory we're in and appending the target file.
PHYS_DIR=`pwd -P`
RESULT=$PHYS_DIR/$TARGET_FILE
echo $RESULT
これはエラー処理を含んでいないことに注意してください。 特に重要なのは、シンボリックリンクのサイクルを検出しないことです。 これを行う簡単な方法は、ループを回る回数を数えて、1,000などというありえないほど大きな数になったら失敗するようにすることでしょう。
を使用するように編集されました。
pwd -P
の代わりに
$PWD
.
このスクリプトは、次のように呼び出されることを想定していることに注意してください。
./script_name filename
はありません。
-f
変更
$1
を
$2
と併用できるようにしたい場合は
-f filename
GNU readlinkのように。
関連
-
[解決済み】psql: コマンドが見つかりません Mac
-
[解決済み】Git リポジトリから .DS_Store ファイルを削除するには?
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] Mac OSでNode.jsを最新バージョンにアップグレードする。
-
[解決済み] Mac OSのファインダーでターミナルを開くにはこちら【終了しました
-
[解決済み] Mac OS Xのターミナルで、前の出力をクリアするにはどうすればよいですか?
-
[解決済み] MacでAndroid Studioを完全にアンインストールする方法を教えてください。
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] gitのルートディレクトリを1つのコマンドで取得する方法はありますか?
-
[解決済み] Bashスクリプトでカレントディレクトリ名(フルパスなし)を取得する
-
[解決済み] ファイルのフルパスを取得する方法は?
-
[解決済み] Bashで現在の作業ディレクトリをスクリプトのディレクトリに設定するにはどうすればよいですか?
-
[解決済み] Unixシェルスクリプトは、スクリプトファイルが存在するディレクトリを見つけることができますか?
-
[解決済み】Bashスクリプトが自分へのフルパスを取得する確実な方法【重複あり
-
[解決済み】Bashでファイルパスを正規化する方法とは?
-
[解決済み】シェルスクリプトのシンボリックリンクを解決する方法
-
[解決済み] 現在の作業ディレクトリではなく、ファイルの場所に基づく相対パス [重複]。
-
[解決済み] OS XでのBashスクリプトの絶対パス