Bosh sahifa Wiki CLI

CLI

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.

Pipe yoki fayl bo‘lsa:

  • oddiy text;
  • rangsiz output;
  • barqaror format.

--color=always yoki --color=never kabi optionlar explicit boshqaruv beradi.

Configuration

CLI sozlamalarni quyidagilardan olishi mumkin:

  1. command-line option;
  2. environment variable;
  3. loyiha config fayli;
  4. user config;
  5. default qiymat.

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:

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