次のコマンドを実行すると、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 -P
symlinked-dir
realpath
realpath symlinked-dir > tmp
答え2
指摘したように、..
ディレクトリを読むことは役に立たないため、シンボリックパスレベルでこの問題を解決する必要があります。これらの方法の1つを以下にリストします。
cd symlinked-dir && echo $(pwd) >> $(realpath -s $(pwd)/../tmp) && cd .. && cat tmp