CLI — foydalanuvchi dastur bilan matnli buyruqlar orqali ishlaydigan interfeys. Uning to‘liq nomi Command-Line Interface hisoblanadi.
CLI terminal, shell yoki boshqa process orqali buyruq qabul qiladi va natijani text yoki machine-readable formatda qaytaradi.
Server boshqaruvi, development, automation va DevOps jarayonlarida CLI keng qo‘llanadi.
Buyruq tuzilishi
CLI buyrug‘i odatda quyidagi qismlardan iborat:
program subcommand argument option
Misol:
git commit -m "Update"
Bu yerda:
git— dastur;commit— subcommand;-m— option;"Update"— option qiymati.
Argument va option
Argument buyruq ishlaydigan obyekt yoki qiymatni bildiradi.
cat file.txt
file.txt — argument.
Option xatti-harakatni o‘zgartiradi.
ls -la
-l va -a — optionlar.
Long option:
tool --output result.json
ko‘rinishida bo‘lishi mumkin.
Subcommand
Katta CLI bir nechta vazifani subcommandlarga ajratadi.
Misol:
tool init
tool build
tool test
tool deploy
Har subcommand o‘z argument va optionlariga ega.
Bu bitta dastur ichida mantiqiy tuzilma yaratadi.
Standard input
CLI ma’lumotni stdin orqali olishi mumkin.
Misol:
cat data.json | tool process
Pipeline avtomatlashtirish va katta data oqimini faylsiz uzatishga yordam beradi.
Interactive password stdin’dan oddiy text sifatida emas, TTY orqali echo o‘chirilgan holda olinishi mumkin.
Standard output
Asosiy natija stdoutga yoziladi.
Bu natijani:
- terminalda ko‘rish;
- faylga redirect qilish;
- keyingi commandga pipe qilish
mumkin.
tool list > items.txt
Standard error
Xato va diagnostika stderrga yoziladi.
Stdout va stderrni ajratish machine-readable natijani toza saqlaydi.
Misol:
tool export > data.json 2> error.log
Exit code
CLI tugaganda exit status qaytaradi.
Umumiy qoidada:
0— muvaffaqiyat;0dan boshqa — xato yoki maxsus holat.
Script faqat output matniga emas, exit code’ga qarab qaror qabul qiladi.
Turli xatolar uchun alohida kodlar hujjatlashtiriladi.
Help
Yaxshi CLI quyidagilarni beradi:
tool --help
tool subcommand --help
Help ichida:
- syntax;
- argument;
- option;
- default;
- misol;
- environment;
- exit code
ko‘rsatiladi.
Xato inputda qisqa usage va aniq sabab qaytariladi.
Version
tool --version
dastur versiyasini ko‘rsatadi.
Bug report va CI reproduksiyasi uchun version muhim.
Build commit yoki runtime versiyasi ham ko‘rsatilishi mumkin.
Interactive va non-interactive
Interactive CLI foydalanuvchidan savol yoki tanlov oladi.
Automation uchun non-interactive rejim zarur.
Misollar:
--yes;--no-input;--json;--quiet;--force.
CI’da command input kutib qolmasligi kerak.
Machine-readable output
Inson uchun jadval qulay, script uchun JSON yoki CSV qulay.
CLI quyidagilarni qo‘llashi mumkin:
tool list --output json
Machine-readable format barqaror schema va versionga ega bo‘lishi kerak.
Terminal ranglari pipe ichidagi JSONga aralashmasligi kerak.
TTY aniqlash
CLI stdout terminalga ulanganini tekshirishi mumkin.
TTY bo‘lsa:
- rang;
- progress bar;
- interaktiv prompt;
- jadval.
- oddiy text;
- rangsiz output;
- barqaror format.
--color=always yoki --color=never kabi optionlar explicit boshqaruv beradi.
Configuration
CLI sozlamalarni quyidagilardan olishi mumkin:
Qaysi manba ustunligi aniq belgilanadi.
Environment variable
Credential yoki environmentga xos qiymat environment variable orqali kelishi mumkin.
Masalan:
APP_TOKEN
APP_ENDPOINT
Help secret qiymatni to‘liq ko‘rsatmasligi kerak.
Completion
Shell completion command, option va argumentlarni avtomatik to‘ldiradi.
Bash, Zsh, Fish va PowerShell uchun completion script yaratilishi mumkin.
Dynamic completion remote APIga murojaat qilsa, sekinlik terminal tajribasiga ta’sir qiladi.
Pipeline
Unix falsafasida kichik CLI vositalar birga ishlaydi.
generate | filter | sort | save
Har vosita bitta vazifani aniq bajaradi.
Text stream umumiy interfeys vazifasini bajaradi.
Signal
Uzoq ishlaydigan CLI Ctrl+C orqali interrupt signal oladi.
Dastur:
- vaqtinchalik faylni tozalaydi;
- transactionni bekor qiladi;
- child processni yopadi;
- to‘g‘ri exit code qaytaradi.
Ikkinchi signal majburiy to‘xtatish sifatida ishlatilishi mumkin.
Progress
Progress bar stdoutga yozilsa pipeline natijasini buzadi.
Ko‘p CLI progressni stderrga yuboradi yoki faqat TTYda ko‘rsatadi.
Quiet rejim automation logini kamaytiradi.
Xavfsizlik
Parol va tokenni command-line argument sifatida berish xavfli bo‘lishi mumkin.
U:
da ko‘rinadi.
Secret stdin, file descriptor yoki secret store orqali olinishi mumkin.
Idempotency
Automation uchun bir buyruq qayta bajarilganda natija tushunarli bo‘lishi kerak.
Masalan, mavjud resource’ni yaratish:
- “already exists” bilan muvaffaqiyat;
- aniq xato;
--force;- update
semantikasiga ega bo‘lishi mumkin.
Diagnostika
CLI ishlamasa:
- executable path;
- shell quoting;
- argument parsing;
- current directory;
- environment;
- permission;
- config;
- exit code;
- stderr;
- TTY;
- version
tekshiriladi.
Terminalda ishlagan command CI’da boshqa shell yoki environment sabab ishlamasligi mumkin.
Shell quoting
CLI argumentlari avval shell tomonidan qayta ishlanadi, keyin dasturga uzatiladi. Space, wildcard, dollar belgisi va quote noto‘g‘ri yozilsa, dastur kutilganidan boshqa argument oladi. Unix shell, PowerShell va Windows command parser qoidalari bir xil emas.
Bog‘liq tushunchalar
Command line, Shell, Terminal, Argument, Option, Standard input, Standard output, Exit code, TTY, Automation