پرش به محتوای اصلی

مرجع خط فرمان Beancount

دستورهای bea، گزینه‌ها، رفتار گزارش‌ها، خروجی JSON، کدهای خروج و راه‌حل‌های خطاهای رایج دفتر محلی را بیابید.

از این مرجع برای جست‌وجوی دستورات bea و رفتار آن‌ها استفاده کنید. برای نخستین دفتر کل خود، شروع سریع CLI را دنبال کنید. برای بستن یک ماه کامل از ابتدا تا انتها، نخستین ماه شما با bea را مرور کنید. برای فایل‌های بانکی، از راهنمای گام‌به‌گام واردکردن استفاده کنید.

دستورات در یک نگاه​

دستورهدف
bea init [DIRECTORY]ایجاد دفتر کل با حساب‌های رایج
bea add TYPEافزودن یک بخشنامه تاریخ‌دار
bea add transactions --from FILE.jsonافزودن یک دسته تراکنش
bea import SOURCEپیش‌نمایش یک خروجی؛ برای نوشتن --apply را اضافه کنید
bea list TYPEفهرست و پالایش بخشنامه‌ها
bea checkاعتبارسنجی کل دفتر کل
bea format PATHهم‌ترازی یک فایل یا قالب‌بندی بازگشتی یک پوشه
bea query [BQL]اجرای یک پرس‌وجو یا باز کردن پوسته تعاملی پرس‌وجو
bea report TYPEتولید گزارش‌های مالی
bea balance [ACCOUNT...]چاپ موجودی حساب‌های منطبق
bea ask [QUESTION]استفاده از کمک اختیاری هوش مصنوعی میزبانی‌شده با دفتر کل محلی
bea cloud …ورود و مدیریت دفترهای کل میزبانی‌شده
bea doctor COMMANDبررسی زمینه دفتر کل و تشخیص‌ها
bea example [OPTIONS]تولید یک دفتر کل نمونه
bea treeify [INPUT]نمایش نام حساب‌ها به شکل درخت متنی
bea ingest COMMANDشناسایی، استخراج یا بایگانی با پیکربندی Beangulp
bea price [OPTIONS]بررسی، تازه‌سازی یا صادرات قیمت‌های مدیریت‌شده؛ در غیر این صورت دریافت نقل‌قول از طریق Beanprice اختیاری
bea engine COMMANDبررسی موتور مدیریت‌شده یا فعال‌سازی قابلیت‌های اختیاری
bea upgrade [--check]ارتقا با مدیر بسته مالک، یا بررسی به‌روزرسانی

گزینه‌ها و مسیرهای عمومی​

گزینه‌های سراسری پیش از دستور می‌آیند:

bea --file ~/my-books/main.bean check
bea --json list transaction --limit 100
گزینهرفتار
--file / -f PATHانتخاب دفتر کل ریشه؛ BEA_FILE و ./main.bean را بازنویسی می‌کند
--jsonخروجی ساختاریافته؛ اعلان‌های CLI را نیز غیرفعال می‌کند
--no-inputغیرفعال‌کردن اعلان‌ها؛ نبود ورودی الزامی با کد 2 خارج می‌شود
--yes / -yتأیید عملیاتی مانند حذف ابری؛ مجوز نوشتن هوش مصنوعی نمی‌دهد
--debugشامل ردیابی استثناها
--offlineحل قیمت‌های مدیریت‌شده از حافظه نهان محلی بدون دریافت
--strict-pricesشکست در بارگذاری هنگام کهنه یا در دسترس نبودن منبع مدیریت‌شده
--strictرد پاسخ‌های جزئی حتی در ترمینال؛ --allow-errors یک دستور دوباره آن را مجاز می‌کند
--versionنمایش نسخه نصب‌شده بدون درخواست شبکه‌ای
--help / -hنمایش راهنما؛ روی زیردستورها نیز موجود است
--show-completionچاپ تکمیل پوسته
--install-completionنصب تکمیل پوسته
--shell NAMEانتخاب bash، zsh، fish، powershell یا pwsh به‌جای تشخیص خودکار پوسته

init هدف پوشه/فایل خود را می‌سازد و BEA_FILE را نادیده می‌گیرد. به‌جای آرگومان پوشه، گزینه سراسری --file را می‌پذیرد. format از هدف مکانی خود استفاده می‌کند. یک نام فایل یا پوشه ارائه دهید. گزینه سراسری --file هدف قالب‌بندی را انتخاب نمی‌کند.

ایجاد یک دفتر کل​

bea init [DIRECTORY] به‌طور پیش‌فرض از پوشه جاری استفاده می‌کند. یک پوشه فایل main.bean می‌سازد؛ یک مسیر .bean یا .beancount مستقیماً فایل جدید را نام‌گذاری می‌کند.

گزینهرفتار
--currency / -c SYMBOLارز عملیاتی؛ در حالت غیرتعاملی الزامی، پیش‌فرض تعاملی USD
--date YYYY-MM-DDتاریخ آغازین تاریخچه/افتتاح؛ در غیر این صورت یک اعلان یا امروز
--opening-balance "ACCOUNT NUMBER"برای حساب‌های دارایی/بدهی الگو تکرار کنید؛ مبالغ از ارز عملیاتی استفاده می‌کنند

الگو حساب‌های Assets:Checking، Assets:Savings، Assets:Cash، Liabilities:CreditCard، Income:Salary، Income:Interest، Expenses:Groceries، Expenses:Dining، Expenses:Rent، Expenses:Transport، Expenses:Utilities، Expenses:Fees، Expenses:Uncategorized و Equity:OpeningBalances را باز می‌کند.

موجودی‌های افتتاحیه در برابر Equity:OpeningBalances تسویه می‌شوند. بدهی منفی است. ورودی ارز به حروف بزرگ تبدیل می‌شود. نمادهای سفارشی مجاز هستند؛ نمادی که سه حرف بزرگ نیست، هشدار اشتباه تایپی را فعال می‌کند. این بررسی ثبت ارز ISO نیست.

فایل‌های موجود هرگز بازنویسی نمی‌شوند. فایل‌های جدید از مجوزهای فقط مالک استفاده می‌کنند، حالت 0600 در POSIX. نوشتن‌های افزودن و واردکردن بعدی مجوزها را حفظ می‌کنند و به مقصدهای فقط‌خواندنی احترام می‌گذارند. قالب‌بندی درجا از قالب‌بند بومی استفاده می‌کند و خطاهای فایل‌سیستم خود را گزارش می‌دهد.

افزودن تراکنش‌ها​

bea add transaction -n "Groceries" --payee "Corner Market" \
  -p "Expenses:Groceries 30" -p "Assets:Checking" \
  --flag '!' --tag household --link receipt-42 --meta 'receipt:IMG_42.jpg'
گزینهرفتار
--posting / -p POSTINGالزامی؛ برای هر ثبت تکرار کنید
--date YYYY-MM-DDپیش‌فرض امروز
--flag CHARACTERپیش‌فرض *؛ از ! برای علامت‌گذاری تراکنش جهت بازبینی استفاده کنید
--payee TEXTطرف مقابل اختیاری
--narration / -n TEXTهدف اختیاری؛ متن حذف‌شده به‌عنوان (no narration) فهرست می‌شود
--tag TAG، --link LINKقابل تکرار؛ # یا ^ ابتدایی اختیاری پذیرفته می‌شود
--meta KEY:VALUEفراداده تراکنش قابل تکرار
--into FILEنوشتن یک فایل شامل‌شده همزمان با اعتبارسنجی ریشه
--allow-errorsاجازه صریح خطاهای اعتبارسنجی معنایی؛ نحو باید هنوز تجزیه شود

یک ثبت می‌تواند مبلغ خود را حذف کند. ثبت‌های شماره‌دار می‌توانند ارز را زمانی حذف کنند که یک حساب یک ارز مجاز دارد یا دفتر کل یک ارز عملیاتی سازگار دارد. در غیر این صورت، نماد را ارائه دهید.

نحو بومی ثبت از محاسباتی مانند 84/2 EUR، هزینه‌هایی مانند {100 USD}، هزینه‌های کل {{1000 USD}} و قیمت‌های @ یا @@ پشتیبانی می‌کند. از مبالغ اعشاری مانند 1000 استفاده کنید، نه نماد توانی مانند 1e3.

یک تبدیل ارز به نرخ تراکنش واقعی خود نیاز دارد. برای مثال، 100 EUR @ 1.08 USD را به حسابی باز شده به EUR و -108 USD را به حساب جاری ثبت کنید. یک خرید سرمایه‌گذاری می‌تواند 2 AAPL {100 USD} را به حسابی باز شده به AAPL و -200 USD را به حساب جاری ثبت کند. وقتی گزارش‌ها به ارزش‌گذاری بازار نیاز دارند، نقل‌قول‌های price تاریخ‌دار را اضافه کنید.

فراداده رشته‌های ساده مانند --meta 'receipt:IMG_42.jpg' را می‌پذیرد. اعداد بومی، بولی‌ها، تاریخ‌ها و مبالغ نوع خود را حفظ می‌کنند. مثال‌ها شامل --meta 'reviewed:TRUE'، --meta 'received:2026-08-03' و --meta 'fee:2.50 USD' هستند. نقل‌قول‌های داخلی یک رشته را تحمیل می‌کنند: --meta 'code:"1234"'. کلیدها باید متمایز باشند؛ filename و lineno رزرو شده‌اند.

افزودن‌های تکی، افزودن‌های انبوه و واردکردن‌ها، شکست خط در طرف مقابل، روایت‌ها و فراداده رشته‌ای را با فاصله جایگزین می‌کنند. نقل‌قول‌ها و بک‌اسلش‌ها محتوای خود را حفظ می‌کنند.

افزودن دستورات دیگر​

همه این دستورات به --date YYYY-MM-DD نیاز دارند. همچنین --into FILE و --allow-errors را می‌پذیرند.

نوعفیلدهای الزامیگزینه‌های اضافی
open--account / -aتکرار --currency / -c برای محدودکردن ارزها
close--account / -a—
balance--account / -a، --amount "NUMBER CURRENCY"--pad-from ACCOUNT، --pad-date YYYY-MM-DD
pad--account / -a، --source / -s—
note--account / -a، --comment / --message / -m—
event--type / -t، --description / -d—
price--currency / --commodity / -c، --amount "NUMBER CURRENCY"ارز، کالایی را که قیمت‌گذاری می‌شود نام‌گذاری می‌کند
commodity--currency / --commodity / -c—
document--account / -a، --filename / --path--tag و --link تکرارشده
custom--type / -t--value / -v KIND:VALUE تکرارشده

نام حساب‌ها یک ریشه با حرف بزرگ و بخش‌های جدا شده با دونقطه دارند. هر زیرحساب با یک حرف بزرگ یا رقم شروع می‌شود. بیکانت از حروف یونیکد و نام‌های ریشه پیکربندی‌شده پشتیبانی می‌کند.

یک balance حساب را در ابتدای تاریخ خود بررسی می‌کند. نحو تلورانس پشتیبانی می‌شود، مانند --amount "1538 ~ 1 EUR". تلورانس باید نامنفی باشد.

از add balance --pad-from Equity:OpeningBalances برای نوشتن یک pad و تأییدیه موجودی آن با هم استفاده کنید. pad به‌طور پیش‌فرض روز قبل است؛ --pad-date می‌تواند روز دیگری را زودتر انتخاب کند. هر دو حساب باید فعال باشند. یک pad مستقل به یک balance بعدی برای مصرف نیاز دارد. --allow-errors می‌تواند آن حالت میانی را صحنه‌بندی کند اما نمی‌تواند از یک حساب pad نامعتبر عبور کند.

add price یک تکرار دقیق تاریخ/کالا/قیمت را در ریشه و شامل‌های آن نادیده می‌گیرد. با کد 0 خارج می‌شود و مکان موجود را شناسایی می‌کند. تاریخ‌ها یا قیمت‌های متفاوت افزودنی جدید هستند.

مسیرهای سند در کنار فایلی که بخشنامه را در خود دارد حل می‌شوند. با --into years/2026.bean، --filename receipt.pdf به معنای years/receipt.pdf است، نه فایلی در کنار پوشه کاری پوسته شما.

انواع مقدار سفارشی text، number، amount، account، bool و date هستند. برای مثال، یک بودجه می‌تواند از --value "text:travel" --value "amount:500 USD" استفاده کند.

ورودی تجمعی JSON​

bea add transactions --from transactions.json یک آرایه JSON را می‌پذیرد:

[
  {
    "date": "2026-08-04",
    "narration": "Groceries",
    "postings": [
      { "account": "Expenses:Groceries", "amount": "45.00 USD" },
      { "account": "Assets:Checking" }
    ],
    "meta": { "receipt": "R-43", "reviewed": true }
  }
]

هر تراکنش به date و postings نیاز دارد. فیلدهای اختیاری flag، payee، narration، tags، links و meta هستند.

یک ثبت از amount یا units استفاده می‌کند، مانند {"number":"45.00","currency":"USD"}. برای ثبت متعادل‌کننده هر دو را حذف کنید. فیلدهای ثبت همچنین شامل cost، price، flag و meta هستند. هزینه‌ها شامل number و currency با date و label اختیاری هستند. قیمت‌ها شامل number و currency هستند.

برای اعشار از رشته استفاده کنید. فراداده از رشته‌های معمولی و بولی‌ها، یا مقادیر برچسب‌دار مانند {"kind":"number","value":"1.125"}، {"kind":"date","value":"2026-08-04"} و {"kind":"amount","number":"2.50","currency":"USD"} استفاده می‌کند. مکان اختیاری source تراکنش هرگز به‌عنوان فراداده نوشته نمی‌شود.

پیش‌فرض یک دسته اتمی است: هر سطر رد شده دفتر کل را بدون تغییر می‌گذارد و با کد 1 خارج می‌شود. --partial یک زیرمجموعه معتبر می‌نویسد و اگر هر سطری رد شود هنوز با کد 1 خارج می‌شود. خطاهای JSON نتیجه را در error.result توصیف می‌کنند؛ شماره سطرها در آنجا از صفر شروع می‌شوند. شماره سطرهای انسانی از یک شروع می‌شوند.

افزودن انبوه --into و --allow-errors را می‌پذیرد. حذف تکراری انجام نمی‌دهد. برای بازبینی خروجی بانکی از bea import استفاده کنید.

تقسیم دفاتر و ایمنی نوشتن​

--file را به ریشه اشاره دهید. --into را برای انتخاب یک فایل شامل‌شده موجود اضافه کنید:

bea --file ~/my-books/main.bean add transaction --into 2026.bean \
  --date 2026-08-02 -n "Groceries" \
  -p "Expenses:Groceries 30" -p "Assets:Checking"

مقصد نسبت به پوشه ریشه است. باید از قبل شامل شده باشد؛ نام‌گذاری یک فایل نامرتبط رد می‌شود. دستورات افزودن، واردکردن‌ها و نوشتن‌های تعاملی هوش مصنوعی از این جداسازی پشتیبانی می‌کنند.

نوشتن‌ها کل دفتر کل نامزد را اعتبارسنجی می‌کنند، شامل افزونه‌ها و رزرو دسته هزینه. یک تغییر همزمان در ریشه یا گراف شامل آن با کد 4 خارج می‌شود. یک مقصد فقط‌خواندنی با کد 3 خارج می‌شود. افزودن‌های موفق فقط خطوط جدید را هم‌تراز می‌کنند. بایت‌های موجود بدون تغییر می‌مانند. وقتی می‌خواهید کل فایل را دوباره هم‌تراز کنید، از bea format -i PATH استفاده کنید.

فهرست دستورات​

bea list TYPE از یازده نوع پشتیبانی می‌کند: transaction، open، close، balance، pad، note، event، price، commodity، document و custom.

گزینهاعمال بهرفتار
--limit / -l Nهمه انواعحد مثبت؛ پیش‌فرض 50
--from-date، --to-dateهمه انواعمحدوده‌های YYYY-MM-DD شامل‌شده
--allow-errorsهمه انواعاجازه داده‌های جزئی با وجود خطاهای بارگذار
--account / -a TEXTتراکنش، open، close، balance، pad، note، documentزیررشته حساب بدون حساسیت به بزرگی و کوچکی حروف
--currency / -c SYMBOLprice، commodityنماد دقیق بدون حساسیت به بزرگی و کوچکی حروف؛ price کالای پایه خود را پالایش می‌کند
--sort newest/oldestتراکنشپیش‌فرض جدیدترین؛ پیش از حد اعمال می‌شود
--flag CHARACTERتراکنشپالایش ورودی‌هایی مانند ! پیش از حد
--detailsتراکنشنمایش نحو بیکانت، هر ثبت، فراداده و مکان‌های منبع

انواع دیگر بخشنامه ترتیب زمانی خود را حفظ می‌کنند. یک جدول تراکنش پالایش‌شده با حساب، ستون مبلغ خود را MATCHING POSTING AMOUNTS برچسب می‌زند. جزئیات و JSON هنوز همه ثبت‌های هر تراکنش انتخاب‌شده را شامل می‌شوند. جزئیات ورودی‌های بارگذاری‌شده را نمایش می‌دهد، شامل مبالغ استنتاج‌شده؛ آن‌ها گزیده منبع خام نیستند.

بررسی، قالب‌بندی و پرس‌وجو​

bea check ریشه و شامل‌ها را اعتبارسنجی می‌کند. در صورت موفقیت بی‌صدا با کد 0 و برای خطاهای دفتر کل با کد 1 خارج می‌شود. گزینه سراسری --json پاکت اعتبارسنجی را برمی‌گرداند. هیچ گزینه --allow-errors برای check وجود ندارد.

پرس‌وجوها، فهرست‌ها و گزارش‌ها در یک ترمینال تعاملی هشدار می‌دهند و نتایج جزئی برمی‌گردانند. گزینه سراسری --strict، --json، --no-input، CI صحیح، یا stdin غیرترمینالی خواندن را سخت‌گیرانه می‌کند. گزینه --allow-errors آن‌ها به‌صراحت نتایج جزئی را مجاز می‌کند.

قالب‌بندی فایل‌ها را می‌پذیرد یا یک پوشه را به‌صورت بازگشتی جست‌وجو می‌کند. در بسته منتشرشده 0.2.0، یک مسیر الزامی است با وجود پیش‌فرض stdin که در راهنما نمایش داده شده. گزینه سراسری --file هدف قالب‌بندی را انتخاب نمی‌کند.

حالت قالب‌بندیمی‌نویسد؟رفتار خروج
bea format PATHمتن قالب‌بندی‌شده به stdout؛ منبع بدون تغییر0 پس از موفقیت
bea format -i PATHمنبع را بازنویسی می‌کند0 پس از موفقیت
bea format PATH -o formatted.beanفایل خروجی نام‌گذاری‌شده را می‌نویسد0 پس از موفقیت
bea format PATH --dry-runهیچ تغییر فایلی0 حتی وقتی قالب‌بندی لازم است
bea format PATH --checkهیچ تغییر فایلی1 وقتی قالب‌بندی لازم است؛ 0 وقتی پاک است

قالب‌بندی متن را هم‌تراز می‌کند؛ نحو دفتر کل یا حسابداری را اعتبارسنجی نمی‌کند. bea check را جداگانه اجرا کنید. با گزینه سراسری --json، -i، -o FILE، --check یا --dry-run را انتخاب کنید تا stdout بتواند پاکت را حمل کند. stdout را روی فایل ورودی تغییر مسیر ندهید: برای بازنویسی آن از -i استفاده کنید.

bea query "BQL" یک پرس‌وجوی بیکانت را اجرا می‌کند. حذف BQL پرس‌وجوها را از stdin می‌خواند یا وقتی stdin یک ترمینال است پوسته را باز می‌کند. برای بستن پوسته از .exit، exit یا quit استفاده کنید. جدول پیش‌فرض BQL یک سطر در هر ثبت دارد. جداول پرس‌وجو دقت را حفظ می‌کنند.

گزینه پرس‌وجورفتار
--format / -f csvصادرات CSV به‌جای جدول متنی
--output / -o FILEنوشتن نتیجه در یک فایل
--numberify / -mتقسیم مقادیر موجودی متنی یا CSV به ستون‌های عددی به‌ازای هر ارز
--no-errors / -qپنهان‌کردن تشخیص‌های بارگذار؛ نتایج جزئی را مجاز نمی‌کند
--source URIاستفاده از یک URI منبع Beanquery بومی

دفتر کل را پیش از دستور انتخاب کنید، برای مثال bea --file main.bean query -f csv -o balances.csv "SELECT account, sum(position) GROUP BY account". گزینه سراسری --json از پاکت محصول با data.rows و data.columns استفاده می‌کند؛ این از رندر CSV متمایز است. در نسخه منتشرشده 0.2.0، از تغییر مسیر پوسته برای ذخیره JSON استفاده کنید، مانند bea --json query "SELECT account, sum(position) GROUP BY account" > result.json: گزینه‌های -o و -m پرس‌وجو در آن نسخه برای JSON اعمال نمی‌شوند.

ابزارهای بومی و ویژگی‌های اختیاری​

bea doctor context main.bean 42 زمینه تراکنش در خط 42 را نشان می‌دهد. bea doctor --help دیگر دستورات تشخیصی را فهرست می‌کند. bea example -o example.bean یک تاریخچه نمونه می‌سازد. bea treeify accounts.txt نام‌های سلسله‌مراتبی را از یک فایل متنی نمایش می‌دهد؛ برای خواندن stdin فایل را حذف کنید. این دستورات آرگومان‌های بومی را ارسال می‌کنند. مثال‌های بالا آن آرگومان‌ها را به‌صراحت نام می‌برند.

ابزارهای اختیاری را یک بار فعال کنید با bea engine enable beanprice برای دریافت نقل‌قول یا bea engine enable beangulp برای جریان‌های کاری واردکننده. فعال‌سازی به دسترسی شبکه نیاز دارد؛ Beangulp همچنین به کتابخانه سیستمی libmagic نیاز دارد. برای بررسی دسترس‌پذیری از bea engine status استفاده کنید. bea price --help و bea ingest --help رابط‌های خود را توصیف می‌کنند. bea import --csv و bea add price به هیچ‌کدام از این قابلیت‌های اختیاری نیاز ندارند.

شامل‌های قیمت مدیریت‌شده​

قیمت‌های زنده یک جریان کاری شامل مدیریت‌شده جداگانه است. دفترهای کل میزبانی‌شده URLهای قیمت پشتیبانی‌شده را حل می‌کنند؛ نسخه‌های سازگار bea همچنین شامل‌های مدیریت‌شده و صادرات قیمت محلی را پشتیبانی می‌کنند. اگر نسخه نصب‌شده شما این دستورات را تشخیص نمی‌دهد، راهنمای قیمت مدیریت‌شده مخصوص نسخه را بررسی کنید.

دستورهدف
bea price statusبررسی تازگی، بازنگری، زمان مشاهده و خطاها برای هر منبع
bea price refreshحل فیدها اکنون و گزارش اینکه کدام منابع تغییر کرده‌اند
bea --offline balanceخواندن قیمت‌های مدیریت‌شده فقط از حافظه نهان محلی
bea --strict-prices checkرد بارگذاری با قیمت‌های مدیریت‌شده کهنه یا در دسترس نبودن
bea price export --output auditصادرات یک دفتر کل خودکفا با فایل‌های قیمت محلی برای ابزارهای بالادستی

CLI URLهای مدیریت‌شده در فهرست مجاز را بدون ارسال اعتبارنامه حل می‌کند و تغییر مسیرها را رد می‌کند. بنابراین فیدی که به یک ورود میزبانی‌شده تغییر مسیر می‌دهد برای یک دریافت محلی تازه در دسترس نیست؛ ورود به وب‌سایت درخواست قیمت CLI را احراز هویت نمی‌کند. price status را برای خطاهای منبع بررسی کنید. در صورت لزوم از داده‌های حافظه نهان، یک فید پشتیبانی‌شده قابل دسترس، یا قیمت‌های محلی تاریخ‌دار استفاده کنید.

price export فایل‌های فید را زیر prices/ می‌نویسد و شامل‌ها را به مسیرهای نسبی محلی بازنویسی می‌کند. Beancount، Fava و Beanquery بالادستی می‌توانند آن نسخه صادرشده را بارگذاری کنند. یک منبع در دسترس نبودن، صادرات را رد می‌کند مگر اینکه --allow-errors استفاده شود، که می‌تواند نشانگر منبع آن را بدون قیمت رها کند.

قیمت تاریخ‌دار خود شما برای همان تاریخ و جفت، قیمت مدیریت‌شده را بازنویسی می‌کند. ورودی‌های فید فقط‌خواندنی هستند. تازه‌سازی‌های ناموفق یک بازنگری معتبرشده قبلی را حفظ می‌کنند، که ممکن است کهنه باشد. آرگومان‌های دیگر bea price هنوز به Beanprice ارسال می‌شوند؛ اگر یک فایل کار نقل‌قول status نام دارد، ./status را ارسال کنید تا آن را از زیردستور تشخیص دهید.

Homebrew هم CLI و هم موتور مدیریت‌شده آن را نصب می‌کند. با PyPI، اولین دستور پشتیبانی‌شده توسط موتور وابستگی‌های پین‌شده را دانلود می‌کند؛ uv را روی PATH نگه دارید و برای آن اجرای اول دسترسی شبکه را مجاز کنید. دستورات محلی بعدی موتور را به‌صورت آفلاین دوباره استفاده می‌کنند. مشتریان فقط beancount-io را نصب می‌کنند، بدون بسته Beancount جداگانه یا اسکریپت‌های کنسول بومی برای مدیریت.

گزارش‌های مالی​

گزارشخروجی
bea report overviewدارایی‌ها، بدهی‌ها، درآمد، هزینه‌ها، ارزش خالص و سری‌های بازه‌ای
bea report income-statementدرخت‌های درآمد/هزینه، سود خالص و سطرهای دوره
bea report balance-sheetدرخت‌های دارایی/بدهی/سرمایه و تطبیق مشتق‌شده
bea report trial-balanceموجودی حساب‌ها

همه گزارش‌ها --conversion / -x، --time / -t، --account / -a و --allow-errors را می‌پذیرند. همه به‌جز تراز آزمایشی همچنین --interval / -i را می‌پذیرند: پیش‌فرض monthly، یا quarterly، yearly، weekly یا daily.

bea balance [ACCOUNT...] زیردرخت‌های موجودی را برای حساب‌های منطبق با زیررشته‌های بدون حساسیت به بزرگی و کوچکی حروف چاپ می‌کند، یا وقتی هیچ‌کدام را نام نبرید کل دفتر کل را. --conversion / -x، --time / -t و --allow-errors را می‌پذیرد و هیچ گزینه بازه یا حساب نمی‌گیرد.

فیلترهای زمان شامل یک سال، ماه، تاریخ، فصل، هفته یا محدوده است، مانند 2026، 2026-08، 2026-08-31، 2026-Q3، 2026-W32 یا "2026-01 - 2026-08". دوره‌های نسبی شامل year، quarter، month، week، day و افست‌هایی مانند month-1 هستند. فیلترهای حساب هر ثبت یک تراکنش منطبق را حفظ می‌کنند.

تبدیل به‌طور پیش‌فرض به ارز عملیاتی منحصربه‌فرد دفتر کل است. در غیر این صورت، پیش‌فرض units است که کالاها را جدا نگه می‌دارد. at_cost از هزینه‌های تحصیل استفاده می‌کند. at_value از ارزش‌های بازار با بازگشت به هزینه استفاده می‌کند.

یک تبدیل ارز صریح به قیمت‌ها در یا پیش از هر تاریخ ارزش‌گذاری نیاز دارد، شامل تاریخ‌های بازه. یک خطای قیمت گمشده شکاف واقعی را نام می‌برد، مانند No EUR → USD price on or before 2026-01-31. یک نقل‌قول بعدی نمی‌تواند شکاف قبلی را پر کند. یک قیمت مناسب از نظر تاریخی اضافه کنید، از --conversion units استفاده کنید، یا --allow-errors را برای بررسی مقادیر جزئی انتخاب کنید.

گزارش‌های جزئی ارزهای منبع را حفظ می‌کنند و مجموع‌های ترکیبی را در دسترس نبودن علامت می‌زنند. JSON شامل valuation: "partial"، missing_prices و missing_price_dates است. مجموع‌های سود خالص/ارزش خالص تأثیرپذیرفته در ارز درخواستی null هستند.

درآمد، بدهی‌ها و سرمایه معمولاً از علائم منفی بیکانت استفاده می‌کنند. سود خالص -(income + expenses) است، برای سود مثبت. همان قرارداد برای سطرهای دوره صورت درآمد اعمال می‌شود. تطبیق ترازنامه برای گزارش مشتق می‌شود؛ هیچ بخشنامه‌ای نمی‌نویسد. equity_reconciled مشخص می‌کند که آیا تطبیق کامل در دسترس است.

JSON گزارش همچنین دوره، تاریخ پایان انحصاری، تاریخ از-تا، تبدیل، فیلتر حساب و وضعیت اعتبارسنجی دفتر کل را مشخص می‌کند. پیش از مقایسه مجموع‌ها آن فیلدها را بررسی کنید.

کمک اختیاری هوش مصنوعی​

bea ask هم به افزونه ask و هم به اعتبارنامه‌های Beancount.io از bea cloud login یا BEA_TOKEN نیاز دارد. نصب پیش‌فرض Homebrew وابستگی‌های هوش مصنوعی را حذف می‌کند. کاربران Homebrew می‌توانند اجرا کنند:

bea cloud login
uvx --from 'beancount-io[ask]' bea ask "What did I spend last month?" --print

برای نصب uv، beancount-io[ask] را نصب کنید و bea ask را مستقیماً اجرا کنید. --print / -p یک بار پاسخ می‌دهد و خارج می‌شود. در غیر این صورت، یک جلسه ترمینال تعاملی است و یک پرسش اختیاری ورودی آن را پیش‌پر می‌کند. استفاده غیرتعاملی به یک پرسش نیاز دارد. حالت JSON پشتیبانی نمی‌شود.

پرس‌وجوها به‌صورت محلی اجرا می‌شوند. پرسش‌ها، زمینه مهارت و نتایج ابزار به سرویس هوش مصنوعی میزبانی‌شده Beancount.io می‌روند. نوشتن‌های تعاملی پیش‌نمایش، تأیید، اعتبارسنجی و به‌صورت اتمی نوشته می‌شوند. --into را می‌پذیرند. گزینه سراسری --yes مجوز نوشتن هوش مصنوعی نمی‌دهد. حالت تک‌پاسخی نوشتن‌های پیشنهادی را اعمال نمی‌کند.

Ask فایل NAME/SKILL.md را از .agents/skills/ در پوشه کاری و از skills/ در پوشه پیکربندی کاربر می‌خواند. تعاریف پروژه بر اساس نام برنده می‌شوند. هر فایل به فیلدهای YAML name و description نیاز دارد. دستورات کامل در صورت نیاز بارگذاری می‌شوند. برای چیدمان فایل و یک مثال کاربردی، گسترش bea ask با مهارت‌ها را ببینید.

دفاتر حساب میزبانی شده​

دستورگزینه‌ها و رفتار
bea cloud loginورود تعاملی مرورگر/دستگاه
bea cloud logoutتلاش برای خروج از راه دور و پاک‌کردن اعتبارنامه‌های ذخیره‌شده
bea cloud statusحساب، منبع اعتبارنامه و انقضا
bea cloud ledger list--page پیش‌فرض 1؛ --limit پیش‌فرض 50، حداکثر API 100
bea cloud ledger show OWNER/NAMEبررسی یک دفتر کل میزبانی‌شده
bea cloud ledger create NAME--description / -d، --private / --public؛ پیش‌فرض خصوصی
bea cloud ledger clone OWNER/NAMEکلون SSH؛ --dir PATH اختیاری
bea cloud ledger delete OWNER/NAMEحذف دائمی؛ تأیید یا --yes سراسری الزامی است

با گزینه سراسری --json، bea cloud status، bea cloud ledger list، bea cloud ledger show، bea cloud ledger create و bea cloud ledger delete پاکت استاندارد را منتشر می‌کنند. ورود نیاز به تعامل دارد؛ خروج و کلون موفق یک شیء موفقیت JSON برنمی‌گردانند.

ایجاد همچنین --clone و --dir را می‌پذیرد. برای کلون کردن دسترسی Git و SSH الزامی است. اگر کلون پس از ایجاد ناموفق باشد، دفتر کل میزبانی‌شده هنوز وجود دارد. دستورات محلی دفتر کل شما را به‌طور خودکار بارگذاری نمی‌کنند. هیچ گزینه سراسری --ledger وجود ندارد.

JSON و کدهای خروج​

گزینه سراسری --json نتایج موفق را روی stdout می‌گذارد:

{
  "bea": "0.2.0",
  "target": { "file": "/home/alice/my-books/main.bean" },
  "data": [],
  "truncated": false,
  "limit": 50
}

bea نسخه نصب‌شده است؛ data به دستور بستگی دارد. اهداف یک فایل، پوشه، سرور یا بدون هدف را مشخص می‌کنند. نوشتن‌های شامل‌شده همچنین into را مشخص می‌کنند. مبالغ اعشاری و تاریخ‌ها از رشته استفاده می‌کنند. فهرست‌های محدود شامل limit و truncated هستند.

شکست‌ها {"error":{"category":"validation","message":"…","exit_code":1}} را در stderr می‌نویسند. خطا همچنین می‌تواند شامل details، result، یک request_id پشتیبان و یک traceback با --debug باشد.

کددستهمعنا
0—موفقیت، شامل پیش‌نمایش‌ها و نادیده‌گیری‌های عمدی تکراری‌ها
1validationخطای دفتر کل/طرح‌واره، شکست بررسی قالب‌بندی، یا سایر شکست‌های زمان اجرا
2usageآرگومان‌های نامعتبر، هدف/ورودی گمشده، یا وابستگی‌های اختیاری گمشده
3authشکست احراز هویت یا مجوز
4conflictویرایش همزمان، بازبینی واردکردن الزامی، هدف init موجود، یا نتیجه نوشتن راه دور نامشخص

پیش از تلاش مجدد برای یک جهش، error.result را بررسی کنید. یک دسته جزئی می‌تواند سطرهای پذیرفته‌شده را بنویسد، قالب‌بندی بازگشتی می‌تواند فایل‌های معتبر را تغییر دهد، و ایجاد-و-کلون می‌تواند یک دفتر کل میزبانی‌شده را پیش از خروج با کد غیرصفر ایجاد کند. برای اسکریپتی که این پاکت را با jq می‌خواند و بر اساس این کدها شاخه‌بندی می‌کند، خودکارسازی حسابداری با bea را ببینید.

اعلان‌های CLI با --no-input، حالت JSON، stdin غیرترمینالی، یا CI صحیح غیرفعال می‌شوند. حذف ابری هنوز به --yes صریح نیاز دارد. واردکردن‌ها وقتی تطبیق‌ها نیاز به بازبینی دارند به یک تصمیم صریح تکراری نیاز دارند.

استثناهای خروجی: doctor، example، treeify، فراخوانی‌های price ارسالی به Beanprice و ingest خروجی و وضعیت خروج بومی را حفظ می‌کنند، حتی با --json سراسری؛ پاکت و دسته‌های خروج بالا آن نتایج ارسالی را توصیف نمی‌کنند. Ask JSON را رد می‌کند؛ ورود ابری به تعامل نیاز دارد؛ خروج و کلون موفق ابری هیچ شیء موفقیت JSON برنمی‌گردانند. راهنما، نسخه و تکمیل خروجی متنی را حفظ می‌کنند. upgrade می‌تواند خروجی مدیر بسته خود را به stderr استریم کند، حتی در حالت JSON.

تنظیمات، به‌روزرسانی‌ها و حالت ذخیره‌شده​

متغیر محیطیهدف
BEA_FILEدفتر کل ریشه پیش‌فرض پس از --file
BEA_CONFIG_DIRبازنویسی پوشه پیکربندی کاربر
XDG_CONFIG_HOMEدر غیر این صورت از $XDG_CONFIG_HOME/bea استفاده می‌کند، با بازگشت به ~/.config/bea
XDG_DATA_HOMEپایه موتور PyPI مدیریت‌شده؛ در غیر این صورت ~/.local/share/bea/engine/
XDG_CACHE_HOMEپایه پوشه حافظه نهان؛ در غیر این صورت ~/.cache/bea
BEA_TOKENبازنویسی اعتبارنامه میزبانی‌شده؛ بر اعتبارنامه‌های ذخیره‌شده اولویت دارد و ذخیره نمی‌شود
BEA_API_URLپایه API؛ پیش‌فرض https://api.v3.beancount.io
BEA_DASHBOARD_URLپایه ورود مرورگر؛ پیش‌فرض https://beancount.io
BEA_NO_UPDATE_NOTIFIERغیرفعال‌کردن اعلان‌های به‌روزرسانی غیرفعال وقتی صحیح است
MANAGED_PRICE_ORIGINSمبدأهای مجاز جدا شده با کاما؛ پیش‌فرض https://beancount.io؛ خالی شامل‌های مدیریت‌شده را غیرفعال می‌کند
MANAGED_PRICE_OFFLINEصحیح فقط از قیمت‌های مدیریت‌شده حافظه نهان استفاده می‌کند، مانند --offline
MANAGED_PRICE_STRICTصحیح منابع مدیریت‌شده کهنه یا در دسترس نبودن را رد می‌کند، مانند --strict-prices
CIغیرفعال‌کردن اعلان‌های CLI و اعلان‌های به‌روزرسانی غیرفعال وقتی صحیح است

مقادیر صحیح 1، true، yes و on هستند، بدون حساسیت به بزرگی و کوچکی حروف و فاصله‌های اطراف. وضعیت پیکربندی شامل اعتبارنامه‌ها، تاریخچه پرسش Ask، مهارت‌های کاربر، مسیرهای واردکننده به‌خاطرسپرده‌شده و حافظه‌های نهان بررسی به‌روزرسانی است. قفل‌های نوشتن زیر locks/ پوشه حافظه نهان، بیرون از پوشه دفتر کل شما قرار دارند.

bea upgrade --check نسخه‌ها و روش نصب را بدون ارتقا گزارش می‌دهد. bea upgrade دستور brew upgrade bea، uv tool upgrade beancount-io یا pipx upgrade beancount-io را فراخوانی می‌کند. نصب‌های قابل ویرایش راهنمای به‌روزرسانی دستی دریافت می‌کنند. بررسی‌های غیرفعال حداکثر یک بار در روز در نسخه‌های نصب‌شده تعاملی اجرا می‌شوند؛ upgrade --check صریح حتی وقتی اعلان‌دهنده غیرفعال است همچنان اجرا می‌شود.

با مدیر منطبق حذف نصب کنید: brew uninstall bea، uv tool uninstall beancount-io یا pipx uninstall beancount-io. فایل‌های دفتر کل و پیکربندی کاربر شما باقی می‌مانند.

اصلاحات معمول​

نشانهگام بعدی
دفتر کل یافت نشد--file PATH را انتخاب کنید، وارد پوشه دفتر کل شوید، یا برای دفترهای جدید از bea init استفاده کنید
یک پرچم سراسری می‌گوید «No such option»آن را پیش از دستور قرار دهید، مانند bea --file main.bean check
یک حساب ناشناخته استآن را با bea add open --date YYYY-MM-DD --account ACCOUNT باز کنید
یک حساب غیرفعال استتاریخ‌های open/close ذکرشده را بخوانید؛ تاریخ تراکنش یا تاریخچه حساب را اصلاح کنید
یک pad استفاده نشده استتأییدیه موجودی بعدی آن را تکمیل کنید؛ برای یک جفت اتمی از add balance --pad-from استفاده کنید
تبدیل ارز ناقص استقیمت‌هایی که تاریخ‌های نام‌برده‌شده در خطا را پوشش می‌دهند اضافه کنید، یا units را بررسی کنید
یک سند یافت نمی‌شودمسیر آن را در کنار فایل بخشنامه حل کنید، شامل مقصد --into
دفتر کل در حین نوشتن تغییر کردمحتوای جدید را بررسی کنید، سپس از یک پیش‌نمایش تازه دوباره تلاش کنید
تشخیص پوسته ناموفق بودیک پوسته مشخص کنید، مانند bea --shell zsh --show-completion

از bea COMMAND --help برای بررسی نسخه نصب‌شده خود استفاده کنید. مرجع مخزن منبع شامل مثال‌های اضافی و تعاریف دقیق مدل بخشنامه است.

منبع: https://beancount.io/fa/docs/bea-cli-reference