Линукс терминал дээрх файл, санг хэрхэн устгах вэ? RMDIR (RD) команд – Windows файлын системийн лавлахыг устгах Линукс дээрх хавтсыг консолоос устгана уу


rm болон rmdir командууд нь Linux, macOS болон бусад Unix-тэй төстэй үйлдлийн системүүд дээрх файлууд болон сангуудыг устгадаг. Эдгээр нь Windows болон DOS дээрх del болон deltree командуудтай төстэй. Эдгээр командууд нь маш хүчирхэг бөгөөд нэлээд олон сонголттой байдаг.

rm болон rmdir ашиглан устгасан файл, сангуудыг хогийн сав руу зөөхгүй гэдгийг анхаарах нь чухал. Тэдгээрийг таны компьютерээс шууд устгана. Хэрэв та эдгээр командыг ашиглан файлуудыг санамсаргүйгээр устгасан бол тэдгээрийг зөвхөн нөөцлөлтөөс сэргээх боломжтой.

Rm ашиглан файлуудыг хэрхэн устгах вэ

Хамгийн энгийн тохиолдол бол одоогийн директор доторх нэг файлыг устгах явдал юм. rm команд, хоосон зай, дараа нь устгахыг хүссэн файлынхаа нэрийг бичнэ үү.

Rm файл_1.txt

Хэрэв файл одоогийн ажиллаж байгаа лавлахад байхгүй бол файлын байршлын замыг зааж өгнө үү.

Rm ./path/to/the/file/file_1.txt

Та rm-д нэгээс олон файлын нэрийг дамжуулж болно. Энэ нь заасан бүх файлыг устгана.

Rm file_2.txt file_3.txt

Устгагдах файлуудын бүлгийг сонгохдоо орлуулагдах тэмдэгтүүдийг ашиглаж болно. Гарын үсэг зурах * олон тэмдэгт болон тэмдэгтийг төлөөлдөг ? нэг дүрийг төлөөлдөг. Энэ команд нь одоогийн ажиллаж байгаа лавлах дотор байгаа бүх png зургийн файлуудыг устгах болно.

Rm * .png

Энэ тушаал нь ижил тэмдэгтийн өргөтгөлтэй бүх файлыг устгах болно. Жишээлбэл, энэ нь File.1 болон File.2-г устгах боловч File.12-г устгахгүй.

Rm *.?

Хэрэв файл бичихээс хамгаалагдсан бол файлыг устгахыг танаас хүсэх болно. -ээр хариулах ёстой yэсвэл nболон "Enter" товчийг дарна уу.

Оролцогч тэмдэгттэй rm ашиглах эрсдэлийг бууруулахын тулд сонголтыг ашиглана уу (интерактив). Үүнийг хийхийн тулд та файл бүрийг устгахыг баталгаажуулах ёстой.

Rm -i * .dat

Сонголт -f(хүч) нь интерактивийн эсрэг юм. Энэ нь файлууд бичихээс хамгаалагдсан байсан ч баталгаажуулахыг шаарддаггүй.

Rm -f файлын нэр

Rm ашиглан сангуудыг хэрхэн устгах вэ

Хоосон санг устгахын тулд сонголтыг ашиглана уу (лавлах). Та лавлах нэрэнд орлуулагч тэмдэгтүүдийг (* ба ?) файлын нэрэнд ашигладаг шиг ашиглаж болно.

Rm -d лавлах

Нэгээс олон лавлах нэр өгөх нь заасан бүх хоосон сангуудыг устгана.

Rm -d лавлах1 лавлах2 /зам/хүртэл/санал3

Хоосон бус сангуудыг устгахын тулд сонголтыг ашиглана уу (рекурсив). Тодорхой болгохын тулд энэ нь сангууд болон тэдгээрт агуулагдах бүх файлууд болон дэд сангуудыг устгадаг.

Rm -r лавлах1 лавлах2 лавлах3

Хэрэв лавлах эсвэл файл бичихээс хамгаалагдсан бол устгахыг баталгаажуулахыг танаас хүсэх болно. Хоосон бус сангуудыг устгаж, эдгээр сануулгыг дарахын тулд сонголтуудыг хамтад нь ашиглаарай (рекурсив) ба -f(албадан).

Rm -rf лавлах

Энд болгоомжтой байх шаардлагатай. Тушаалын алдаа rm -rfөгөгдлийн алдагдал эсвэл системийн доголдолд хүргэж болзошгүй. Энэ бол аюултай бөгөөд болгоомжтой байх нь хамгийн зөв бодлого юм. rm -rf-ээр устгагдах сангийн бүтэц, файлуудын талаар ойлголттой болохын тулд модны командыг ашиглана уу.

Хэрэв та Ubuntu эсвэл өөр Debian-д суурилсан түгээлт ашиглаж байгаа бол энэ багцыг систем дээрээ суулгахын тулд apt-get ашиглана уу. Бусад Линуксийн түгээлтүүд дээр өөрийн Линукс түгээлтийн багц удирдлагын хэрэгслийг ашиглана уу.

Sudo apt-get суулгах мод

Модны командыг ажиллуулснаар лавлахын бүтэц, түүнийг ажиллуулж байгаа директорийн доорх файлуудын ойлгоход хялбар диаграммыг гаргадаг.

Та мөн мод команд руу очих замыг зааж өгч болно, ингэснээр модыг файлын системийн өөр директороос ажиллуулна.

Модны зам/түүн/ лавлах

rm команд нь бас --one-file-system , --no-preserve-root , --preserve-root сонголтуудтай боловч эдгээрийг зөвхөн ахисан түвшний хэрэглэгчид ашиглахыг зөвлөдөг. Хэрэв та ямар нэг буруу зүйл хийвэл системийн бүх файлаа санамсаргүйгээр устгаж болно.

Rmdir ашиглан сангуудыг хэрхэн устгах вэ

Сануудыг устгахад ашиглаж болох rmdir гэсэн өөр тушаал байдаг. rm болон rmdir хоёрын ялгаа нь rmdir нь зөвхөн хоосон санг устгах боломжтой юм. Энэ нь файлуудыг хэзээ ч устгахгүй.

Хамгийн энгийн тохиолдол бол нэг хоосон санг устгах явдал юм. rm-ийн нэгэн адил та олон лавлах нэрийг rmdir эсвэл rmdir лавлах зам руу дамжуулж болно.

Одоогийн директор доторх нэг лавлахын нэрийг rmdir руу шилжүүлж устгана уу:

Rmdir лавлах

rmdir руу нэрсийн жагсаалтыг дамжуулж олон санг устгана уу:

Rmdir лавлах1 лавлах2 лавлах3

Одоогийн лавлахад байхгүй лавлахыг устгаж, уг лавлах руу очих бүрэн замыг зааж өгнө үү:

Rmdir /зам/түүн/ лавлах

Хэрэв та хоосон биш хавтас устгахыг оролдвол rmdir танд алдааны мэдэгдэл өгөх болно. Дараах жишээнд rmdir нь үйлчлүүлэгчдийн лавлахыг амжилттай бөгөөд чимээгүйхэн устгадаг боловч файл агуулсан тул төслийн лавлахыг устгахаас татгалзаж байна. Төслийн лавлах нь өмнөх шигээ хэвээр байх бөгөөд доторх файлууд нь хөндөгдөөгүй.

Rmdir нь "Лавлах хоосон биш" гэсэн алдаа гаргахад тушаалын мөрөнд өөрт нь дамжуулагдсан лавлахуудыг боловсруулахаа зогсооно. Хэрэв та дөрвөн лавлах болон эхнийх нь файлуудыг устгахыг хүсвэл rmdir танд алдааны мэдэгдэл өгөх бөгөөд өөр юу ч хийхгүй. Та бусад лавлахуудыг боловсруулахын тулд --ignore-fail-on-non-empty ашиглан эдгээр алдааг үл тоомсорлож болно.

Дараах жишээнд rmdir руу хоёр хавтас шилжүүлсэн бөгөөд эдгээр нь ажил/тайлан болон ажил/ ишлэл юм. --ignore-fail-on-empty сонголтыг командад оруулсан болно. Ажил/тайлангийн хавтсанд файлууд байгаа тул rmdir устгах боломжгүй. --ignore-fail-on-non-empty сонголт нь rmdir-г алдааг үл тоомсорлож, дараагийн боловсруулах хавтас руу шилжихэд хүргэдэг бөгөөд энэ нь ажил/хашилт юм. Энэ бол хоосон хавтас бөгөөд rmdir үүнийг устгадаг.

Энэ тушаалыг ашигласан.

Rmdir --хоосон бус ажил/тайлангууд /ажил/ ишлэлүүдийг үл тоомсорлох

Та сонголтыг ашиглаж болно (эцэг эх) нь лавлахыг устгахаас гадна түүний эх сангуудыг устгах боломжтой. rmdir нь зорилтот лавлахаас эхэлж, дараа нь эх рүү буцдаг тул энэ заль мэх ажилладаг. Энэ лавлах одоо хоосон байх ёстой бөгөөд ингэснээр rmdir-ээр устгагдах ба процесс нь rmdir-ийн өгсөн замын дагуу буцах алхамыг давтана.

Дараах жишээн дээр rmdir руу дамжуулсан тушаал нь:

Rmdir -p ажил / нэхэмжлэх

Нэхэмжлэх болон ажлын лавлахыг хүсэлтийн дагуу устгана.

Та Bash эсвэл өөр бүрхүүл ашиглаж байна уу? Линукс нь терминалын командын мөрөөс лавлах болон файлуудыг устгах уян хатан, хүчирхэг командуудыг өгдөг. Зарим хүмүүс терминалыг тойрон эргэдэг ажлын урсгалтай байхыг илүүд үздэг. Бусад хүмүүст энэ асуудалд ямар ч сонголт байхгүй байж магадгүй юм. Тэд GUI суулгаагүй сервер дээр эсвэл Raspberry Pi гэх мэт бие даасан систем дээр алсаас ажиллах боломжтой. Эдгээр багууд нь энэ бүлгийн хүмүүст тохиромжтой.

Гэхдээ та ямар төрлийн ажлын урсгалыг илүүд үзэж байгаагаас үл хамааран эдгээр тушаалууд нь бүрхүүлийн скриптүүдэд багтах болно. Хэрэв скриптийг cron ажил ажиллуулдаг бол энэ нь шаардлагагүй бүртгэлийн файлуудыг цэвэрлэх гэх мэт ердийн гэрийн ажлыг автоматжуулахад тусална. Хэрэв та энэ хэрэглээний тохиолдлыг судалж байгаа бол эдгээр тушаалын хүчийг мэдэж, бүх зүйлийг сайтар шалгаж, үргэлж сүүлийн үеийн нөөцлөлтийг хадгалаарай.

Тушаалын мөр нь Windows үйлдлийн системтэй компьютерийг удирдахад гарч ирдэг олон ажлыг автоматжуулах, хялбаршуулах хүчирхэг хэрэгсэл юм. Энэ нийтлэлд бид DEL, ERASE, RD, RMDIR командуудыг авч үзэх болно. Тэдгээрийн тусламжтайгаар та файл, фолдерыг тушаалын мөрөөс шууд устгах боломжтой.

-ээр дамжуулан файл устгах шаардлагатай бол DEL эсвэл ERASE командыг ашиглах шаардлагатай. Эдгээр тушаалууд нь ижил утгатай бөгөөд адилхан ажилладаг. Хэрэв та эдгээр командуудыг "/? " Жишээлбэл, та "del/? " болон del командын талаархи бүх үндсэн мэдээллийг консол дээр харуулах болно.

DEL (эсвэл ERASE) команд нь нэг буюу хэд хэдэн файлыг устгахад зориулагдсан бөгөөд дараах параметрүүдийг хүлээн авах боломжтой.

  • /P – файл бүрийг баталгаажуулах хүсэлт бүхий устгах;
  • /F - "зөвхөн унших" шинж чанартай файлуудыг устгах;
  • /S - заасан файлыг бүх дэд хавтаснаас устгана;
  • /Q – баталгаажуулах хүсэлтгүйгээр устгах;
  • /A – файлуудыг шинж чанарын дагуу устгах;

    • S - Систем;
    • H - Нуугдсан;
    • R - Зөвхөн унших;
    • A - Архивлах зориулалттай
    • Та мөн "БИШ" гэсэн утгатай шинж чанаруудын өмнө "-" хасах тэмдгийг ашиглаж болно. Жишээлбэл, "-S" нь системийн бус файлыг хэлнэ.

Ерөнхийдөө DEL командыг ашиглахын тулд эхлээд устгах гэж буй файл байгаа хавтас руу орж, дараа нь тушаалыг ажиллуулах хэрэгтэй. Драйверыг өөрчлөхийн тулд та зөвхөн хөтчийн үсэг, хоёр цэгийг оруулах хэрэгтэй. Фолдеруудаар шилжихийн тулд та "CD" командыг ашиглах хэрэгтэй.

Хүссэн хавтсандаа орсны дараа та файлуудыг устгаж эхлэх боломжтой. Үүнийг хийхийн тулд DEL команд болон файлын нэрийг оруулахад л хангалттай.

Мөн шаардлагатай бол хавтас руу шилжихгүйгээр файлуудыг устгаж болно. Энэ тохиолдолд та баримт бичигт бүрэн замыг зааж өгөх хэрэгтэй.

Хэрэв файл тус бүрийг устгахыг баталгаажуулах хүсэлт гаргах шаардлагатай бол DEL командад "/ p" параметрийг нэмэх шаардлагатай. Энэ тохиолдолд тушаалын мөрөнд файлыг устгахыг хүсэх бөгөөд хэрэглэгч баталгаажуулахын тулд "Y" үсгийг оруулах шаардлагатай болно.

"/a" параметрийг ашиглахдаа шинж чанаруудыг хариуцах үсгүүдийг хоёр цэгээр тусгаарлан оруулах ёстой гэдгийг тэмдэглэх нь зүйтэй. Жишээлбэл, "зөвхөн унших" шинж чанартай, "txt" өргөтгөлтэй бүх файлыг устгахын тулд та "командыг оруулах хэрэгтэй. del /F /A:R *.txt ".

Үүнтэй ижил аргаар та бусад параметрүүдийг DEL команд руу нэмж болно. Тэдгээрийг нэгтгэснээр та Windows командын мөрөөр файлуудыг устгах маш хүчирхэг командуудыг үүсгэж болно. Доор бид хэд хэдэн жишээг үзүүлэв:

  • del D:\ - D дискний үндэс дэх бүх файлыг устгадаг;
  • del D:\*.txt – D дискний үндэс дэх txt өргөтгөлтэй бүх файлыг устгах;
  • del D:\doc – d:\doc хавтсанд байгаа бүх файлыг устгах (атрибуттай баримтуудыг алгасах болно);
  • del /A:r d:\doc\*.txt – d:\doc хавтсанд байгаа “зөвхөн унших” атрибут болон “txt” өргөтгөлтэй бүх файлыг устгах;

Командын мөрөөр хавтас устгах

Хэрэв та Windows командын мөрөөр хавтас устгах шаардлагатай бол дээрх тушаалууд танд тус болохгүй. Фолдеруудыг устгахын тулд тусдаа RD эсвэл RMDIR (Remove Directory гэсэн үгийн товчлол) тушаал байдаг.

RD болон RMDIR командууд нь ижил утгатай бөгөөд хавтас устгах зорилготой. Тэд дараах параметрүүдийг хүлээн зөвшөөрч болно.

  • /S - лавлах модыг бүхэлд нь устгадаг; энэ параметрийг ашиглах үед зөвхөн хавтас өөрөө төдийгүй түүний бүх агуулгыг устгах болно;
  • /Q – хавтасны модыг баталгаажуулах хүсэлтгүйгээр устгах;

Жишээлбэл, хавтас устгахын тулд RD команд болон хавтасны нэрийг оруулахад хангалттай.

Хэрэв хавтсанд дэд хавтас эсвэл файл байгаа бол устгах үед алдаа гарч ирнэ."

Энэ асуудлыг шийдэхийн тулд та RD командад "/s" параметрийг нэмэх хэрэгтэй. Энэ тохиолдолд устгалт асуудалгүй явагдах боловч устгалтыг баталгаажуулах хүсэлт гарч ирнэ.

Баталгаажуулах хүсэлт гарч ирэхгүйгээр хавтасны модыг устгахын тулд та тушаалд "/q" параметрийг нэмэх хэрэгтэй. Энэ тохиолдолд ямар ч асуулт асуухгүйгээр хавтас устгагдах болно.

Мөн RD тушаал нь хэд хэдэн фолдерыг нэг дор хүлээн авах боломжтой бөгөөд үүнийг хийхийн тулд та тэдгээрийг хоосон зайгаар тусгаарлахад л хангалттай. Жишээлбэл, хэрэв та "rd 111 222"-г ажиллуулбал "111" болон "222" нэртэй хавтаснуудыг нэг дор устгаж болно.

Хэрэв та өөрөө хоосон зай агуулсан хавтасыг тушаалын мөрөөр устгах шаардлагатай бол энэ тохиолдолд түүний нэрийг давхар хашилтанд оруулах ёстой.

DEL болон RD командуудыг нэгтгэснээр та Windows үйлдлийн систем дэх фолдеруудыг цэвэрлэх, устгах хүчирхэг скриптүүдийг үүсгэж болно.

Линукс цөмд суурилсан үйлдлийн системүүд ихэвчлэн олон тооны хоосон болон хоосон сангуудыг хадгалдаг. Тэдний зарим нь нэлээд их хэмжээний хадгалах зай эзэлдэг бөгөөд ихэвчлэн шаардлагагүй болдог. Энэ тохиолдолд зөв сонголт бол тэдгээрийг арилгах явдал юм. Цэвэрлэгээ хийх хэд хэдэн арга байдаг бөгөөд тэдгээр нь тус бүрийг тодорхой нөхцөлд ашиглах боломжтой байдаг. Боломжтой бүх аргуудыг илүү нарийвчлан авч үзье, та өөрийн хэрэгцээнд тулгуурлан хамгийн тохиромжтойг нь сонгох болно.

Энэ нийтлэлд бид команд оруулах замаар эхлүүлсэн консолын хэрэгслүүд болон нэмэлт хэрэгслүүдийн талаар ярих болно. Гэсэн хэдий ч график бүрхүүлүүд нь түгээлтэд ихэвчлэн хэрэгждэг гэдгийг мартаж болохгүй. Үүний дагуу лавлахыг устгахын тулд та зүгээр л файлын менежерээр дамжуулан түүн рүү очиж, дүрс дээр хулганы баруун товчийг дараад сонгох хэрэгтэй. "Устгах". Дараа нь хогоо хоослохоо бүү мартаарай. Гэхдээ энэ сонголт бүх хэрэглэгчдэд хамаарахгүй тул дараах гарын авлагыг уншихыг зөвлөж байна.

Аргуудыг харж эхлэхээсээ өмнө команд оруулахдаа ихэнхдээ устгахыг хүссэн хавтасныхаа нэрийг бие даан зааж өгдөг гэдгийг анхаарах нь чухал юм. Хэрэв та түүний байршилд байхгүй бол бүрэн замыг зааж өгөх ёстой. Боломжтой бол объектын эх лавлахыг олж, консолоор дамжуулан түүн рүү очихыг зөвлөж байна. Энэ үйлдэл хэдхэн минутын дотор дуусна:


Хэрэв та байршлыг тодорхойлох боломжгүй бол устгахдаа бүх замыг өөрөө оруулах шаардлагатай тул та үүнийг мэдэх хэрэгтэй.

Арга 1: Стандарт терминалын командууд

Аливаа Линукс түгээлтийн командын бүрхүүл нь системийн тохиргоо болон файлуудтай олон төрлийн үйлдлүүдийг гүйцэтгэх, тэр дундаа лавлах устгах зэрэг үндсэн хэрэгслүүд болон хэрэгслүүдийг агуулдаг. Ийм хэд хэдэн хэрэгсэл байдаг бөгөөд тус бүр нь тодорхой нөхцөлд хамгийн ашигтай байх болно.

rmdir тушаал

Юуны өмнө би rmdir-д хүрэхийг хүсч байна. Энэ нь системийг зөвхөн хоосон сангаас цэвэрлэх зорилготой юм. Тэдгээрийг бүрмөсөн арилгадаг бөгөөд энэ хэрэгслийн давуу тал нь синтаксийн энгийн байдал, ямар ч алдаа байхгүй явдал юм. Консол дээр rmdir хавтас, хаана гэж бичнэ үү хавтас— одоогийн байршил дахь хавтасны нэр. Хэрэгсэл нь товчлуур дарснаар идэвхждэг Оруулна уу.

Хэрэв та хүссэн байршил руугаа очиж чадахгүй эсвэл шаардлагагүй бол лавлах замыг бүрэн зааж өгөхөд юу ч саад болохгүй. Дараа нь мөр нь жишээлбэл дараах хэлбэрийг авна: rmdir /home/user/folder/folder1 , энд хэрэглэгч- Хэрэглэгчийн нэр, хавтаснь эх лавлах бөгөөд хавтас1— устгах хавтас. Гэрийн өмнө ташуу зураас байх ёстой, гэхдээ замын төгсгөлд ташуу зураас байх ёсгүй гэдгийг анхаарна уу.

rm тушаал

Өмнөх хэрэгсэл нь rm хэрэгслийн бүрэлдэхүүн хэсгүүдийн нэг юм. Эхлээд энэ нь файлуудыг устгах зорилготой боловч хэрэв та түүнд тохирох аргументыг өгвөл энэ нь мөн хавтсыг устгах болно. Энэ сонголт нь хоосон бус сангуудад аль хэдийн тохиромжтой бөгөөд энэ тохиолдолд та консол руу rm -R хавтас (эсвэл лавлах руу очих бүрэн замыг) оруулах хэрэгтэй. Аргументыг анхаарч үзээрэй - энэ нь рекурсив устгалтыг эхлүүлдэг, өөрөөр хэлбэл энэ нь хавтасны бүх агуулга болон өөрөө нөлөөлдөг. Учир нь орохдоо том жижиг үсгийн мэдрэмжтэй байх шаардлагатай - энэ бол огт өөр сонголт юм.

Хэрэв та rm ашиглахдаа устгасан бүх файл, хавтасны жагсаалтыг харуулахыг хүсвэл мөрийг бага зэрэг өөрчлөх шаардлагатай болно. Оруулна уу "Терминал" rm -Rfv хавтас руу ороод командыг идэвхжүүлнэ.

Устгаж дууссаны дараа өмнө нь заасан байршилд байсан бүх лавлах болон бие даасан объектуудын тухай мэдээлэл гарч ирнэ.

командыг олох

Манай вэб сайтад Linux цөм дээр бүтээгдсэн үйлдлийн системд хайлтыг ашиглах жишээ бүхий материалууд байгаа. Мэдээжийн хэрэг, зөвхөн үндсэн бөгөөд хамгийн хэрэгтэй мэдээллийг тэнд толилуулж байна. Та дараах холбоос дээр дарж үүнтэй танилцах боломжтой бөгөөд одоо бид лавлахуудыг устгах шаардлагатай үед энэ хэрэгсэл хэрхэн ажилладагийг олж мэдэхийг санал болгож байна.

  1. Мэдэгдэж байгаагаар, олохсистем доторх объектуудыг хайхад үйлчилдэг. Нэмэлт сонголтуудыг ашигласны ачаар та тодорхой нэртэй лавлахуудыг олж, нэн даруй устгах боломжтой. Үүнийг хийхийн тулд консол дээр find гэж оруулна уу. -type d - "хавтас" нэр -exec rm -rf () \;, энд хавтас нь лавлахын нэр юм. Үүнийг хийхдээ давхар хашилт бичихээ мартуузай.
  2. Тусдаа мөрөнд заримдаа ийм файл эсвэл лавлах байхгүй гэсэн мэдээллийг харуулдаг боловч энэ нь олдсонгүй гэсэн үг биш юм. Зүгээр л олохлавлахыг системээс устгасны дараа дахин ажилласан.
  3. find ~/ -empty -type d -delete нь систем дээрх бүх хоосон фолдеруудыг устгах боломжийг олгоно. Тэдгээрийн зарим нь зөвхөн супер хэрэглэгчдэд хүртээмжтэй байдаг тул өмнө нь олох sudo нэмэх хэрэгтэй.
  4. Дэлгэц дээр олдсон бүх объектын тухай мэдээлэл, үйл ажиллагааны амжилт гарч ирнэ.
  5. Та мөн тухайн хэрэгслийг хайж, цэвэрлэхийн тулд зөвхөн тодорхой лавлахыг зааж өгч болно. Дараа нь мөр нь жишээлбэл, иймэрхүү харагдах болно: олох /home/user/Folder/ -хоосон -төрөл d -устгах .

Энэ нь Линукс дээрх стандарт консол хэрэгслүүдтэй харилцах харилцааг дуусгана. Таны харж байгаагаар тэдгээрийн олон тоо байдаг бөгөөд тус бүр нь тодорхой нөхцөл байдалд хамааралтай байдаг. Хэрэв та бусад алдартай багуудтай танилцахыг хүсвэл доорх линкээс манай тусдаа материалыг уншина уу.

Өдрийн мэнд, эрхэм уншигчид. Өнөөдөр би PHP дахь лавлахыг устгах талаар ярихыг хүсч байна. Үйл ажиллагаа нь төвөгтэй биш юм шиг санагдаж байгаа ч зарим нэг нюансууд байдаг. Үүнийг хийх арга замуудыг авч үзье.

PHP нь үүнд зориулагдсан функцтэй rmdir(). Энэ нь аргумент болгон таны устгахыг хүссэн лавлах руу очих замыг авна. Гэсэн хэдий ч, лавлах хоосон байх ёстой- энэ бол үндсэн нөхцөл (вэб сервер ажиллаж байгаа хэрэглэгч лавлахад бичих эрхтэй байх ёстойг эс тооцвол). Хэрэв файлуудыг директорт байрлуулсан бол функцийг дуудах үед бид алдаа хүлээн авах болно. Үүний дагуу бид функцийг ашиглахаасаа өмнө лавлах гэсэн дүгнэлтэд хүрч байна rmdir()эхлээд цэвэрлэх ёстой.

Онлайнаар тэд аргумент болгон дамжуулах функцийг бичихийг зөвлөж байна, энэ нь бидний устгах шаардлагатай лавлах руу очих зам юм. Функцийн хэсэгт лавлах агуулгын жагсаалтыг зохион байгуулах шаардлагатай бөгөөд үүний хүрээнд уг файл нь лавлах эсэхийг шалгах шалгалтыг хийдэг. Хэрэв файл нь лавлах бол функц нь энэ нөхцөл дээр үндэслэн өөрийгөө дууддаг. Энэ нь үүрлэсэн лавлахуудыг цэвэрлэхэд шаардлагатай бөгөөд энэ нь үүрлэх бүх түвшинд ажиллах болно. Үгүй бол функцийг файлд хэрэглэнэ салгах()- энэ нь файлыг устгах зориулалттай. Энэ шалгалтаас гадна сүүлчийн алхамд бид лавлахыг устгадаг.

Хэрэгжүүлэх жишээ:

Функц recursiveRemoveDir($dir) ( $includes = glob($dir."/*"); foreach ($include хэлбэрээр орно) (if(is_dir($include)) (recursiveRemoveDir($include); ) else ( unlink( $include); ) ) rmdir($dir); ) //Одоо байгаа лавлахаас tmp санг устгах recursiveRemoveDir("tmp");
Энэ код ямар асуудалтай байна вэ?

Энгийн тохиолдолд бүх хавсралт бүхий лавлах устгагдах болно. Гэхдээ манай лавлахад цэгээр эхэлсэн далд файл байна гэж бодъё, жишээ нь: .htaccess. Чиг үүрэг glob()нь анхдагчаар далд файлуудыг (DOTFILES) агуулаагүй UNIX glob орлуулалт юм. Жишээлбэл, хэрэв бид nix терминал руу очоод bash ашиглавал ижил асуудал тулгарах болно (бид globs доторх далд файлуудын тухай ярьж байна). Энэ асуудлыг шийдэхийн тулд bash дээр тушаал байна: shopt -s dotglob- энэ нь далд файлуудыг орлуулах боломжийг олгодог. PHP дээр үүнийг нэмэлт параметр нэмэх замаар шийдэж болно GLOB_BRACEУчир нь glob()функцын эхний параметрээс хэв маягийг өргөжүүлэх.

$ орно = glob("tmp/(,.)*", GLOB_BRACE);
Энд бас нэг асуудал байна - массив нь утгуудыг агуулж байгаа тул бид хязгааргүй давталттай тулгарах болно. ба .. - энэ нь системийн түвшний одоогийн болон үндсэн лавлах юм. Бид эцэс төгсгөлгүй давталттай байх болно (мөн бүх эх лавлахыг устгахгүй), учир нь. өгөгдмөл эрэмбэлэхийн нэг хэсэг болгон үүсгэсэн массив хамгийн түрүүнд ирнэ.. - өөрөөр хэлбэл бид нэг лавлах руу хандах бүртээ. Асуудлыг шийдэхийн тулд бид эдгээр системийн сангуудаас массив үүсгэж, тэдгээрийн индексийг үндсэн массиваас хасах болно. Мөн бэлгэдлийн холбоосын асуудал бий. Устгагдаж буй лавлах нь өөр лавлах холбоосыг агуулж байгаа бөгөөд агуулгыг нь бид устгахыг огтхон ч хүсэхгүй байна гэж бодъё. Асуудлыг шийдэхийн тулд рекурс үүсгэхээсээ өмнө тухайн байгууллага нь лавлагаа биш эсэхийг шалгах шаардлагатай.

Үүний үр дүнд функц дараах хэлбэрийг авна.

Функц recursiveRemoveDir($dir) ( $includes = glob($dir."/(,.)*", GLOB_BRACE); $systemDots = preg_grep("/\.+$/", $includes); foreach ($systemDots зэрэг) $index => $dot) ( unset($includes[$index]); ) foreach ($include гэж $include) ( if(is_dir($include) && !is_link($include)) ( recursiveRemoveDir($include); ) else ( unlink($include); ) ) rmdir($dir); ) //Одоо байгаа лавлахаас tmp санг устгах recursiveRemoveDir("tmp");
Код ажиллаж байгаа ч үнэндээ үүнийг илүү хялбар болгож болох байсан. PHP-д FilesystemIterator анги байдаг бөгөөд анхдагчаар бидэнд хэрэгтэй тохиргоог аль хэдийн суулгасан байдаг. Жагсаалт нь бидэнд хэрэгтэй байгаа лавлах замыг бүтээгч рүү дамжуулдаг. Бид зүгээр л объект үүсгэх хэрэгтэй.

Функц recursiveRemoveDir($dir) ( $includes = new FilesystemIterator($dir); foreach ($include хэлбэрээр орно) ( if(is_dir($include) && !is_link($include)) ( recursiveRemoveDir($include); ) өөр ( unlink($include); ) ) rmdir($dir); ) //Одоо байгаа лавлахаас tmp санг устгах recursiveRemoveDir("tmp");
Эцэст нь хэлэхэд би өөр нэг хурдан арга замыг тэмдэглэхийг хүсч байна. Үүнийг ашиглах зөв эсэх нь маш эргэлзээтэй байна - SHELL-д гүйцэтгэх тушаалыг илгээнэ үү.

Систем("rm -rf tmp");
Санах ойн хэрэглээ өндөр, администраторууд аюулгүй байдлын үүднээс сервер дээр ийм функцийг ашиглахыг хориглодог болохыг би та бүхний анхаарлыг татахыг хүсч байна.

Шошго: php, rmdir, glob, recursion

Баг rmdirхоосон лавлах, өөрөөр хэлбэл файл, хавтасгүй лавлахыг устгахад бидэнд туслах болно. Командын синтакс нь маш энгийн:

Rmdir DIRNAME

Хэрэв лавлах хоосон биш бол та дараах алдааны мессежийг харах болно.

$ rmdir test rmdir: `test"-ыг устгаж чадсангүй: Лавлах хоосон биш

2. Линукс дээр үүрлэсэн лавлахуудыг хэрхэн устгах вэ?

Сонголтыг ашиглах та дотор нь оруулсан дэд директортой санг устгаж болно.

$ rmdir -p dir1/dir2/dir3

Баг rmdir -p dir1/dir2/dir3энэ нь тушаалтай дүйцэхүйц юм

$ rmdir dir1/dir2/dir3 dir1/dir2 dir1

3. Агуулгын лавлахыг устгаж байна

Хэрэв та контент бүхий лавлахыг устгах шаардлагатай бол тушаалыг ашиглаж болно rm:

$ rm -rf DIRNAME

Энэ тушаал нь бүх файлууд болон дэд сангуудыг багтаасан санг устгах болно. Устгасан файлуудыг сэргээх нь тийм ч амар ажил биш тул энэ тушаалыг болгоомжтой хэрэглээрэй.

4. Интерактив устгах

Шаардлагатай файлуудыг санамсаргүйгээр устгахаас зайлсхийхийн тулд би файл, хавтсыг (ялангуяа үндсэн эрхтэй) интерактив байдлаар устгахын тулд -i сонголтыг ашиглахыг зөвлөж байна.

Рекурсив болон интерактив лавлах устгах.

# rm -ir DIRNAME

Интерактив файл устгах.

# rm -i FILENAME

5. rm болон rmdir командын ашигтай нэрс

Та интерактив устгахыг rm командын үндсэн үйлдэл болгон ашиглаж болно.

rm-ийг интерактив байдлаар байнга ажиллуулдаг нэр

# alias rm="rm -i"

Командыг ашиглах үед rmтушаал үнэхээр биелэгдэх болно rm -i. Гэхдээ та нэг нюансыг анхаарч үзэх хэрэгтэй. Хүссэн үр дүнд хүрэхгүй тул ирээдүйд -i сонголтыг бүү ашигла. Нэг жишээг харцгаая:

Дараах тушаалд -i-г ашиглах нь хүлээгдэж буй үр нөлөөг өгөхгүй.

$ rm -irf DIRNAME

Энэ тохиолдолд нэр ашиглах үед дээрх тушаалыг дараах байдлаар ажиллуулах ёстой.

$ rm -rf DIRNAME

Доорх бүх тушаалууд ижил төстэй бөгөөд ижил функцийг гүйцэтгэдэг.

  • rm-fr
  • rm -rf
  • rm -r -f
  • rm -f -r

Хэрэв танд барилгын шинжээчийн үнэлгээ шаардлагатай бол би Технопласт судалгаа, үйлдвэрлэлийн төвийн мэргэжилтнүүдээр дууссан барилгуудыг шалгахыг зөвлөж байна.