Bash でファイルパスを正規化するにはどうすればいいですか? 質問する

Bash でファイルパスを正規化するにはどうすればいいですか? 質問する

私は変身し/foo/bar/..たい/foo

これを実行する bash コマンドはありますか?


編集: 私の実際のケースでは、ディレクトリは存在します。

ベストアンサー1

パスからファイル名の一部を取得したい場合は、「dirname」と「basename」が役に立ちます。また、「realpath」も便利です。

dirname /foo/bar/baz 
# /foo/bar 
basename /foo/bar/baz
# baz
dirname $( dirname  /foo/bar/baz  ) 
# /foo 
realpath ../foo
# ../foo: No such file or directory
realpath /tmp/../tmp/../tmp
# /tmp

realpath代替案

realpathシェルでサポートされていない場合は、

readlink -f /path/here/.. 

また

readlink -m /path/there/../../ 

同じように機能します

realpath -s /path/here/../../

正規化するためにパスが存在する必要はありません。

おすすめ記事