VFSShell - bu oddiy buyruq satr dasturi bo'lib, virtual fayl tizimi qobig'ini simulyatsiya qiladi. Foydalanuvchilarga daraxt strukturasidagi katalogni navigatsiya qilish, fayllar va kataloglarni yaratish, va asosiy fayl tizimi operatsiyalarini bajarish imkonini beradi.
- Fayl va Katalog Boshqaruvi
touchbuyrug'i bilan fayllarni yaratish.mkdirbuyrug'i bilan kataloglarni yaratish.
- Navigatsiya
enterbuyrug'i yordamida kataloglarga kirish.backbuyrug'i yordamida ota katalogga qaytish.pwdbuyrug'i bilan joriy yo'lni ko'rsatish.
- Ro'yxatlash va Qidirish
lsbuyrug'i yordamida joriy katalogdagi fayllar va kataloglarni ko'rish.findbuyrug'i yordamida fayl yoki katalogni nomi bo'yicha qidirish.
- Daraxt Ko'rinishi
treefunksiyasi yordamida katalog strukturasini rekursiv ravishda ko'rsatish.
- Chiqish
exitbuyrug'i yordamida qobiqdan chiqish.
VFSShell fayl tizimini simulyatsiya qilish uchun daraxt ma'lumotlar tuzilmasidan foydalanadi:
- Har bir katalog yoki fayl
Nodestrukturasi sifatida taqdim etiladi (Tree Data Structure). - Tugunlar nom, tur (fayl yoki katalog) va ularning ota, bola va aka-uka tugunlariga ko'rsatgichlarga ega.
- "root" katalogi ildiz sifatida ishga tushiriladi va barcha operatsiyalar unga nisbatan amalga oshiriladi.
| Buyruq | Tavsif |
|---|---|
pwd |
Joriy katalogning to'liq yo'lini ko'rsatadi. |
ls |
Joriy katalogdagi barcha fayllar va kataloglarni ro'yxatlaydi. |
touch <name> |
Joriy katalogda yangi fayl yaratadi. |
mkdir <name> |
Joriy katalogda yangi katalog yaratadi. |
enter <name> |
Ko'rsatilgan katalogga kiradi. |
back |
Ota katalogga qaytadi. |
find <name> |
Fayl yoki katalogni nomi bo'yicha qidiradi. |
tree |
Joriy katologning tuzilishini daraxt ko'rinishida chiqaradi. |
exit |
Qobiqdan chiqadi. |
-
Dastur kodini C kompilyatori yordamida kompilyatsiya qiling:
gcc vfsshell.c -o vfsshell
-
Tayyor dasturni ishga tushiring:
./vfsshell
-
Yuqoridagi buyruqlar yordamida virtual fayl tizimini navigatsiya qiling va boshqaring.
➜ root mkdir docs
➜ root enter docs
➜ docs touch file1.txt
➜ docs mkdir images
➜ docs enter images
➜ images pwd
root/docs/images/
➜ images back
➜ docs ls
file1.txt
images/
➜ docs find file1.txt
root/docs/file1.txt/
➜ docs tree
docs/
file1.txt
images/
➜ docs exit-
Ma'lumot tuzilmasi (
struct Node):- Har bir
Nodepapka yoki faylni ifodalaydi. name: Fayl yoki papka nomi.is_file: Fayl yoki papka ekanligini bildiradi (1 - fayl, 0 - papka).created_at: Fayl yoki papkani qachon yaratilganligini ifodalaydi.updated_at: Fayl yoki papkaga qachon o'zgartirish kiritilganligini ifodalaydi.parent: Yuqori darajadagi papkaga ishora qiladi.next: Bitta papka ichidagi navbatdagi elementga ishora qiladi.child: Papka ichidagi birinchi elementga ishora qiladi.
- Har bir
-
Global o'zgaruvchilar:
root: Fayl tizimining ildizi.current: Hozirgi papka.
-
Asosiy funksiyalar:
init(): Fayl tizimini boshlang'ich holatga keltiradi,rootpapkasini yaratadi.prompt(): Joriy papka nomini ko'rsatadi.create_node(): Yangi fayl yoki papka yaratadi.insert_node(): Yangi fayl yoki papkani hozirgi papkaga qo'shadi.search_node(): Joriy papkada berilgan nom bilan fayl yoki papkani qidiradi.
-
Buyruqlar:
touch <nom>: Fayl yaratadi.mkdir <nom>: Papka yaratadi.ls: Hozirgi papkada mavjud fayl va papkalarni ro'yxat qiladi.enter <nom>: Ko'rsatilgan papkaga kiradi.back: Bir daraja yuqori papkaga qaytadi.pwd: Joriy papkaning to'liq yo'lini ko'rsatadi.find <nom>: Fayl tizimida berilgan nomdagi fayl yoki papkani qidiradi.tree: Fayl tizimini daraxt ko'rinishida ko'rsatadi.exit: Dasturdan chiqadi.
-
Boshlanishi (
main):- Fayl tizimini boshlaydi (
init()). - Foydalanuvchi kiritgan buyruqlarni o'qiydi va tegishli funksiyalarni bajaradi.
- Fayl tizimini boshlaydi (
- Fayllar va kataloglarni o'chirish funksiyasini qo'shish.
- Ruxsatnomalar va fayl o'lchamlari atributlarini joriy qilish.
- Buyruqlar tarixini va avtomatik to'ldirish funksiyasini qo'shish.
- Dinamik kiritish o'lchamlarini boshqarish uchun xotira boshqaruvini yaxshilash.
VFSShell bilan kodlashdan zavqlaning!