Ինչպե՞ս ջնջել ֆայլերը և գրացուցակները Linux տերմինալում: RMDIR (RD) հրաման – ջնջել Windows ֆայլային համակարգի գրացուցակը Ջնջել Linux-ի թղթապանակը վահանակից
rm և rmdir հրամանները ջնջում են ֆայլերը և գրացուցակները Linux, macOS և Unix-ի նման այլ օպերացիոն համակարգերում: Դրանք նման են Windows-ի և DOS-ի del և deltree հրամաններին: Այս հրամանները շատ հզոր են և ունեն բավականին շատ տարբերակներ:
Կարևոր է նշել, որ rm-ի և rmdir-ի միջոցով ջնջված ֆայլերը և գրացուցակները չեն տեղափոխվում թափոնարկղ: Նրանք անմիջապես հեռացվում են ձեր համակարգչից: Եթե դուք պատահաբար ջնջել եք ֆայլերը՝ օգտագործելով այս հրամանները, դուք կկարողանաք վերականգնել դրանք միայն կրկնօրինակից:
Ինչպես ջնջել ֆայլերը՝ օգտագործելով rm
Ամենապարզ դեպքը ընթացիկ գրացուցակում մեկ ֆայլ ջնջելն է: Մուտքագրեք rm հրամանը, բացատ և այնուհետև այն ֆայլի անունը, որը ցանկանում եք ջնջել:
Rm file_1.txt
Եթե ֆայլը ընթացիկ աշխատանքային գրացուցակում չէ, տրամադրեք ֆայլի գտնվելու վայրի ուղին:
Rm ./path/to/the/file/file_1.txt
Դուք կարող եք մեկից ավելի ֆայլի անուն փոխանցել rm-ին: Սա ջնջում է բոլոր նշված ֆայլերը:
Rm file_2.txt file_3.txt
Wildcards-ը կարող է օգտագործվել ջնջվող ֆայլերի խմբեր ընտրելու համար: Նշան * ներկայացնում է մի քանի նիշ, և կերպարը ? ներկայացնում է մեկ կերպար. Այս հրամանը կջնջի բոլոր png պատկերային ֆայլերը ընթացիկ աշխատանքային գրացուցակում:
Rm * .png
Այս հրամանը կջնջի բոլոր ֆայլերը նույն նիշերի ընդլայնմամբ: Օրինակ, սա կջնջի File.1-ը և File.2-ը, բայց ոչ File.12-ը:
Rm *.?
Եթե ֆայլը պաշտպանված է գրելուց, ձեզ կառաջարկվի ջնջել ֆայլը: Դուք պետք է պատասխանեք yկամ nև սեղմեք «Enter»:
rm-ի նիշերով օգտագործելու ռիսկը նվազեցնելու համար օգտագործեք տարբերակը -ի(ինտերակտիվ): Դա անելու համար դուք պետք է հաստատեք յուրաքանչյուր ֆայլի ջնջումը:
Rm -i * .dat
Տարբերակ -զ(ուժը) ինտերակտիվին հակառակն է: Այն չի պահանջում հաստատում, նույնիսկ եթե ֆայլերը պաշտպանված են գրությունից:
Rm -f ֆայլի անունը
Ինչպես հեռացնել դիրեկտորիաները՝ օգտագործելով rm
Դատարկ գրացուցակը հեռացնելու համար օգտագործեք տարբերակը -դ(տեղեկատու): Գրացուցակների անուններում դուք կարող եք օգտագործել wildcards (* և ?) ճիշտ այնպես, ինչպես ֆայլերի անուններում:
Rm -d գրացուցակ
Մեկից ավելի գրացուցակի անուններ տրամադրելը կհեռացնի բոլոր նշված դատարկ գրացուցակները:
Rm -d տեղեկատու1 տեղեկատու2 /ուղի/դեպի/դիրեկտորիա3
Ոչ դատարկ գրացուցակները հեռացնելու համար օգտագործեք տարբերակը -ր(ռեկուրսիվ): Որպեսզի պարզ լինի, սա ջնջում է դիրեկտորիաները և դրանցում պարունակվող բոլոր ֆայլերն ու ենթագրքերները:
Rm -r տեղեկատու1 տեղեկատու2 տեղեկատու3
Եթե գրացուցակը կամ ֆայլը գրավոր պաշտպանված է, ձեզ կառաջարկվի հաստատել ջնջումը: Ոչ դատարկ գրացուցակները հեռացնելու և այս հաղորդագրությունները ճնշելու համար օգտագործեք ընտրանքները միասին -ր(ռեկուրսիվ) և -զ(ստիպված):
Rm -rf գրացուցակ
Այստեղ զգուշություն է պահանջվում։ Հրամանի սխալ rm -rfկարող է հանգեցնել տվյալների կորստի կամ համակարգի անսարքության: Սա վտանգավոր է, և զգուշությունը լավագույն քաղաքականությունն է։ Գրացուցակի կառուցվածքի և ֆայլերի մասին պատկերացում կազմելու համար, որոնք կջնջվեն rm-rf-ով, օգտագործեք ծառի հրամանը:
Օգտագործեք apt-get այս փաթեթը ձեր համակարգում տեղադրելու համար, եթե օգտագործում եք Ubuntu կամ այլ Debian-ի վրա հիմնված բաշխում: Linux-ի այլ բաշխումների դեպքում օգտագործեք ձեր Linux բաշխման փաթեթների կառավարման գործիքը:
Sudo apt-get install ծառ
Ծառի հրամանի գործարկումը ստեղծում է գրացուցակի կառուցվածքի և ֆայլերի հեշտ հասկանալի դիագրամ այն գրացուցակի տակ, որտեղից այն գործարկվում է:
Կարող եք նաև նշել ծառի հրամանի ուղին, որպեսզի այն գործարկի ծառը ֆայլային համակարգի մեկ այլ գրացուցակից:
Ծառի ուղի/դեպի/տեղեկատու
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-non-empty տարբերակը: Work/reports պանակը պարունակում է ֆայլեր, ուստի rmdir-ը չի կարող ջնջել այն: --ignore-fail-on-non-empty տարբերակը ստիպում է rmdir-ին անտեսել սխալը և անցնել հաջորդ թղթապանակին, որը պետք է մշակի, որը work/quotes է: Սա դատարկ թղթապանակ է, և rmdir-ը ջնջում է այն:
Օգտագործվել է այս հրամանը։
Rmdir - անտեսել-ձախողել-ոչ-դատարկ աշխատանք/զեկուցումներ/աշխատանք/մեջբերումներ
Դուք կարող եք օգտագործել տարբերակը -էջ(ծնող) գրացուցակը հեռացնելու և նաև դրա մայր գրացուցակները հեռացնելու համար: Այս հնարքն աշխատում է, քանի որ rmdir-ը սկսվում է թիրախային գրացուցակում և այնուհետև վերադառնում է ծնող: Այս գրացուցակը այժմ պետք է դատարկ լինի, որպեսզի այն հեռացվի rmdir-ի միջոցով, և գործընթացը կրկնում է հետ քայլը rmdir-ի տրամադրած ճանապարհով:
Հետևյալ օրինակում rmdir-ին փոխանցված հրամանը հետևյալն է.
Rmdir -p աշխատանք/հաշիվներ
Հաշիվ-ապրանքագրերը և աշխատանքային գրացուցակները ջնջվում են ըստ պահանջի:
Դուք օգտագործում եք Bash կամ որևէ այլ պատյան: Linux-ը տրամադրում է ճկուն և հզոր հրամաններ՝ դիրեկտորիաներն ու ֆայլերը անմիջապես տերմինալի հրամանի տողից ջնջելու համար: Որոշ մարդիկ նախընտրում են ունենալ աշխատանքային հոսք, որը պտտվում է տերմինալի շուրջ: Մյուսները կարող են այլընտրանք չունենալ այդ հարցում։ Նրանք կարող են աշխատել սերվերների վրա՝ առանց տեղադրված GUI-ի, կամ հեռավոր սեանսի ժամանակ առանձին համակարգում, ինչպիսին Raspberry Pi-ն է: Այս թիմերը կատարյալ են այս խմբի մարդկանց համար:
Բայց ինչ տեսակի աշխատանքային հոսք էլ որ նախընտրեք, այս հրամանները շատ լավ են ընդգրկվելու shell սկրիպտներում: Եթե սկրիպտը աշխատում է 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 drive-ի արմատում;
- del D:\*.txt – բոլոր ֆայլերի ոչնչացում txt ընդլայնմամբ D drive-ի արմատում;
- 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 օպերացիոն համակարգի թղթապանակները մաքրելու և ջնջելու համար:
Linux միջուկի վրա հիմնված օպերացիոն համակարգերը սովորաբար պահում են մեծ թվով դատարկ և ոչ դատարկ գրացուցակներ: Նրանցից ոմանք զբաղեցնում են բավականին մեծ քանակությամբ պահեստային տարածք և հաճախ դառնում են ավելորդ: Այս դեպքում ճիշտ տարբերակը կլինի դրանք հեռացնելը: Մաքրման մի քանի եղանակ կա, որոնցից յուրաքանչյուրը կիրառելի է կոնկրետ իրավիճակում: Եկեք ավելի մանրամասն նայենք առկա բոլոր մեթոդներին, և դուք կընտրեք ամենահարմարը՝ ելնելով ձեր կարիքներից:
Այս հոդվածում մենք կխոսենք վահանակի կոմունալ ծառայությունների և լրացուցիչ գործիքների մասին, որոնք գործարկվում են հրամաններ մուտքագրելով: Այնուամենայնիվ, մի մոռացեք, որ գրաֆիկական պատյանները հաճախ իրականացվում են բաշխումների մեջ: Համապատասխանաբար, գրացուցակը ջնջելու համար պարզապես անհրաժեշտ է գնալ այն ֆայլերի կառավարչի միջոցով, աջ սեղմել պատկերակի վրա և ընտրել «Ջնջել». Մի մոռացեք դատարկել ձեր աղբը դրանից հետո: Այնուամենայնիվ, այս տարբերակը կիրառելի չի լինի բոլոր օգտատերերի համար, ուստի խորհուրդ ենք տալիս կարդալ հետևյալ ուղեցույցները:
Նախքան մեթոդները դիտարկելը, կարևոր է նշել, որ հրաման մուտքագրելիս ամենից հաճախ դուք ինքնուրույն նշում եք այն թղթապանակի անունը, որը ցանկանում եք ջնջել: Երբ դուք դրա գտնվելու վայրում չեք, դուք պետք է ապահովեք ամբողջական ուղին: Հնարավորության դեպքում խորհուրդ ենք տալիս պարզել օբյեկտի մայր գրացուցակը և գնալ դեպի այն վահանակի միջոցով: Այս գործողությունն ավարտվում է ընդամենը մի քանի րոպեում.
Եթե դուք չեք կարողանում որոշել գտնվելու վայրը, ջնջելիս դուք պետք է ինքներդ մուտքագրեք ամբողջական ուղին, այնպես որ դուք պետք է իմանաք այն:
Մեթոդ 1. Ստանդարտ տերմինալի հրամաններ
Ցանկացած Linux բաշխման հրամանի վահանակը պարունակում է հիմնական կոմունալ և գործիքների մի շարք, որոնք թույլ են տալիս կատարել բազմաթիվ գործողություններ համակարգի կարգավորումների և ֆայլերի հետ, ներառյալ դիրեկտորիաների ջնջումը: Կան մի քանի նման կոմունալ ծառայություններ, և յուրաքանչյուրն առավել օգտակար կլինի որոշակի իրավիճակում:
rmdir հրաման
Նախ կուզենայի անդրադառնալ rmdir-ին։ Այն նախատեսված է համակարգը մաքրելու միայն դատարկ գրացուցակներից: Հեռացնում է դրանք ընդմիշտ, և այս գործիքի առավելությունը նրա շարահյուսության պարզությունն է և որևէ սխալի բացակայությունը: Վահանակում պարզապես գրեք rmdir folder , որտեղ թղթապանակ— թղթապանակի անունը ընթացիկ վայրում: Գործիքը ակտիվանում է ստեղնը սեղմելով Մուտքագրեք.
Ոչինչ ձեզ չի խանգարում նշելու ամբողջական գրացուցակի ուղին, եթե չկարողանաք նավարկել դեպի այն վայրը, որը ցանկանում եք կամ դրա կարիքը չունեք: Այնուհետև տողը վերցնում է, օրինակ, հետևյալ ձևը՝ rmdir /home/user/folder/folder1, որտեղ օգտագործող- Օգտագործողի անունը, թղթապանակմայր գրացուցակն է, և թղթապանակ 1— թղթապանակ ջնջելու համար: Խնդրում ենք նկատի ունենալ, որ նախքան տունը պետք է լինի շեղ, բայց ճանապարհի վերջում չպետք է լինի շեղ:
rm հրամանը
Նախորդ գործիքը rm utility-ի բաղադրիչներից մեկն է: Սկզբում այն նախատեսված է ֆայլերը ջնջելու համար, բայց եթե դրան համապատասխան արգումենտ տաս, այն նաև կջնջի թղթապանակը։ Այս տարբերակն արդեն հարմար է ոչ դատարկ դիրեկտորիաների համար, այս դեպքում դուք պետք է մուտքագրեք rm -R թղթապանակը (կամ դեպի գրացուցակի ամբողջական ուղին) վահանակ: Նշեք փաստարկը -Ռ- այն սկսում է ռեկուրսիվ ջնջում, այսինքն՝ ազդում է թղթապանակի ամբողջ բովանդակության և ինքն իր վրա։ Մուտք գործելու ժամանակ անհրաժեշտ է ուշադիր լինել, քանի որ -ր- Սա բոլորովին այլ տարբերակ է:
Եթե ցանկանում եք ցուցադրել բոլոր ջնջված ֆայլերի և թղթապանակների ցանկը rm-ն օգտագործելիս, ապա ձեզ հարկավոր է մի փոքր փոփոխել տողը: Մուտք գործեք «Տերմինալ» rm -Rfv թղթապանակը և այնուհետև ակտիվացրեք հրամանը:
Ջնջումն ավարտվելուց հետո կցուցադրվեն տեղեկությունները բոլոր դիրեկտորիաների և առանձին օբյեկտների մասին, որոնք նախկինում գտնվում էին նշված վայրում:
գտնել հրաման
Մեր կայքէջն արդեն ունի նյութեր՝ գտնելու օրինակներով օպերացիոն համակարգերում, որոնք մշակվել են Linux միջուկում: Իհարկե, այնտեղ ներկայացված է միայն հիմնական և ամենաօգտակար տեղեկատվությունը։ Դրան կարող եք ծանոթանալ՝ սեղմելով հետևյալ հղումը, իսկ այժմ առաջարկում ենք պարզել, թե ինչպես է աշխատում այս գործիքը, երբ անհրաժեշտ է ջնջել գրացուցակները։
- Ինչպես հայտնի է, գտնելծառայում է համակարգի ներսում օբյեկտների որոնմանը: Լրացուցիչ ընտրանքների օգտագործման շնորհիվ կարող եք գտնել կոնկրետ անունով դիրեկտորիաներ և անմիջապես ջնջել դրանք: Դա անելու համար մխիթարիչում մուտքագրեք Find: -type d -name "folder" -exec rm -rf () \;, որտեղ թղթապանակը գրացուցակի անունն է: Դա անելիս անպայման գրեք կրկնակի մեջբերումներ:
- Առանձին տող երբեմն ցուցադրում է տեղեկատվություն, որ նման ֆայլ կամ գրացուցակ գոյություն չունի, բայց դա չի նշանակում, որ այն չի գտնվել: Պարզապես գտնելնորից աշխատեց գրացուցակը համակարգից ջնջելուց հետո:
- find ~/ -empty -type d -delete-ը թույլ է տալիս ջնջել համակարգի բոլոր դատարկ թղթապանակները: Դրանցից ոմանք հասանելի են միայն գերօգտագործողի համար, ուստի նախկինում գտնել sudo պետք է ավելացնել.
- Բոլոր հայտնաբերված օբյեկտների և գործողության հաջողության մասին տվյալները կհայտնվեն էկրանին:
- Դուք կարող եք նաև նշել միայն հատուկ գրացուցակ գործիքի որոնման և մաքրման համար: Այնուհետև տողը կունենա, օրինակ, այսպիսի տեսք՝ գտնել /home/user/Folder/ -empty -type d -delete :
Սա ավարտում է փոխգործակցությունը Linux-ի ստանդարտ կոնսոլային կոմունալ ծառայությունների հետ: Ինչպես տեսնում եք, դրանք շատ են, և յուրաքանչյուրը կիրառելի է որոշակի իրավիճակներում: Եթե ցանկանում եք ծանոթանալ այլ հանրաճանաչ թիմերի հետ, կարդացեք մեր առանձին նյութը ստորև նշված հղումով։
Բարի օր, սիրելի ընթերցողներ։ Այսօր ես կցանկանայի խոսել PHP-ում գրացուցակը ջնջելու մասին: Թվում է, թե վիրահատությունը բարդ չէ, բայց կան որոշ նրբերանգներ: Դիտարկենք դա անելու ուղիները:
PHP-ն դրա համար ունի ֆունկցիա rmdir (). Որպես փաստարկ այն վերցնում է դեպի այն գրացուցակը, որը ցանկանում եք ջնջել: Այնուամենայնիվ, գրացուցակը պետք է դատարկ լինի- սա հիմնական պայմանն է (բացառությամբ այն բանի, որ օգտվողը, որից աշխատում է վեբ սերվերը, պետք է գրացուցակի համար գրելու իրավունքներ ունենա): Եթե ֆայլերը տեղադրվեն գրացուցակում, ֆունկցիան կանչելիս սխալ կստանանք: Ըստ այդմ, մենք գալիս ենք այն եզրակացության, որ գրացուցակը նախքան գործառույթն օգտագործելը rmdir ()նախ պետք է մաքրել.
Առցանց նրանք խորհուրդ են տալիս գրել մի ֆունկցիա, որը որպես փաստարկ կփոխանցի դեպի այն գրացուցակի ուղին, որը մենք պետք է ջնջենք: Ֆունկցիայի մարմնում անհրաժեշտ է կազմակերպել գրացուցակի բովանդակության ցուցակագրում, որի շրջանակներում ստուգում է կատարվում՝ պարզելու, թե արդյոք ֆայլը գրացուցակ է։ Եթե ֆայլը գրացուցակ է, ապա ֆունկցիան իրեն կանչում է այս պայմանի հիման վրա: Սա անհրաժեշտ է զտված գրացուցակները մաքրելու համար, և այն կաշխատի բոլոր բույնի մակարդակներում: Հակառակ դեպքում գործառույթը կիրառվում է ֆայլի վրա անջատել ()- այն նախատեսված է ֆայլը ջնջելու համար: Այս ստուգումից դուրս, վերջին քայլում մենք ջնջում ենք գրացուցակը:
Իրականացման օրինակ.
RecursiveRemoveDir($dir) ֆունկցիա ($includes = glob($dir."/*"); foreach ($includes as $include) ( if(is_dir($include)) ( recursiveRemoveDir($include); ) else ( unlink( $include);)) rmdir($dir);) //Հեռացնել tmp գրացուցակը ընթացիկ գրացուցակից recursiveRemoveDir("tmp");
Ի՞նչ խնդիրներ ունի այս կոդը:
Պարզ դեպքերում բոլոր հավելվածներով գրացուցակը կջնջվի: Բայց ենթադրենք, որ մեր գրացուցակում կա մի թաքնված ֆայլ, որը սկսվում է կետով, օրինակ. .htaccess. Գործառույթ գլոբ () UNIX գլոբի փոխարինում է, որը լռելյայնորեն չի ներառում թաքնված ֆայլերը (DOTFILES): Օրինակ, եթե մենք գնանք nix տերմինալ և օգտագործենք bash, մենք կհանդիպենք նույն խնդրին (խոսքը թաքնված ֆայլերի մասին է գլոբուսների ներսում): Այս խնդիրը լուծելու համար bash-ում կա հրաման. shopt -s dotglob- այն թույլ է տալիս թաքնված ֆայլերի գլոբը փոխարինել: PHP-ում դա կարելի է լուծել՝ ավելացնելով լրացուցիչ պարամետր GLOB_BRACEՀամար գլոբ ()և ընդլայնելով օրինաչափությունը ֆունկցիայի առաջին պարամետրից:
$includes = glob("tmp/(,.)*", GLOB_BRACE);
Եվ այստեղ կա նաև խնդիր՝ մենք կհանդիպենք անսահման օղակի, քանի որ զանգվածը կներառի արժեքներ։ and.. - որը հանդիսանում է ընթացիկ և մայր գրացուցակը համակարգի մակարդակով: Մենք կհայտնվենք անսահման հանգույցով (և չջնջենք բոլոր մայր դիրեկտորիաները), քանի որ. Որպես լռելյայն տեսակավորման մաս, առաջացած զանգվածը կգա առաջինը... - այսինքն, ամեն անգամ, երբ մենք մուտք ենք գործում նույն գրացուցակը: Խնդիրը լուծելու համար մենք կձևավորենք զանգված այս համակարգի դիրեկտորիաներից և ցիկլով կհեռացնենք դրանց ինդեքսները հիմնական զանգվածից: Կա նաև խորհրդանշական կապերի խնդիր։ Ենթադրենք, որ ջնջվող գրացուցակը պարունակում է մեկ այլ գրացուցակի հղում, որի բովանդակությունը մենք բացարձակապես շահագրգռված չենք ջնջել։ Խնդիրը լուծելու համար, նախքան ռեկուրսիա ստեղծելը, անհրաժեշտ է ստուգել, որ սուբյեկտը հղում չէ։
Արդյունքում ֆունկցիան ստանում է հետևյալ ձևը.
RecursiveRemoveDir($dir) ֆունկցիա ($includes = glob($dir."/(,.)*", GLOB_BRACE); $systemDots = preg_grep("/\.+$/", $includes); foreach ($systemDots որպես $index => $dot) ( unset($includes[$index]); ) foreach ($includes as $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 ($includes as $include) ( if(is_dir($include) && !is_link($include)) ( recursiveRemoveDir($include); ) ուրիշ ( unlink($include);) ) rmdir($dir);) //Հեռացնել tmp գրացուցակը ընթացիկ գրացուցակից recursiveRemoveDir("tmp");
Եզրափակելով, ես կցանկանայի նշել ևս մեկ արագ ճանապարհ. Դրա օգտագործման ճիշտությունը շատ կասկածելի է. ուղարկեք կատարման հրամանը SHELL-ին:
Համակարգ ("rm -rf tmp");
Ցանկանում եմ ձեր ուշադրությունը հրավիրել հիշողության մեծ սպառման և այն փաստի վրա, որ ադմինիստրատորները հաճախ արգելում են նման գործառույթների օգտագործումը սերվերում անվտանգության նկատառումներով:
Պիտակներ՝ php, rmdir, glob, ռեկուրսիա
Թիմ rmdirկօգնի մեզ ջնջել դատարկ գրացուցակը, այսինքն՝ առանց ֆայլերի և թղթապանակների գրացուցակ: Հրամանի շարահյուսությունը շատ պարզ է.
Rmdir DIRNAME
Եթե գրացուցակը դատարկ չէ, կտեսնեք հետևյալ սխալ հաղորդագրությունը.
$ rmdir test rmdir. չհաջողվեց հեռացնել «test»-ը. Տեղեկատուն դատարկ չէ
2. Ինչպե՞ս ջնջել ներդիր դիրեկտորիաները Linux-ում:
Օգտագործելով տարբերակը -էջդուք կարող եք ջնջել գրացուցակը, որի մեջ տեղադրված է ենթագրանց:
$ 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 FILENAME5. Օգտակար փոխանուններ rm և rmdir հրամանների համար
Դուք կարող եք օգտագործել ինտերակտիվ ջնջումը որպես rm հրամանի լռելյայն վարքագիծ:
Այլանուն՝ rm-ն անընդհատ ինտերակտիվ կերպով կատարելու համար
# alias rm="rm -i"Հրամանն օգտագործելիս rmհրամանն իրականում կկատարվի rm -i. Բայց պետք է ուշադրություն դարձնել մեկ նրբերանգի վրա. Մի օգտագործեք -i տարբերակը ապագայում, քանի որ չեք ստանա ցանկալի էֆեկտը: Դիտարկենք օրինակ.
Հետևյալ հրամանում -i-ի օգտագործումը ձեզ չի տա սպասված էֆեկտը..
$ rm -irf DIRNAME
Այս դեպքում, երբ օգտագործվում է alias, վերը նշված հրամանը պետք է գործարկվի հետևյալ կերպ.
$ rm -rf DIRNAME
Ստորև բերված բոլոր հրամանները համարժեք են և կատարում են նույն գործառույթը:
- rm-fr
- rm -rf
- rm -r -f
- rm -f -r
Եթե Ձեզ անհրաժեշտ է շենքի փորձագիտական գնահատում, խորհուրդ եմ տալիս պատվիրել պատրաստի շենքերի ստուգում Տեխնոպլաստ գիտաարտադրական կենտրոնի մասնագետների կողմից: