内部シンボリックリンクを失うことなく、シェルスクリプトでユーザー入力パス(絶対または相対)を絶対パスに変換できますか?たとえば、/a/b/c は現在のユーザーディレクトリ、c はシンボリックリンク b です。 /のように:
input . => result /a/b/c
input ./d => result /a/b/c/d
input ../c => result /a/b/c
input /a/b/c => result /a/b/c
(readlink converts it to /a/b/s, but I need /a/b/c)
答え1
あなたの質問を正しく理解したら、以下を使用する必要がrealpath
あります-s
。
-s、--stripストリップのみ。と..コンポーネントがありますが、シンボリックリンクは確認されません。
$ realpath -s a/b/c
/tmp/a/b/c
$ readlink a/b/c
s