कैसे रूट करने के लिए एक सिमलिंक बनाने के लिए


13

मैं /अपने होम डायरेक्टरी में रूट ( ) फोल्डर के लिए एक सिमलिंक बनाना चाहता हूं । हालाँकि अगर मैं यह कोशिश करता हूँ, मुझे मिलता है

~$ ln -s /
ln: failed to create symbolic link './': File exists

मैं Nautilus Ctrl+ का उपयोग करके ऐसा कर सकता हूं D, इसलिए मुझे पता है कि यह संभव है।

टर्मिनल का उपयोग कैसे करें?


हालांकि यह एक अच्छा सवाल है, मैं इस कारण को जानना चाहता हूं कि आप ऐसा क्यों करना चाहते हैं? क्या इसमें टाइप करना बहुत मुश्किल है cd /? या आप एक लिंक बनाना पसंद करते हैं जो बार-बार लूप से गुजरता रहेगा? उदाहरण: cd root/home/terrance/root/home/terrance/root/home/terrance/root। । । आदि
टेरेंस

वास्तव में नहीं। तुम जड़ से जोड़ने की आवश्यकता के बिना ऐसा कर सकते थे। वास्तव में, मैं बस उत्सुक था कि आप ऐसा क्यों नहीं कर सकते हैं
अंकुर एस

काफी उचित। मेरे सवाल का जवाब देने के लिए शुक्रिया। =)
टेरेंस

जवाबों:


17

आपको लिंक का नाम याद आ रहा है, यह होना चाहिए:

cd ~
ln -s / root

जो तब आपके होम डायरेक्टरी में रूट नाम से एक सिमलिंक बनाता है। तो सही उपयोग है:

ln -s <target> <link-name>

आप जो त्रुटि संदेश देखते हैं, वह ./हमेशा मौजूद रहता है और इस नाम से लिंक नहीं बनाया जा सकता है, सबसे अच्छा यह है कि गलत लिंकेज को रोकने के लिए दोनों मापदंडों के साथ lnकमांड 2 का उपयोग करें ।

से man ln:

SYNOPSIS

(1st form) ln [OPTION]... [-T] TARGET LINK_NAME  
(2nd form) ln [OPTION]... TARGET  
(3rd form) ln [OPTION]... TARGET... DIRECTORY  
(4th form) ln [OPTION]... -t DIRECTORY TARGET...  

विवरण

1 फॉर्म में, TARGETनाम के साथ एक लिंक बनाएं LINK_NAME। दूसरे रूप TARGETमें, वर्तमान निर्देशिका में एक लिंक बनाएं । 3rd और 4th फॉर्म में, प्रत्येक TARGETमें लिंक बनाएं DIRECTORY। डिफ़ॉल्ट रूप से कठिन लिंक बनाएं, के साथ प्रतीकात्मक लिंक --symbolic। डिफ़ॉल्ट रूप से, प्रत्येक गंतव्य (नए लिंक का नाम) पहले से ही मौजूद नहीं होना चाहिए 4 । हार्ड लिंक बनाते समय, प्रत्येक TARGETका अस्तित्व होना चाहिए। प्रतीकात्मक लिंक मनमाना पाठ पकड़ सकते हैं; यदि बाद में हल किया जाता है, तो एक रिश्तेदार लिंक इसकी मूल निर्देशिका के संबंध में व्याख्या की जाती है।

छोटे विकल्पों के लिए लंबे विकल्पों के लिए अनिवार्य तर्क अनिवार्य हैं।

विकल्प

अंतिम पैरामीटर, <link-name>लक्ष्य के अंतिम भाग में चूक। इसलिए जब लक्ष्य निर्दिष्ट नहीं /path/dirहै dirतो लिंक नाम डिफ़ॉल्ट होगा । 1 और अगर आप उदाहरण के लिए बनाने के ~/etcसाथ mkdir ~/etcऔर फिर से चलाने ln -s /etcमें ~यह लिंक क्योंकि नाम / निर्देशिका पहले से मौजूद नहीं बना सकते। 3

और आप अपनी होम डायरेक्टरी में बनाई गई लिंक देख सकते हैं (उदाहरण के लिए, उदाहरण के लिए, आप जो चाहें उसे नाम देने के लिए स्वतंत्र हैं):

$ ls -l ~/root
lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /

1 उस बिंदु को इंगित करने के लिए @thomasrutter का धन्यवाद ।
2 भी देखें man linkऔर man symlink
3 टिप्पणियों में एक उदाहरण प्रदान करने के लिए @steeldriver के लिए धन्यवाद ।
4 पाठ भाग को प्रश्न के लिए प्रासंगिक बनाने के लिए जोर दिया गया भाग।


मेरा एकमात्र शेष संदेह यह है कि ln -s /etcकाम जैसी आज्ञा क्यों होनी चाहिए, लेकिन यह नहीं? उत्तर के लिए धन्यवाद,
अंकुर एस

यह इसलिए बनाया गया है क्योंकि इसका एक निर्देशिका नाम है, /रूट हो सकता है या यह एक पथ घटक हो सकता है इसलिए प्रोग्राम को पता नहीं चल सकता है कि अब क्या मतलब है। /etcबस एक स्पष्ट अंतर पथ है।
वीडियोनौथ

7
@AnkurSonawane क्योंकि ./जाएगा हमेशा मौजूद - ./etcइसलिए संभावना नहीं। mkdir etcपहले प्रयास करें , और फिर ln -s /etc- आप भी मिलेंगेFile exists
स्टीलडेवर

8
अंतिम पैरामीटर, लिंक-नाम, लक्ष्य के अंतिम भाग के लिए डिफॉल्ट यदि छोड़ा गया हो। इसलिए जब लक्ष्य निर्दिष्ट नहीं /some/dirहै dirतो लिंक नाम डिफ़ॉल्ट होगा । जब लक्ष्य बस है /, हालांकि, यह काम नहीं कर रहा है।
थोमसट्रेटर

मुझे नहीं लगता कि यह अत्यंत महत्वपूर्ण लेकिन @steeldriver का स्पष्टीकरण अधिक उचित लगता है जो File Existsआउटपुट दिया गया है। ऐसा नहीं है कि यह वैसे भी मायने रखता है क्योंकि यह पतित मामला है
अंकुर एस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.