एक प्रतीकात्मक लिंक की मूल फ़ाइल ढूँढना


20

तो मान लें कि मेरे घर निर्देशिका में एक फ़ाइल का एक प्रतीकात्मक लिंक एक अलग विभाजन पर दूसरी फ़ाइल में है। मुझे लिंक की गई फ़ाइल का लक्ष्य स्थान कैसे मिलेगा? इसके द्वारा, मेरा मतलब है, मान लें कि मेरे पास file2है /home/user/; लेकिन यह दूसरे के लिए एक प्रतीकात्मक लिंक है file1। मैं file1फ़ाइल को खोजने के लिए प्रत्येक विभाजन / निर्देशिका के माध्यम से मैन्युअल रूप से जाने के बिना कैसे पाऊंगा?


1
कृपया "मूल फ़ाइल" पर विस्तार करें। यदि file1कोई सहिष्णु है तो क्या होगा file0? क्या आप अपने सिमलिंक ( file0) या केवल अगले एक ( file1) का अंतिम लक्ष्य ढूंढना चाहते हैं ?
20 अप्रैल को don_crissti

जवाबों:


26

इसे इस्तेमाल करे :

readlink -f /path/file

(एक से अधिक स्तर होने पर अपने सिम्लिंक का अंतिम लक्ष्य)

यदि आप प्रतीकात्मक लिंक का अगला स्तर चाहते हैं, तो उपयोग करें:

readlink /path/file

im कोई उत्पादन नहीं हो रहा है
k-Rocker

आपके पास एक होना चाहिए! त्रुटि या एक रास्ता
गाइल्स क्वेनोट

कुछ नहीं: user@shell a5$ readlink -f ./student1.javaऔर मुझे मिलता हैuser@shell a5$
के-रॉकर

nvm, मेरा प्रतीकात्मक लिंक सही नहीं था, निश्चित नहीं कि क्यों। लेकिन मैंने एक नया बनाया और यह काम करता है, धन्यवाद।
के-रॉकर

2
एफडब्ल्यूआईडब्ल्यू readlink /path/fileअगले लक्ष्य को लौटाएगा।
दान_क्रांति

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/»

ठीक है अच्छी तरह से एक स्क्रिप्ट बनाने की कोशिश कर रहा im, तो मैं कैसे इन का उपयोग करेगा? im लिनक्स में नया
के-रॉकर

1
@ के-रॉकर यदि आप समझाते हैं कि आप जो करना चाहते हैं वह बेहतर होगा।
कोस्टा

1

सबसे सरल तरीका: cdजहां प्रतीकात्मक लिंक स्थित है और ls -lफाइलों के विवरण को सूचीबद्ध करने के लिए करते हैं।

->प्रतीकात्मक लिंक के बाद के दाईं ओर का हिस्सा वह गंतव्य है जिस पर वह इंगित कर रहा है।

उदाहरण के लिए:

lrwxrwxrwx 1 userName groupName 22 जनवरी 17 13:29 temp.txt का लिंक -> /home/user/temp.txt

यहां हमारे पास "(temp.txt का लिंक") है जो इंगित करता है ( ->) "/ home/user/temp.txt "।

लेकिन, @ गिल्स क्वेनॉट की तरह , आप भी कर सकते हैं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

एक स्क्रिप्ट में आप कर सकते हैं (backticks का उपयोग करें)

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

आउटपुट :

/ होम / प्रेटेक / म्यूज़िक: प्रतीकात्मक लिंक टू / मीडिया / प्रेटेक / एचडी-ई 1 / म्यूज़िक

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.