Buyruq sintaksisi va yordam hujjatlari
Buyruq satrida yuz beradigan xatolarning aksariyati buyruq nomini unutib qo'yishdan kelib chiqmaydi. Ko'pincha muammo
buyruq satri foydalanuvchi kutganidan boshqacha tahlil qilinganida yuz beradi. Masalan, cp report final uchta so'zdan
iborat: bitta buyruq va ikkita argument. Agar haqiqiy fayl nomi report final bo'lsa, uni qo'shtirnoqsiz yozish
butunlay boshqa ma'noni anglatadi.
Bu qismda buyruq sintaksisini qanday o'qish, Bash argumentlarni dasturlarga qanday uzatishi va boshqarayotgan tizimingizga o'rnatilgan yordam hujjatlaridan qanday foydalanish tushuntiriladi.
Buyruqning tuzilishi
Hujjatlarda buyruqlar ko'pincha quyidagi shaklda ko'rsatiladi:
Masalan:
Bu buyruq quyidagi qismlardan iborat:
ls— buyruq nomi.-lva-h— buyruq qanday ishlashini o'zgartiradigan parametrlar./var/log— argument. Bu misolda ro'yxati chiqariladigan katalog.
Hujjatlarda kvadrat qavslar biror qism ixtiyoriy ekanini bildiradi. ... belgisi esa shu qism bir necha marta
takrorlanishi mumkinligini anglatadi. Buyruqni yozayotganda kvadrat qavslar yoki uch nuqtani kiritmaysiz.
Har bir dastur o'z parametr va argumentlarini qanday talqin qilishni o'zi belgilaydi. Unix tizimlarida umumiy qoidalar
mavjud, lekin ular barcha buyruqlar uchun bir xil emas. Masalan, ls -h buyrug'ida -h “inson uchun o'qish qulay
bo'lgan format” ma'nosini beradi. Boshqa buyruqda esa -h boshqa ma'noni anglatishi yoki umuman ishlamasligi mumkin.
Qisqa parametrlar, uzun parametrlar va qiymatlar
GNU buyruqlari ko'pincha qisqa va uzun parametrlarni qo'llab-quvvatlaydi:
ls buyrug'ida birinchi va ikkinchi buyruqlar bir xil natija beradi. Sababi, alohida qiymat talab qilmaydigan qisqa
parametrlarni bitta guruhga birlashtirish mumkin. Lekin notanish buyruqda parametrlarni tekshirmasdan guruhlamang.
Qiymat qabul qiladigan uzun parametrlar ko'pincha quyidagi shakllardan birida yoziladi:
GNU sort buyrug'ida --key=2 va --key 2 shakllarining ikkalasi ham ishlaydi. Boshqa dastur esa faqat bittasini
qabul qilishi mumkin. To'g'ri yozilish shaklini shu buyruqning hujjatidan tekshirish kerak.
“Invalid option” xatosini o'qish
Dastur tanimaydigan parametr kiritilsa, buyruq jim turib ishlamay qolmaydi. U aniq xatolik xabarini chiqaradi:
Bu xabarni ikki qismga ajratib o'qish mumkin.
ls: invalid option -- 'z' qatori xatoni qaysi dastur chiqarganini va aynan qaysi belgi noto'g'ri ekanini ko'rsatadi.
Try 'ls --help' for more information. qatori esa keyingi ma'lumotni qayerdan olish kerakligini aytadi. GNU dasturlari
bu xabarni odatda bir xil ko'rinishda chiqaradi. Shu sababli to'g'ri parametrni taxmin qilish o'rniga, ko'rsatilgan
yordam buyrug'ini bajarish kerak.
Hech bir faylga tegilmasdan buyruq xato bilan tugaganini tekshiring:
GNU vositalari foydalanish sintaksisidagi xatolar uchun ko'pincha 2 kodini qaytaradi. Bu ko'plab buyruqlarda mavjud
bo'lmagan fayl kabi bajarilish vaqtidagi xatolar uchun qaytariladigan 1 kodidan farq qiladi.
Bu farq skript $? qiymatini tekshirib, buyruqni qayta bajarish yoki bajarmaslikka qaror qilganida muhim bo'ladi.
Sintaksis xatosi har bir urinishda yana takrorlanadi. Bajarilish vaqtidagi xato esa asosiy sabab bartaraf etilgach
muvaffaqiyatli yakunlanishi mumkin.
Buyruq qatorini avval Bash qayta ishlaydi
Tashqi dastur ishga tushishidan oldin Bash qo'shtirnoqlar, o'zgaruvchilar, wildcard andozalari va qayta yo'naltirishlarni allaqachon tahlil qilib bo'ladi.
Argumentlar chegarasini ko'rish uchun printf buyrug'idan foydalanish qulay:
Natija:
Dastur uchta argument qabul qildi. Qo'shtirnoqlar argumentning bir qismi emas. Ular Bashga two words ichidagi
bo'shliqni bitta argument tarkibida saqlash kerakligini bildiradi.
Bir tirnoq va qo'shtirnoqni taqqoslang:
Qo'shtirnoq o'zgaruvchini qiymatiga almashtirishga ruxsat beradi va natijani bitta argument sifatida saqlaydi. Bir tirnoq esa ichidagi belgilarni aynan yozilgan holicha qoldiradi.
Parametrlarni -- bilan tugatish
Fayl nomi - belgisi bilan boshlanishi mumkin. Ehtiyot bo'linmasa, dastur bunday fayl nomini parametr deb qabul
qilishi mumkin.
Sinov katalogidan foydalaning:
Ko'plab Unix buyruqlarida -- belgisi parametrlarni tahlil qilish tugaganini bildiradi. Bu belgi amalni o'z-o'zidan
xavfsiz qilib qo'ymaydi. U faqat fayl nomining parametr bilan adashib ketishining oldini oladi.
Ushbu sinovda faylni o'chirish uchun interaktiv rejimdan foydalaning:
Warning
rm odatda fayllarni grafik muhitdagi Trash savatiga ko'chirmaydi. O'chirish bilan bog'liq misollarni faqat sinov
katalogida bajaring. Avval ls -l -- <path> yordamida nishonni tekshiring va rekursiv o'chirishning ta'sir
doirasini to'liq tushunmaguningizcha undan foydalanmang.
Qaysi buyruq bajariladi?
Bash buyruq nomini alias, funksiya, ichki buyruq, kalit so'z yoki tashqi bajariladigan fayl sifatida aniqlashi mumkin.
Mumkin bo'lgan natija:
Shell xatti-harakatini tekshirayotganda type buyrug'idan foydalaning. Ko'plab tizimlarda which faqat PATH ichidagi
bajariladigan fayllarni qidiradi. Shu sababli u aliaslar, funksiyalar va ichki buyruqlarni ko'rsatmasligi mumkin.
Buyruqlar qidiriladigan yo'llarni ko'rish uchun:
PATH — : belgisi bilan ajratilgan kataloglar ro'yxati. Bash bu kataloglarni chapdan o'ngga qarab tekshiradi.
Agar joriy katalog PATH ichida bo'lmasa, shu katalogdagi ishonchli bajariladigan faylni aniq nisbiy yo'l bilan ishga
tushiring:
Serverda . belgisini PATH ro'yxatining boshiga qo'ymang. Joriy katalogdagi zararli dastur oddiy tizim buyrug'i
nomini egallab olishi mumkin.
Chiqish holati va shartli bajarish
Inson o'qiy oladigan natija buyruq mashina nuqtayi nazaridan muvaffaqiyatli yakunlanganini har doim ham anglatmaydi. Buyruqlar chiqish holatini qaytaradi.
Odatdagi natija:
drwxr-xr-x 160 root root 12288 Jul 29 12:00 /etc
status=0
ls: cannot access '/does-not-exist': No such file or directory
status=2
Umumiy qoida bo'yicha 0 muvaffaqiyatni, noldan boshqa qiymat esa boshqa holatni bildiradi. Aniq kodlarning ma'nosini
har bir buyruqning o'zi belgilaydi.
Keyingi amal oldingi buyruqning natijasiga bog'liq bo'lsa, && va || operatorlaridan foydalaning:
test -r /etc/hosts && echo "hosts file is readable"
test -r /root/secret || echo "not readable as this user"
Ikkinchi misol faqat o'qish huquqini tekshiradi. Nima uchun yuqori huquq kerakligini va siyosat bunga ruxsat berishini
bilmasdan turib sudo qo'shmang.
Yordam qatlamlari
Ishonchli administrator avval boshqarayotgan tizimning o'ziga o'rnatilgan hujjatlarni tekshiradi. Chunki ular aynan shu tizimda o'rnatilgan dastur versiyasiga mos keladi.
Shell ichki buyruqlari uchun yordam
Bashning ichki buyruqlari bo'yicha yordam olish uchun Bash yordamidan foydalaniladi:
Bu muhim, chunki man cd Bashning cd buyrug'ini to'g'ridan-to'g'ri tushuntirmasligi mumkin. Bundan tashqari,
hujjatlashtiriladigan alohida tashqi cd dasturi umuman bo'lmasligi mumkin.
Tez sintaksis uchun --help
GNU dasturlari odatda quyidagilarni qo'llab-quvvatlaydi:
Avval Usage: qatorini o'qing. Keyin kerakli parametrni qidiring. --help natijasi qisqa ma'lumot berishini unutmang.
U murakkab yoki noodatiy holatlarni tushunish uchun har doim ham yetarli bo'lmaydi.
Qo'llanma sahifalari
Mahalliy ma'lumotnoma hujjatlari uchun man buyrug'idan foydalaning:
man bo'limlari muhim ahamiyatga ega. man 1 passwd foydalanuvchi bajaradigan passwd buyrug'ini tushuntiradi.
man 5 passwd esa /etc/passwd faylining formatini tushuntiradi.
Qo'llanma ichida quyidagi tugmalardan foydalaniladi:
Space— keyingi sahifaga o'tish.Enter— bir qator pastga tushish./pattern— oldinga qarab qidirish.n— keyingi mos natijaga o'tish.N— oldingi mos natijaga qaytish.g— hujjat boshiga o'tish.G— hujjat oxiriga o'tish.q— chiqish.
Qo'llanma sahifalaridan qidirish
Buyruq nomini bilmasangiz:
Bu buyruqlar qo'llanma sahifalari ma'lumotlar bazasidan qidiradi.
Minimal tizimda ma'lumotlar bazasi mavjud bo'lmasligi yoki eskirgan bo'lishi mumkin. Natijalar to'liq ko'rinmasa,
administrator mandb buyrug'ini bajarishi kerak bo'lishi mumkin. Bu odatda sudo talab qiladi, chunki buyruq tizim
miqyosidagi indekslarni yangilaydi. Bu o'quv laboratoriyasi buyrug'i emas, balki tizimga xizmat ko'rsatish amali
hisoblanadi.
Info qo'llanmalari
GNU loyihalari ko'pincha batafsilroq info hujjatlarini taqdim etadi:
Minimal serverlarda barcha Info qo'llanmalari o'rnatilmagan bo'lishi mumkin. info mavjud bo'lmasa, man va --help
dan foydalaning.
Keng tarqalgan xatolar
- Hujjatlarda ko'rsatilgan
[OPTION]kabi yozuvlarni aynan buyruqqa kiritish. - Har bir buyruqda
-hyordam parametrini bildiradi deb hisoblash. - Qo'shtirnoqlar Bash tomonidan olib tashlanishini va dasturga belgi sifatida uzatilmasligini unutish.
- Buyruq manbasini tekshirish uchun faqat
whichbuyrug'iga tayanish. $?qiymatini juda kech tekshirish, ya'ni undan oldin boshqa buyruq bajarib yuborish.- Notanish buyruq qayerga va nima yozishini o'qimasdan turib uni
sudobilan ishga tushirish.
Mashqlar
cd,pwd,echo,lsvaprintfbuyruqlarinitype -ayordamida tekshiring. Har bir natijani tushuntiring.~/lab/syntaxkatalogidatwo words.txtnomli fayl yarating. Keyinprintf '<%s>\n'yordamida nima uchun qo'shtirnoq kerakligini isbotlang.man 1 passwdvaman 5 passwdbuyruqlarini bajaring. Ularning farqini bitta gap bilan yozing.apropos archivebuyrug'idan foydalaning. Natijadan bitta buyruq tanlab, uni--helpvamanorqali o'rganing.
Sizga yangi buyruq berilganda qaysi dastur bajarilishini, u qanday argumentlar qabul qilishini va uning ishonchli mahalliy hujjatini qayerdan topishni aniqlay olishingiz kerak.
Manbalar
- Bash qo'llanma sahifasi: https://man7.org/linux/man-pages/man1/bash.1.html
- GNU Bash Reference Manual: https://www.gnu.org/software/bash/manual/bash.html
- GNU Coreutils qo'llanmasi: https://www.gnu.org/software/coreutils/manual/coreutils.html
- Linux manual pages loyihasi: https://man7.org/linux/man-pages/
- POSIX vositalari qoidalari: https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html