जवाबों:
आप इसे rmहमेशा की तरह हटा सकते हैं rm NameOfFile:। ध्यान दें कि हार्ड लिंक के साथ "मूल फ़ाइल" और "फ़ाइल का लिंक" के बीच कोई अंतर नहीं है: आपके पास एक ही फ़ाइल के दो नाम हैं, और केवल एक नाम को हटाने से दूसरे को नहीं हटाया जाएगा।
sudo) के रूप में rm करने की आवश्यकता होगी , यदि आपने इसे प्रदान की कमांड (सुपर-उपयोगकर्ता के रूप में) के साथ बनाया है।
मेरे पास अनावश्यक कड़ी को हटाने के लिए यह स्क्रिप्ट है। लेकिन ध्यान रखना - यह काफी खतरनाक है।
#!/bin/bash
clear
echo Reduce redundant hardlinks in the current folder
echo ------------------------------------------------
echo
echo " $(basename $0) [-R]"
echo " -R means recursive"
echo
read -p "You can break by pressing Ctrl+C"
echo
ask=1
if [ a$1 == "a-R" ]; then recursive=" -R "; fi
for i in $(ls -i $recursive | awk '{print $1}' | uniq --repeated | sort);
do
echo "Inode with multiple hardlinked files: $i"
first=1
for foundfile in $(find . -xdev -inum $i);
do
if [ $first == 1 ]; then
echo " preserving the first file: $foundfile"
first=0
else
echo " deleting the redundant file: $foundfile"
#rm $foundfile
fi
done
if [ $ask == 1 ]; then
read -p "Delete all the rest of redundant hardlinks without asking? y/N "
if [ a${REPLY,,} == "ay" ]; then ask=0; fi
fi
# read -p "pause for sure"
echo
done
echo "All redundant hardlins are removed."
echo
वास्तव में rmकाम नहीं करता है:
[user@localhost Products]$ rm AZP/
rm: cannot remove `AZP/': Is a directory
[user@localhost Products]$ rm -r AZP/
rm: cannot remove `AZP': Not a directory
क्या काम करता है unlink AZP।
AZP/एक निर्देशिका की तरह लग रहा है, आरएम पुनरावर्ती ध्वज के बिना निर्देशिकाओं पर काम नहीं करता है। कोर्यूटिल्स डॉक्स के अनुसार भी। >>> अधिकांश सिस्टम एक निर्देशिका के लिए एक कड़ी बनाने पर रोक लगाते हैं; उन पर जहां इसकी अनुमति है, केवल सुपर-उपयोगकर्ता ही ऐसा कर सकते हैं (और सावधानी के साथ, क्योंकि एक चक्र बनाने से कई अन्य उपयोगिताओं के लिए समस्या पैदा होगी)।
AZPएक निर्देशिका (या कुछ और) के लिए एक प्रतीकात्मक लिंक rm AZP/काम नहीं करेगा क्योंकि rmइसकी निर्देशिका ( /अंत के कारण) सोचती है । हालांकि rm AZPठीक काम करेगा। -1
यदि आप केवल लिंक को हटाना चाहते हैं और इस प्रकार मूल फ़ाइल रखते हैं, तो आपको अनलिंक का उपयोग करना होगा।
unlink(1)करता है? यह unlink(2)सिस्टम कॉल के आसपास एक उथला आवरण है , वही सिस्टम कॉल जो rm(1)उन सभी फ़ाइलों के लिए उपयोग करता है जो निर्देशिका नहीं हैं।
unlinkयह नाम के बावजूद, दो अलग-अलग फ़ाइलों में एक हार्डलिंक को अलग नहीं करेगा, लेकिन "अनलिंक" निर्देशिका प्रविष्टि को हटा दें (लेकिन फ़ाइल / सामग्री / इनोड नहीं, जब तक कि लिंक गिनती> 1 है)।
ln -n /path/to/fileएक फ़ाइलfileबनाई गई है और इसके लिए शॉर्टहैंड हैln --no-dereference /path/to/file। इसका मतलब यह है कि यदि/path/to/fileएक प्रतीकात्मक लिंक है, तो नया बनाया गया हार्डलिंक, सिमिलिंक के लक्ष्य के बजाय उस सिम्लिंक को इंगित करेगा।