मैं लिंक को हटाए बिना प्रतीकात्मक लिंक के लक्ष्य को कैसे हटाऊं?


10

मेरे पास एक प्रतीकात्मक लिंक है ~/Desktop/test.txtजो इंगित करता है ~/rendu/test.txt

मैं केवल पथ जानता हूं ~/Desktop/test.txt, मैं ~/rendu/test.txtप्रतीकात्मक लिंक को हटाने के बिना एक तेज़ तरीका चाहता हूं ।

जो जानना चाहता है, उसके लिए: मेरे पास crypted.xxxमेरे डेस्कटॉप पर एक फ़ाइल है , जो एन्क्रिप्टेड है और जिसमें मेरा पासवर्ड है।

जब मैं अपनी एन्क्रिप्ट की गई फ़ाइल को अपडेट करना चाहता हूं, तो मैं इसे डिक्रिप्ट करता हूं और यह crypted.txtएक विशेष निर्देशिका में बनाता है। तो मैं व्यावहारिक कारणों से अपने डेस्कटॉप पर उस फ़ाइल का लिंक बनाता हूं। लेकिन मेरी तरफ देखने के बाद crypted.txt, मैं इसे जल्दी से हटाना चाहता हूं crypted.txt(लेकिन डेस्कटॉप में लिंक नहीं)।


4
रुको, आप फ़ाइल को हटाना चाहते हैं (जैसा कि आपका प्रश्न बताता है) या फ़ाइल की सामग्री को हटा दें (जैसा कि शीर्षक sais)
याकूब Vlijm

फ़ाइल को हटा दें और प्रतीकात्मक लिंक को रखें, गलतफहमी के लिए खेद है
Ugo Hed

2
हो सकता है कि आप इसके बजाय एक समर्पित पासवर्ड मैनेजर का उपयोग करने पर विचार कर सकते हैं? Keepass बहुत अच्छा है, उदाहरण के लिए, और रेपो में है।
evilsoup

जवाबों:


11

findसिम्लिंक को खोजने के लिए उपयोग करना और फिर readlinkलक्ष्य के लिए पूर्ण पथ प्राप्त करने के लिए उपयोग करना rm:

find ~/Desktop/ -type l -name 'test.txt' -exec bash -c 'rm "$(readlink -f "$1")"' _ {} \;

या जैसा कि आप पहले से ही लिंक नाम जानते हैं:

rm "$(readlink -f ~/Desktop/test.txt)"

4
हालांकि रिश्तेदार लिंक के साथ सावधान रहें। एक रिश्तेदार प्रतीकात्मक लिंक को उस निर्देशिका के सापेक्ष समझा जाता है, जिसमें वह स्थित है। लेकिन आपका rmकमांड इसे शेल की वर्तमान निर्देशिका के सापेक्ष व्याख्या करेगा। इसलिए उस कमांड के लिए एक अलग फ़ाइल को हटाने की संभावना है जो प्रतीकात्मक लिंक इंगित कर रहा था।
कास्परड

5
@kasperd के साथ -f -eया -mपूर्ण पथ लौटाया जाता है, भले ही लक्ष्य सिम्लिंक एक सापेक्ष पथ को इंगित करता है, इसलिए हां, कि 'के मामले में चिंता है rm "$(readlink ~/Desktop/test.txt)", लेकिन उपयोग करते समय -f -eया नहीं -m
कोस

@kos आप सही हैं। उस स्थिति में आपको केवल चिंता करनी होगी यदि कोई दौड़ की स्थिति हो सकती है।
कास्परड

वैकल्पिक रूप से, कोई realpath का उपयोग कर सकता है , जो इस मामले में भी ऐसा ही करता है readlink -f(लेकिन यह भी काम करता है यदि लक्ष्य स्वयं लिंक नहीं है)।
लेफ्टरेंबाउट

6

बस उपयोग करें:

printf "" > "$(readlink '/path/to/link')"

करने के लिए स्पष्ट फ़ाइल, या

rm "$(readlink '/path/to/link')"

फ़ाइल को निकालने के लिए।

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