Saya memiliki symlink ke direktori penting. Saya ingin menyingkirkan symlink itu, sambil menjaga direktori di belakangnya.
Saya mencoba rm
dan kembali rm: cannot remove 'foo'
.
Saya mencoba rmdir
dan kembali rmdir: failed to remove 'foo': Directory not empty
saya kemudian berkembang rm -f
, rm -rf
dansudo rm -rf
Kemudian saya pergi mencari back-up saya.
Apakah ada cara untuk menghilangkan symlink dengan membuang bayi dengan air mandi?
rm -r link/
menghapus konten pada targetThen I went to find my back-ups
- Itu membuatku tertawa.Jawaban:
Pada dasarnya, Anda perlu mengatakannya untuk menghapus file , bukan menghapus direktori . Saya percaya perbedaan antara
rm
danrmdir
ada karena perbedaan dalam cara perpustakaan C memperlakukan masing-masing.Bagaimanapun, yang pertama harus bekerja, sedangkan yang kedua harus mengeluh tentang foo menjadi direktori.
Jika tidak berfungsi seperti di atas, maka periksa izin Anda. Anda perlu izin tertulis ke direktori yang berisi untuk menghapus file.
sumber
rm -rf folderName
(tanpa trailing /) untuk menghapus symlink. Amazon Linux berlaku seperti ini dalam keadaan tertentu, misalnya.-r
dengan symlink kecuali Anda ingin kehilangan semua yang ada di dalamnya.-f
juga tidak diperlukan, kecuali mungkin untuk mengganti izin file.unlink
tidak ada hubungannya denganln
operasi 'tautan' AKA. Nama iniunlink
mengacu pada proses pembatalan tautan / penghapusan file dari tabel file sistem file sehingga konten menjadi terlepas dari referensi apa pun kepada mereka - mereka tidak terhubung. Itu nama yang membingungkan yang benar-benar menyesatkan ketika diterapkan pada tautan dan symlink pada khususnya.unlink
akan bekerja dengan symlink karena berfungsi dengan file apa pun apa pun jenisnya.alias rm="rm -i"
telah menyelamatkan lebih banyak kulit daripada hal lain di luar sana yang saya pikir.gunakan perintah "unlink" dan pastikan untuk tidak memiliki / pada akhirnya
Saya pikir ini mungkin bermasalah jika saya membacanya dengan benar.
https://linux.die.net/man/2/unlink
sumber
~/c/a/file
,/c/b/
, denganln -s ~/c/a ~/c/b/
. Dalam~/c/b/
,rm a/
tidak berfungsi,rm -rf a/
hanya mengosongkan aslinyaa
.unlink a
bekerja dengan sempurna, danunlink a/
tidak melakukan apa pun.unlink
hanyalah sebuah alias untukrm
. Pergi untuk menunjukkan bahwarm
disiplin yang tepat harus digunakan ketika berurusan dengan bagian mana pun dari struktur direktori Anda.rm -f
akan diam-diam menghapus tautan apakah itu ada atau tidak, sedangkanunlink
akan mengeluh jika tautan itu tidak ada. Tidak ada opsi `-f 'yang setara untuk memutuskan tautan, membuat skrip menjadi lebih kompleks.unlink
dapat menghapus file biasa. itu kurang fitur daripadarm
dan tidak khusus untuk symlink.rm
juga tidak menghapus direktori tanpa-r
bendera. Jadi saya sarankan lebih suka rm, ia memiliki flag untuk verbose dan interaktif; serta pesan peringatan dan kesalahan yang bermakna.rm harus menghapus tautan simbolik.
sumber
Gunakan
rm symlinkname
tetapi tidak termasuk garis miring di akhir (jangan gunakanrm symlinkname/
:). Anda kemudian akan ditanya apakah Anda ingin menghapus symlink,y
untuk menjawab ya.sumber
Dengan asumsi itu sebenarnya adalah symlink,
Seharusnya mengetahuinya, tetapi karena kita tidak dapat mengaktifkan kode laten yang dimaksudkan untuk kasus lain yang tidak lagi ada tetapi terjadi untuk melakukan hal yang benar di sini.
sumber
Jika rm tidak dapat menghapus symlink, mungkin Anda perlu melihat izin pada direktori yang berisi symlink. Untuk menghapus entri direktori, Anda harus menulis izin pada direktori yang berisi.
sumber
Dengan asumsi pengaturan Anda adalah sesuatu seperti:,
ln -s /mnt/bar ~/foo
maka Anda harus dapat melakukanrm foo
tanpa masalah. Jika Anda tidak bisa, pastikan Anda adalah pemilikfoo
dan memiliki izin untuk menulis / mengeksekusi file. Menghapusfoo
tidak akan menyentuhbar
, kecuali jika Anda melakukannya secara rekursif.sumber
Di CentOS, jalankan saja
rm linkname
dan itu akan meminta untuk "menghapus tautan simbolik?". Ketik Ydan Enter, tautannya akan hilang dan direktori aman.sumber
Saya punya masalah dengan MinGW (sebenarnya Git Bash) yang berjalan di Windows Server. Tidak ada saran di atas yang berhasil. Pada akhirnya salinan direktori dibuat dalam kasus kemudian menghapus tautan lunak di Windows Explorer kemudian menghapus item di Recycle Bin. Itu membuat suara seperti menghapus file tetapi tidak. Namun, lakukan backup!
sumber