GNU/Linux >> Belajar Linux >  >> Linux

Apa alasan rmdir(1) dan rm(1) hidup berdampingan?

Alasan utamanya mungkin karena sejarah. Dulu, dulu, tidak ada rmdir(2) dan mkdir(2) panggilan sistem (kami membahas UNIX™ Edisi ke-7 di sini), dan rmdir(1) adalah (perlu) program root SUID yang menggunakan unlink(2) panggilan sistem untuk menghapus direktori.

Manual UNIX Edisi ke-7 tersedia online di http://cm.bell-labs.com/7thEdMan (terakhir diperiksa 23-04-2017); Mereka juga tersedia di http://plan9.bell-labs.com/7thEdMan (terakhir diperiksa 23-04-2017). Tampaknya juga ada setidaknya satu sumber alternatif online — http://wolfram.schneider.org/bsd/7thEdManVol2/ — untuk artikel di Volume 2, dengan tautan ke situs FreeBSD untuk perintah dan panggilan sistem di Volume 1 .

rm perintah (program non-SUID biasa) menjalankan rmdir(1) perintah untuk menghapus direktori kosong. Ia tidak dapat melakukannya sendiri; yang membutuhkan hak akses root. Jadi, rmdir(1) perintah (lihat di sini untuk kode sumbernya di Unix V7) ada untuk menghapus direktori kosong, dan rm perintah tidak menghapus direktori kosong itu sendiri.

Untuk menggunakan rm untuk menghapus direktori, Anda harus memberikan -r opsi.

Ada juga argumen simetri. Anda membutuhkan perintah mkdir(1) untuk membuat direktori; tampaknya masuk akal untuk memiliki perintah rmdir(1) untuk membatalkan apa mkdir(1) telah melakukan. Plus mereka (hari ini) adalah pelaksana sederhana dari rmdir(2) dan mkdir(2) panggilan sistem — ya, kembali ke UNIX Edisi ke-7, mkdir(1) juga merupakan program root SUID, menggunakan mknod(2) panggilan untuk membuat node direktori dan link(2) panggilan untuk membuat . dan .. entri dalam direktori.


"rm" tidak berfungsi pada direktori. Anda harus menggunakan rmdir atau menentukan -r sakelar untuk penghapusan rekursif. Alasannya historis:unlink dan rmdir adalah panggilan sistem yang terpisah dan telah ada sejak awal Unix.


Juga rmdir hanya menghapus kosong direktori. Jika Anda ingin memastikan bahwa Anda tidak menghapus file tambahan apa pun di direktori, rmdir lebih aman daripada rm -r (kecuali jika Anda membuat alias rm sehingga Anda selalu perlu mengonfirmasi apa yang Anda hapus, yaitu alias rm='rm -i' di ~/.bashrc atau apa pun yang Anda gunakan).


Linux
  1. Apa antarmuka untuk panggilan sistem ARM dan di mana itu didefinisikan dalam kernel Linux?

  2. Apa perbedaan antara adduser dan useradd?

  3. Apa id partisi / tipe sistem file untuk UDF?

  1. Apa perbedaan antara ls dan l?

  2. Apa perbedaan antara $(CC) dan $CC?

  3. Apa nama pengguna dan kata sandi default untuk Live CD Ubuntu?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Inti dari Uniq -u Dan Apa Fungsinya??

  3. Apa perbedaan antara rute dan rute ip?