1. Fayl va katalog buyruqlari — 30 ta masala
Barcha mashqlarni ~/lab katalogi ichida bajaring. Boshlashdan oldin:
1. ~/lab/proj ichida src, docs va tests kataloglarini bitta buyruq bilan yarating.
Misol: ls ~/lab/proj → docs src tests
Yechim
-p oraliq kataloglarni ham yaratadi va katalog mavjud bo'lsa xato bermaydi. {a,b,c} — shell (brace expansion) kengaytmasi, mkdir o'zi buni ko'rmaydi.
2. Hozir qaysi katalogda turganingizni chiqaring.
Misol: /home/student/lab
3. ~/lab/proj/README.md nomli bo'sh fayl yarating.
Misol: ls -l ~/lab/proj/README.md → hajmi 0
Yechim
Fayl mavjud bo'lsa,touch uning vaqt tamg'asini yangilaydi, mazmunini o'zgartirmaydi.
4. ~/lab/proj dagi barcha fayllarni, yashirinlarini ham qo'shib, uzun formatda ko'rsating.
Misol: natijada . va .. yozuvlari ham ko'rinadi.
Yechim
Nomi nuqta bilan boshlanadigan fayllar yashirin hisoblanadi;-a ularni ko'rsatadi.
5. /etc dagi fayllarni hajmi bo'yicha kattadan kichikka saralab, eng kattasi 5 tasini chiqaring.
Misol: birinchi qatorda eng katta fayl turadi.
Yechim
head -n 6 — birinchi qator total ... bo'lgani uchun 6 ta qator olinadi.
6. Fayl hajmlarini odam o'qiy oladigan ko'rinishda (K, M, G) chiqaring.
Misol: 4.0K, 1.2M kabi.
7. /var/log dagi fayllarni oxirgi o'zgarish vaqti bo'yicha saralang: eng yangisi birinchi.
Misol: eng oxirgi yozilgan log eng tepada.
Yechim
Teskari tartib uchunls -ltr: eng yangisi oxirida turadi, uzun ro'yxatda qulay.
8. ~/lab/proj/src ni ~/lab/proj/src-backup nomi bilan nusxalang (ichidagilari bilan).
Misol: ls ~/lab/proj → docs src src-backup tests
Yechim
Katalog nusxalash uchun-r shart. Ruxsat va vaqtni saqlash kerak bo'lsa cp -a.
9. README.md ni README.txt ga qayta nomlang.
Misol: ls ~/lab/proj da README.txt bor, README.md yo'q.
Yechim
Linux'da alohida "rename" buyrug'i yo'q: nomni o'zgartirish hammv.
10. README.txt ni docs katalogiga ko'chiring.
Misol: ls ~/lab/proj/docs → README.txt
11. rmdir bilan bo'sh bo'lmagan docs ni o'chirishga urinib ko'ring. Qanday xabar chiqadi va nega?
Misol: rmdir: failed to remove '...': Directory not empty
Yechim
rmdir faqat bo'sh katalogni o'chiradi. Bu xavfsiz xatti-harakat: ichidagini tasodifan yo'qotmaysiz. Ichi bilan o'chirish uchun rm -r.
12. ~/lab/proj/src-backup ni ichidagilari bilan o'chiring, lekin avval nima o'chishini ko'rib oling.
Misol: o'chirishdan oldin ls bilan ro'yxat ko'rsatiladi.
Yechim
Ehtiyot bo'ling
rm -rf tasdiq so'ramaydi va o'chirilganni qaytarib bo'lmaydi. O'zgaruvchi bilan ishlaganda (rm -rf "$DIR/") $DIR bo'sh bo'lib qolsa, / ga aylanib ketishi mumkin. Avval ls yoki echo bilan yo'lni tekshiring.
13. /bin/ls qanday turdagi fayl ekanini aniqlang.
Misol: ELF 64-bit LSB pie executable, x86-64, ...
Yechim
file kengaytmaga emas, fayl mazmuniga qarab turini aniqlaydi. Linux'da .exe kabi kengaytma shart emas.
14. /etc/passwd va /bin/bash ning turlarini bitta buyruq bilan solishtiring.
Misol: birinchisi ASCII text, ikkinchisi ELF ... executable.
15. /etc/passwd ning dastlabki 5 qatorini chiqaring.
Misol: 5 ta qator, birinchisi root:x:0:0:...
16. /etc/passwd ning oxirgi 3 qatorini chiqaring.
Misol: 3 ta qator (odatda eng oxirgi yaratilgan foydalanuvchilar).
17. Log faylga yangi qatorlar qo'shilishini jonli kuzating, so'ng to'xtating.
Misol: yangi qator paydo bo'lishi bilan ekranda ko'rinadi.
Yechim
To'xtatish:Ctrl+C. Fayl rotatsiya qilinganda (yangi fayl bilan almashtirilganda) tail -F ishonchliroq: u fayl nomini qayta ochadi.
18. /etc/passwd dagi qatorlar sonini toping.
Misol: 35 (sizda boshqa son bo'lishi mumkin).
Yechim
wc ning o'zi qator, so'z va bayt sonini beradi. Faqat sonni olish uchun: wc -l < /etc/passwd.
19. Uzun faylni sahifalab ko'ring, undan root so'zini qidiring va chiqing.
Misol: /root yozib Enter, keyin q.
Yechim
less ichida: /so'z — oldinga qidirish, n — keyingi natija, q — chiqish. less faylni to'liq xotiraga yuklamaydi, shuning uchun katta loglar uchun cat dan yaxshi.
20. /etc/hostname mazmunini qator raqamlari bilan chiqaring.
Misol: 1 myserver
21. ~/lab ichidagi barcha .txt fayllarni (ichki kataloglarda ham) toping.
Misol: /home/student/lab/proj/notes.txt
Yechim
Andoza (*.txt) qo'shtirnoqda bo'lishi kerak, aks holda shell uni find ishga tushishidan oldin joriy katalogdagi fayllarga almashtirib yuboradi.
22. Butun tizimdan hajmi 100 MB dan katta oddiy fayllarni toping, "Permission denied" xatolarini ko'rsatmang.
Misol: /var/lib/... kabi yo'llar ro'yxati.
Yechim
-xdev boshqa fayl tizimlariga (/proc, /mnt) o'tmaydi. 2>/dev/null xato oqimini tashlab yuboradi.
23. ~/lab dagi 7 kundan beri o'zgarmagan fayllarni toping.
Misol: faqat eski fayllar chiqadi.
Yechim
-mtime +7 — 7 sutkadan ko'p oldin o'zgargan. -mtime -7 — oxirgi 7 sutkada o'zgargan.
24. ~/lab ichidagi .tmp fayllarni xavfsiz tarzda o'chiring: avval ro'yxatini ko'rib, keyin o'chiring.
Misol: ikkinchi buyruqdan keyin find ~/lab -name '*.tmp' hech narsa chiqarmaydi.
Yechim
Ehtiyot bo'ling
-delete ni shartlardan oldin yozmang: find ~/lab -delete -name '*.tmp' hamma narsani o'chiradi, chunki find ifodani chapdan o'ngga baholaydi.
25. ls buyrug'i qaysi yo'lda joylashganini aniqlang, so'ng cd ning o'zi fayl yoki yo'qligini tekshiring.
Misol: ls uchun /usr/bin/ls; cd uchun cd is a shell builtin.
Yechim
cd shell'ning ichki buyrug'i: u alohida jarayon bo'lsa, joriy shell katalogini o'zgartira olmasdi.
26. ~/lab/a.txt yarating, unga bitta hard link va bitta symlink qiling. inode raqamlari bilan farqni ko'rsating.
Misol: a.txt va hard link bir xil inode'ga, symlink boshqasiga ega.
Yechim
Hard link — shu inode'ning ikkinchi nomi (a.txt o'chsa ham ma'lumot qoladi). Symlink — alohida fayl, ichida yo'l turadi.27. Mavjud bo'lmagan faylga symlink yarating. Uni o'qishga urinib ko'ring va buzilgan symlink'larni topuvchi buyruq yozing.
Misol: cat: ...: No such file or directory; find buzilgan linkni chiqaradi.
Yechim
ls -l da link ko'rinadi, lekin cat xato beradi: link ko'rsatayotgan manzil yo'q. -xtype l — nishoni mavjud bo'lmagan symlink'lar.
28. Katalog bo'ylab yuring: /var/log ga o'ting, keyin bitta buyruq bilan oldingi katalogga qayting, so'ng uy katalogiga.
Misol: pwd ketma-ket /var/log, ~/lab (oldingi), /home/student.
Yechim
cd - oldingi katalogga qaytaradi (va uning yo'lini chiqaradi).
29. ~/lab da a1.txt…a9.txt va b1.log, b2.log fayllarini yarating. Wildcard bilan faqat a1–a3 ni, keyin .txt va .log ni birga ro'yxatlang.
Misol: a1.txt a2.txt a3.txt.
Yechim
[1-3] — bitta belgi, 1 dan 3 gacha. * — istalgan miqdordagi belgi. Barchasini shell kengaytiradi, ls tayyor ro'yxatni oladi.
30. stat bilan faylning uch xil vaqtini ko'rsating va Modify bilan Change farqini tushuntiring.
Misol: Access, Modify, Change qatorlari.