パス全体を入力せずに現在のフォルダーへの絶対パスとしてのシンボリックリンク


10

シンボリックリンクは相対パスの保存されたショートカットです:

~/foo ln -s . ~/bar/foo
~/foo ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .

ファイル~/bar/foobar現在のディレクトリ、つまりそれ自体へのシンボリックリンクです

自分が現在いるディレクトリへのシンボリックリンクを別のディレクトリに作成する場合はどうなりますか?上記の例では、私が入って~/fooおり、へ~/bar/fooのシンボリックリンクとして作成したいと思います~/foo。もちろん、現在のディレクトリは5文字よりもかなり長く、入力も簡単ではないかもしれません。

回答:


13

タイプと言います

ln -s $PWD ~/bar/

または

ln -s `pwd` ~/bar/

あなたも使うことができます

ln -s $PWD ~/bar/

しかし、あなたはそれを知っていたと思います、そしてそれはあなたが世話をしているものではありません。質問を更新して、あなたの目標は何ですか?

パスにスペースが含まれている場合は、以下を使用することをお勧めします。

ln -s "$PWD" ~/bar/

2
$変数とコマンド置換を二重引用符で囲みます。二重引用符で囲まないと、スペースを含むファイル名が実行を妨げます。とにかくそれがデフォルトのリンク名であるため、末尾も必要ありません$(basename $PWD)(そしてa $(と引用符:-)を忘れました))。
Daniel Andersson

私は愚かだったと思います。私はpwdアプローチを試みたが、何かがうまくいかなかったと思った。それをID-ten-Tエラーにしましょう
Gareth

@DanielAnderssonそれはパス内のスペースをサポートしていないことは正しいです。いい視点ね。だから記録のために私は答えを更新します:)
Huygens

4

絶対に:

ln -s "$(readlink -f .)" ~/bar

(スクリプトの一般性には良いかもしれません)または単に

ln -s ~/foo ~/bar

比較的:

ln -s ../foo ~/bar

タブ補完は、入力に役立ちます。


grawityのコメントとhttp://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.htmlから

*リリース8.16の注目すべき変更点(2012-03-26)[安定版]

...

ln--relativeターゲットの指定方法に関係なく、ターゲットへの相対シンボリックリンクを生成するオプションを受け入れるようになりました。

したがって、このバージョンでは:

ln -s --relative . ~/bar

動作するはずです(実際には、--relativeスイッチを追加した最初の例と同じです)。


4
最新のcoreutilsは、を使用して相対シンボリックリンクを自動的に作成できますln -s -r foo ~/bar
user1686

@grawity:興味深い。私のシステムにはまだないようです(Debian Sid)。
ダニエルアンダーソン

gitによれば、3月22日にv8.16に追加されたようです。
user1686 2012年

1
また、$(readlink -f .)以上の利点は何$PWDですか?
user1686 2012年

2
@grawity:あまりありません。現在の作業ディレクトリにリンクが到達している場合は、動作が異なります。readlink -f次に、現在のディレクトリの絶対ターゲットパスにシンボリックリンクしますが、現在のディレクトリ$PWDのリテラルディレクトリにシンボリックリンクします。
ダニエルアンダーソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.