Jawaban:
Anda dapat menghapusnya dengan rm
seperti biasa: rm NameOfFile
. Perhatikan bahwa dengan tautan keras tidak ada perbedaan antara "file asli" dan "tautan ke file": Anda hanya memiliki dua nama untuk file yang sama, dan menghapus hanya satu nama tidak akan menghapus yang lain.
sudo
), jika Anda membuatnya dengan perintah yang Anda berikan (sebagai super-user).
Saya memiliki skrip ini untuk menghapus tautan keras yang berlebihan. Tapi hati-hati - ini cukup berbahaya.
#!/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
Sebenarnya rm
tidak berfungsi:
[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
Apa yang berhasil unlink AZP
.
AZP/
terlihat seperti direktori, rm tidak beroperasi pada direktori tanpa tanda rekursif. Juga menurut dokumentasi coreutills. >>> Sebagian besar sistem melarang membuat tautan keras ke direktori; pada yang diizinkan, hanya pengguna super yang dapat melakukannya (dan dengan hati-hati, karena membuat siklus akan menyebabkan masalah bagi banyak utilitas lain).
AZP
tautan simbolis ke direktori (atau apa pun) rm AZP/
tidak akan berfungsi karena rm
menganggap itu direktori (karena /
pada akhirnya). Namun rm AZP
akan bekerja dengan baik. -1
Jika Anda hanya ingin menghapus tautan dan menyimpan file aslinya, Anda harus menggunakan pembatalan tautan.
unlink(1)
? Ini adalah pembungkus dangkal di sekitar unlink(2)
panggilan sistem, panggilan sistem yang sama yang rm(1)
digunakan untuk semua file yang bukan direktori.
unlink
, terlepas dari namanya, tidak akan memisahkan hardlink menjadi dua file terpisah, tetapi menghapus entri direktori "tidak terhubung" (tetapi bukan file / konten / inode, selama jumlah tautannya> 1).
ln -n /path/to/file
membuat file bernamafile
di direktori saat ini dan singkatan untukln --no-dereference /path/to/file
. Ini berarti bahwa jika/path/to/file
ini adalah tautan simbolik, hardlink yang baru dibuat akan menunjuk ke symlink itu dan bukan target symlink.