相対シンボリックリンクパスを「実際の」パスに変更する方法(Rangerまたは端末から)

相対シンボリックリンクパスを「実際の」パスに変更する方法(Rangerまたは端末から)

実際のパスは何ですか?フォルダを考えるファイルシステムとシンボリックリンクから第二それに。現在、Ranger(またはターミナル)内のサブディレクトリにあると思います。第二/home/B/sub1/sub2実際にはそれがすべてです/another_but_actual_path/A/sub1/sub2。私が望むのは、相対パスを実際のパスに変換するツール/コマンド/スクリプトを持つことです。私の言葉は、表示pwd中に/home/B/sub1/sub2そのパスにアクセスしたいという意味です/another_but_actual_path/A/sub1/sub2

ps試してみましたreadlinkが、実際のパスがわかりません。

psいわゆる実際のパスに名前があるかどうかわかりません。

ベストアンサー1

標準のLinux "coreutils"パッケージにはコマンドが含まれていますrealpath

これは、指定されたパスへのすべてのシンボリックリンクをたどり、それに関連する「実際の」パスを返します。

だから:

$ mkdir -p /tmp/foo/bar
$ ln -s /tmp/foo $HOME/foo
$ realpath $HOME/foo
/tmp/foo
$ realpath $HOME/foo/bar
/tmp/foo/bar
$ realpath $HOME/foo/bar/baz
/tmp/foo/bar/baz

$HOME/fooリンクが置き換えられる実際のパスを表示できます/tmp/foo

最後の項目が存在する必要はありませんが、すべての中間点が存在する必要があります。

$ realpath $HOME/foo/bar/baz/qux
realpath: '/home/sweh/foo/bar/baz/qux': No such file or directory

ディレクトリがないからですbaz

おすすめ記事