# Directory - Jildlar

Katalog Directory - bu fayl nomlari va tegishli ma'lumotlarni saqlashdan iborat bo'lgan jild. Oddiy, maxsus yoki katalog bo'lsin, barcha fayllar jildlarda joylashgan.

{% hint style="success" %}
Directory o'zbekchada katalog lekin bu tushunchani qo'llash noqulay bo'lgani uchun katalog emas jild yoki papka deb davom qildirsak sizlarga tushunarli bo'ladi deb o'ylayman
{% endhint %}

Unix fayl va jildlarni tartibga solish uchun ierarxik tuzilmadan foydalanadi. Ushbu tuzilma ko'pincha katalog(jild) daraxti deb ataladi. Daraxt bitta root tuguniga ega, slash belgisi ( **/** ) va boshqa barcha jildlar uning ostida joylashgan.

### Bosh sahifa jildi

Siz birinchi marta kirganingizda o'zingizni topadigan jild uy(home) jild deb ataladi.

Siz o'zingizning asosiy jildingizda va fayllaringizni tartibga solish uchun yaratadigan pastki jildda ishning ko'p qismini bajarasiz.

Quyidagi buyruq yordamida istalgan vaqtda uy(home) jildiga kirishingiz mumkin&#x20;

```bash
$ cd ~
$
```

Bu yerda **\~** uy(home) jildi bildiradi. Boshqa foydalanuvchining uy(home) jildiga kirishingiz kerak deylik, quyidagi buyruqdan foydalaning&#x20;

```bash
$ cd ~username
$
```

Oxirgi jildingizga kirish uchun quyidagi buyruqdan foydalanishingiz mumkin -

```
$ cd -
$
```

### Mutlaq (Absolute) /nisbiy yo‘l(path) nomlari

Jildlar yuqorida root **(/)** bo'lgan ierarxiya bo'yicha joylashtirilgan. Ierarxiyadagi har qanday faylning joylashuvi uning yo'l(pat) nomi bilan tavsiflanadi.

Yo'l(path) nomining elementlari **/** bilan ajratiladi. Yo'l nomi mutlaq hisoblanadi, agar u rootga nisbatan tasvirlangan bo'lsa, shuning uchun mutlaq yo'l nomlari har doim **/** bilan boshlanadi.

Quyida mutlaq fayl nomlarining ba'zi misollari keltirilgan.

```
/etc/passwd
/users/sjones/chem/notes
/dev/rdsk/Os3
```

Yo'l(path) nomi joriy ishchi jildingizgaga ham tegishli bo'lishi mumkin. Nisbiy yo'l nomlari hech qachon **/** bilan boshlanmaydi. Foydalanuvchi ismoilovdev home(uy) jildiga nisbatan ba'zi yo'l nomlari shunday ko'rinishi mumkin&#x20;

```
chem/notes
personal/res
```

Istalgan vaqtda fayl tizimi ierarxiyasida qayerda ekanligingizni aniqlash uchun terminalga  **pwd** buyrug'ini kiriting&#x20;

```bash
$ pwd
/home/ismoilovdev
```

### Ro'yxat kataloglari

Jildagi fayllarni ro'yxatga olish uchun siz quyidagi sintaksisdan foydalanishingiz mumkin&#x20;

```bash
$ ls dirname
```

Quyida **/usr/local** katalogidagi barcha fayllar ro'yxati keltirilgan -

```bash
$ ls /usr/local

X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami
```

### Jildlar yaratish

Endi biz jildlarnini qanday yaratishni o'rganamiz. Jildlar quyidagi buyruq orqali yaratiladi.Dehqonchasiga aytganda papka ochish::smile:&#x20;

```bash
$ mkdir jildnomi
```

Qaysidir jild ichida jild ochmoqchi bo'lsangiiz quyidagi buyruqdan foydalaning. Mana yana bir misol

```bash
$ mkdir /tmp/test-jild
```

Ushbu buyruq **/tmp** jildida **test-jild** nomli jild  yaratadi . **mkdir** buyrug'i so'ralgan vazifani muvaffaqiyatli bajarsa, hech qanday natija bermaydi yani konsolga hech nima chiqmaydi.

Agar buyruq satrida bir nechta jildlarni bersangiz, **mkdir** jildlarning har birini yaratadi. Masalan

```bash
$ mkdir music video
```

Bu buyruq hozir music va video degan jild(papka) ochdi. Bir nechta jild(papaka) ochmoqchi bo'lsangiz shu buyruqdan foydalanasiz&#x20;

### Asosiy jildlarni yaratish

Endi biz ota-jildlarni qanday yaratishni tushunamiz. Ba'zan siz jild yaratmoqchi bo'lsangiz, uning asosiy jildini yoki jildlari mavjud bo'lmasligi mumkin. Bunday holda, **mkdir** xato xabarini quyidagicha chiqaradi&#x20;

```bash
$ mkdir /tmp/ismoilovdev/test
mkdir: Failed to make directory "/tmp/ismoilovdev/test"; 
No such file or directory
$
```

Bunday hollarda **mkdir** buyrug'iga **-p** variantini belgilashingiz mumkin. U siz uchun barcha kerakli kataloglarni yaratadi. Masalan -

```bash
$ mkdir -p /tmp/ismoilovdev/tes
```

Yuqoridagi buyruq barcha kerakli asosiy jildlarni yaratadi.

### Jildlarni o'chirish

Jildlarnini **rmdir** buyrug'i yordamida quyidagicha o'chirish mumkin&#x20;

```bash
$ rmdir jildnomi
$
```

Siz bir vaqtning o'zida bir nechta jildlarni quyidagi tarzda o'chirib tashlashingiz mumkin&#x20;

```bash
$ rmdir jild1 jild2 jild3
$
```

Yuqoridagi buyruq **jild1, jild2** va **jild3** jildlarini, agar ular bo'sh bo'lsa, o'chirib tashlaydi.

Bir nechta jildlarni o'chirmoqchi bo'lsangiz quyidagi buyruqdan foydalansiz. **Rmdir** buyrug'i muvaffaqiyatli bo'lsa, hech qanday natija bermaydi yani konsolga hech nima chiqmaydi .

### Jildlar bilan amallar bajarish

Siz **cd** buyru'gi orqali xoxlagan jildingizga yoki berilgan yo'l(path)ga kirishingiz mumkin.  Siz undan toʻgʻri mutlaq yoki nisbiy yoʻlni belgilash orqali istalgan jildga oʻtish uchun foydalanishingiz mumkin. Sintaksis quyida berilgan&#x20;

```
$ cd jild-nomi
$
```

Bu erda **jild-nomi** - siz kirmoqchi bo'lgan jild(papka).Biror path orqali kirmoqchi bo'lsangiz quyidagi buyrqudan foydalanasiz

```bash
$ cd /usr/local/bin
$
```

bu yerda **/usr** jildi bor uni  ichida **/local** jildi bor **/loca**l ichida esa **/bin** jildi bor.Hozir biz **/usr/local/bin** degan jildga kirish buyrug'ini yozdik. Yana bir misol ushbu jilddan quyidagi nisbiy yo'ldan foydalanib, **/usr/home/ismoilovdev** jildiga **cd** buyrug'ini yozish orqali kirish mumkin

```bash
$ cd ../../home/ismoilovdev
$
```

### Jildlar nomini o'zgartirish(edit tahrirlash)

**mv (move)** buyrug'i jild nomini o'zgartirish uchun ham ishlatilishi mumkin . Sintaksis quyidagicha&#x20;

```bash
$ mv eski-jild yangi-jild
$
```

Siz **kodla**r degan jildni **loyihalar** degan nomga o'zgartirish mumkin

```bash
$ mv kodlar loyihalar
$
```

### Jildlar. (nuqta) va .. (nuqta nuqta)

Fayl **nomi.** (nuqta) joriy ishchi jildni ifodalaydi; fayl nomi esa **..** (nuqta nuqta) joriy ishchi jilddan bir daraja yuqori bo'lgan jildni ifodalaydi, ko'pincha asosiy jild deb ataladi.

Joriy ishchi jild/fayllar ro'yxatini ko'rsatish buyrug'ini kiritsak va barcha fayllarni ro'yxatga olish uchun **-a** opsiyasini va batafsilroq ma'lumot olish  uchun **-l** opsiyasidan foydalansak, biz quyidagi natijani olamiz.

```bash
$ ls -la
drwxrwxr-x    4    teacher   class   2048  Jul 16 17.56 .
drwxr-xr-x    60   root              1536  Jul 13 14:18 ..
----------    1    teacher   class   4210  May 1 08:27 .profile
-rwxr-xr-x    1    teacher   class   1948  May 12 13:42 memo
$
```
