2017-01-27 11 views
2

シンボリックリンクのフルパスを元のファイルのパスに解決せずに完全なパスを取得するにはどうすればよいですか?シンボリックリンクを解決せずに完全なパスを取得しますか?

~$ readlink -f analysis_results/Sample1/bar.txt 
/Users/me/foo.txt 
:私は bar.txtへのフルパスを取得しようとした場合

~$ tree analysis_results/ 
analysis_results/ 
`-- Sample1 
    `-- bar.txt -> /Users/me/foo.txt 

、私が代わりにfoo.txtへのパスで終わる:私はこのような設定ディレクトリを持っている場合、例えば

しかし、私が本当にしたいことはこれです:

/Users/me/analysis_results/Sample1/bar.txt 

がありますこれを達成するための簡単な方法は?私はrealpathが利用できないようですが、そのプログラムがこれを行うかどうか、またはこのように動作する他のコマンドがあるかどうかはわかりません。

/Users/me/analysis/peaks/workflow/code 

しかし、私のようなシンボリックリンクへのフルパスを読みたい:

/Users/me/analysis/alignment/results/Sample1/bar.txt 

答えて

0
​​

解決のみディレクトリと私のpwdのようなものであるとき

物事はより複雑になります結果にファイル名を追加します。 GNU realpath

3

$ touch foo 
$ ln -s foo bar 
$ realpath --no-symlinks bar 
/path/to/bar 
+0

これは完璧に聞こえますが、残念ながら 'realpath'は私のOS CentOS 6では利用できません(ちょうどこの情報でOPを更新しました)。私はそれがインストールされるのを調べなければならないでしょう。 – user5359531

+0

@ user5359531 Centos YUMがうまくいかない場合、[Perlでも同様のことを行う](http://stackoverflow.com/a/16372849/2908724)ことができます。 – bishop

0

あなたが解決任意の中間シンボリックリンクとの完全なパスをしたいですか?

"もう一つのやり方"カテゴリから:あなたのpwdコマンドには、おそらくディレクトリへの物理パスを出力するための "-P"オプションがあります。だから、あなたはそう

[email protected][/tmp] 
$ mkdir test 
[email protected][/tmp] 
$ ln -s test linkdir 
[email protected][/tmp] 
$ (cd /tmp/linkdir; pwd -P) 
/tmp/test 

のような何かを得るために()cdpwdを包むことができ、あなたがやっているすべてはcd $(dirname $yourfile)、その後、親ディレクトリへの物理パスを取得するにはpwd -Pを実行しています。この例では括弧で囲まれているので、サブシェルが作成され、現在の作業ディレクトリには影響しません。

関連する問題