2009-05-27 8 views
3

入力としてファイルパスを取り、絶対パスを返すbashコマンドがありますか?感謝をbashシェル内の指定されたパスを評価する方法

/tmp/yaneeve/output/kit/SOURCES/usr/apps/myapp/lib

/tmp/yaneeve/kit/linux/../../output/kit/SOURCES//usr//apps/myapp/lib

とパスを返します。 具体的には、私は、次のような入力としてパスを受け取り、コマンドをしたいと思います!

答えて

5

てみてください(Linux)のパスが存在する場合は

readlink -f 
+0

、 お知らせそのI readlinkにバグ(?)が見つかりました。パスが実際に存在しないときは、最初の部分だけが出力に追加されます。例えば : 出力は/あろう TMP/yaneeve /アプリ/入力される/ TMP/yaneeve /アプリ/ newapp /ガイド/ ENG 言うと存在するこのパスの最深部であることを言いますtmp/yaneeve/apps/newapp この発見に関するコメントはありますか? – Yaneeve

+0

これは何も出力しません。存在しないパシュ(私はあなたの例を使った)です。 – TheBonsai

9

は、はるかに信頼性のあるポータブルな方法(でも、Linuxの場合)があります:こんにちはすべて

canonicalPath=$(cd "$path"; pwd) 
+0

良いキャッチ。外部pwdプログラムを使用する必要はありますか?内部のものは、物理的なものと一致する必要のない論理パスに従います。 – TheBonsai

+0

どのように信頼性が高いですか? – Yaneeve

+0

mkdir a "dir1"、リンク "dir2"を作成し、cd dir2、pwdとコマンドpwdを比較します。 – TheBonsai

関連する問題