シンボリックリンクの元のファイルを見つける


20

したがって、ホームディレクトリ内のファイルから別のパーティション上の別のファイルへのシンボリックリンクがあるとします。リンクされたファイルのターゲットの場所を見つけるにはどうすればよいですか?これにより、私が持っているとfile2しましょう/home/user/。しかし、それは別のものへのシンボリックリンクfile1です。file1ファイルを見つけるために各パーティション/ディレクトリを手動で移動することなく、どのように見つけることができますか?


1
「元のファイル」を展開してください。file1へのシンボリックリンクはどうなりfile0ますか?シンボリックリンクの最後のターゲット(file0)または次のターゲット()を検索しますfile1か?
don_crissti 14年

回答:


26

これを試して :

readlink -f /path/file

(複数のレベルがある場合、シンボリックリンクの最後のターゲット)

次のレベルのシンボリックリンクが必要な場合は、次を使用します。

readlink /path/file

出力が得られないim
k-Rocker

持っているはずです!エラーまたはパス
ジルケノ14年

いいえ、何もありません:user@shell a5$ readlink -f ./student1.javaと私は取得user@shell a5$
K-ロッカー

nvm、私のシンボリックリンクは正しくセットアップされていませんでした。理由はわかりません。しかし、私は新しいものを作成し、それが動作します、ありがとう。
kロッカー

2
FWIW readlink /path/fileは次のターゲットを返します。
don_crissti 14年

2

1。

ls -l bin

作物

lrwxrwxrwx 1 az az 14 Ноя 12 22:13 bin -> ../Gdrive/bin/

2。

file bin

作物

bin: symbolic link to `../Gdrive/bin/' 

3。

stat bin

作物

File: «bin» -> «../Gdrive/bin/»

スクリプトを作成しようとしていますが、これらをどのように使用しますか?Linuxの新機能。
kロッカー

1
@ k-Rockerあなたが何をしようとしているのかを説明するなら、それは良いでしょう。
コスタス14年

1

最も簡単な方法:cdシンボリックリンクがある場所に移動しls -l、ファイルの詳細を一覧表示します。

->シンボリックリンクの後の右側の部分は、それが指している宛先です。

例:

lrwxrwxrwx 1 userName groupName 22 Jan 17 13:29 temp.txtへのリンク-> /home/user/temp.txt

ここには、->「/home/user/ temp.txt」を指す「temp.txtへのリンク」があります。

しかし、@ Gilles Quenotが指摘しているように、次のこともできます。readlink -f /path/to/symbolic_link


0

コスタスの拡大

あなたが持っていると仮定します

ln -s test.txt sym_link_1.txt
ls -l sym_link_1.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt

スクリプトでできること(バッククォートを使用)

ln -s `readlink sym_link_1.txt` sym_link_2.txt

その後、あなたは持っています

ls -l sym_link_*.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 17:01 sym_link_2.txt -> test.txt

0

リンクファイルを見つける別の方法(以前は回答されていません)は、以下のコマンドを使用することです。

file -h <path_to_dir>/* | grep link

コマンド

file -h /home/prateek/* | grep link

出力

/ home / prateek / Music:/ media / prateek / HD-E1 / Musicへのシンボリックリンク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.