シンボリックリンクディレクトリと出力リダイレクト

シンボリックリンクディレクトリと出力リダイレクト

次のコマンドを実行すると、symlinked-dir他のディレクトリへのシンボリックリンクがそのファイルがcatないと文句を言います。実際、そのようなファイルは存在しません。本物代わりにパス、しかし、これには、出力を介したシンボリックリンクへのパスが含まれているため、少なくともpwdリンク側でそのリンクの場所をcd知ることができます。pwdリダイレクトもこれを知っていることを願っています。

cd symlinked-dir && echo $(pwd) >> ../tmp && cd .. && cat tmp

それでは、上記のコマンドが機能するにはどうすればよいですか?

編集:DebianまたはGentooのシェルはBashです(両方とも同じように動作します)。

答え1

のみ:

(cd symlinked-dir && pwd) >> tmp && cat tmp

サブシェルで実行されているため、サブシェルcdにのみ影響し、サブシェルの外部でリダイレクトを実行します(サブシェルが作成される前でも)。

.txtファイルへの標準(symlinkなし)絶対パスが必要な場合pwd。ただし、コマンドがあれば簡単に使用できます。pwd -Psymlinked-dirrealpathrealpath symlinked-dir > tmp

答え2

指摘したように、..ディレクトリを読むことは役に立たないため、シンボリックパスレベルでこの問題を解決する必要があります。これらの方法の1つを以下にリストします。

cd symlinked-dir && echo $(pwd) >> $(realpath -s $(pwd)/../tmp) && cd .. && cat tmp

関連情報