Ledger هي أداة سطر أوامر قوية للمحاسبة ذات القيد المزدوج بالنص العادي. من خلال تتبع أموالك في ملفات سجل نصية قابلة للقراءة البشرية، يتيح لك Ledger حساب الأرصدة وإنشاء سجلات المعاملات وتتبع الميزانيات وإنتاج تقارير مالية مفصلة.
المفاهيم الأساسية والبدء
معادلة القيد المزدوج في المحاسبة
في Ledger، تتكون كل معاملة من قيدين أو أكثر يجب أن يكون مجموعها متوازنا بدقة مع الصفر:
$$\text{Assets} + \text{Expenses} = \text{Liabilities} + \text{Equity} + \text{Income}$$
Assets:Checking -$600.00 ; Asset decreases (credit)
Expenses:Rent $600.00 ; Expense increases (debit)
---------------------------------
الرصيد الصافي = $0.00
نظرة عامة على الأوامر الأساسية
| الأمر | الشكل الكامل | الوصف |
|---|---|---|
ledger bal |
ledger balance |
حساب وعرض الأرصدة الحالية عبر الحسابات |
ledger reg |
ledger register |
سرد قيود المعاملات بترتيب زمني مع الأرصدة الجارية |
ledger print |
ledger print |
تنسيق وطباعة قيود السجل الأصلية للنسخ الاحتياطي أو التنسيق |
ledger csv |
ledger csv |
تصدير المعاملات المصفاة بتنسيق CSV القياسي |
ledger payees |
ledger payees |
سرد جميع المستفيدين المميزين في السجل |
ledger accounts |
ledger accounts |
سرد جميع أسماء الحسابات والتسلسلات الهرمية المحددة |
مواصفات بناء جملة السجل (Journal)
هيكل المعاملة الأساسي
2024/01/03 * (CODE#001) Landlord John ; tag:rent
Expenses:Rent:Apartment $600.00
Assets:Checking:MainBank
- تفصيل سطر العنوان::
2024/01/03 * (CODE#001) Landlord John ; tag:rent
^ ^ ^ ^ ^
Date State Code/Check# Payee/Description Comment & Tags
- الحذف التلقائي: يمكن لـ Ledger استنتاج مبلغ أحد القيود تلقائيا بحيث تتساوى الأصول والخصوم.
رموز حالة المعاملة
| الرمز | الحالة | الوصف والاستخدام النموذجي |
|---|---|---|
| (None) | غير مسواة | معاملات جديدة لم تتم مراجعتها بعد مقابل الكشوف المصرفية |
! |
معلقة | معاملات بدأت وفي انتظار التسوية (مثل تفويضات بطاقات الائتمان المعلقة) |
* |
مسواة | معاملات تمت تسويتها وتأكيدها في الحساب المصرفي |
التواريخ المساعدة
يتيح استخدام علامة التساوي فصل تاريخ المعاملة عن تاريخ التسوية الفعلي:
; Format: EventDate=SettlementDate
2024/01/01=2024/01/15 Consulting Client A
Assets:AccountsReceivable $1,000.00
Income:Consulting
تأكيدات وتعيينات الرصيد
- تأكيد الرصيد (= $VALUE): يتحقق من أن الرصيد التراكمي للحساب يطابق القيمة المحددة بعد هذا القيد.
- تعيين الرصيد (= $VALUE): يوجه Ledger لحساب الفرق المطلوب للوصول بالرصيد إلى القيمة المحددة.
; 1. Balance Assertion
2024/01/01 * Restaurant
Expenses:Food:Dinner $20.00
Assets:Cash -$20.00 = $500.00
; 2. Balance Assignment
2024/01/01 * Opening Balance
Assets:Cash = $500.00
Equity:OpeningBalances
Account Declarations & Validation
account Expenses:Food
note Dining and grocery expenses
alias food
payee ^(KFC|McDonalds|Starbucks)$
check commodity == "$"
assert commodity == "$"
default
account Assets:Cash
alias cash
Commodities & Currencies
; 1. Per-unit cost (@ symbol)
2024/05/31 * Farmers Market
Expenses:Food:Apples 10 APPLE @ $1.50
Assets:Checking -$15.00
; 2. Total cost (@@ symbol)
2024/06/01 * Brokerage
Assets:Investments:AAPL 5 AAPL @@ $950.00
Assets:Checking -$950.00
; 3. Explicit currency price history
P 2024/06/01 00:00:00 EUR $1.0850
Directives
; Global default currency
D $1,000.00
; Set default year
Y2024
Including Sub-Journals
include accounts.journal
include 2023.journal
include 2024.journal
account Business
include company_expenses.journal
end
Budgeting
~ Monthly
Expenses:Rent $600.00
Expenses:Food $400.00
Expenses:Utilities $100.00
Expenses $100.00
Assets
~ Yearly
Expenses:Insurance $1,200.00
Assets
ledger bal --budget Expensesledger bal --unbudgeted Expenses
تعبيرات الفترات الزمنية
يوفر Ledger تصفية زمنية باللغة الطبيعية عبر خيار -p أو --period.
Syntax Structure
[INTERVAL] [BEGIN] [END]
الفترات المتكررة
| الفترة | المعنى |
|---|---|
every day / daily |
Daily |
every week / weekly |
Weekly |
biweekly |
Every two weeks |
every month / monthly |
Monthly |
every quarter / quarterly |
Quarterly |
every year / yearly |
Yearly |
every N days/weeks/months |
Custom interval |
Period Filtering Examples
ledger reg -p "since last month"
ledger reg Expenses -p "every month from 2024 to 2024/12/31" -M
ledger bal -p "from 2024/01/01 until this month"
ledger bal Expenses:Food -p "last quarter"
تعبيرات الاستعلام والتصفية
| Syntax | الهدف | مثال | الوصف |
|---|---|---|---|
Account |
Account name | ledger bal Assets |
Substring/regex match |
^Account |
Root account | ledger bal ^Expenses |
Accounts starting with Expenses |
@Payee |
Payee name | ledger reg @Starbucks |
Match payee field |
%Tag |
Tag presence | ledger reg %reimburse |
Match tagged transactions |
%Tag=Value |
Tag value | ledger reg %project=alpha |
Match tag key-value pairs |
=Note |
Memo note | ledger reg =taxi |
Match memo text |
#Code |
Transaction code | ledger reg #1042 |
Match check or order number |
المنطق البوليني
ledger reg Expenses:Food and @Starbucks and not dining
ledger bal Rent or Transportation
ledger bal Expenses and not \( Drinks or Food \)
خيارات التصفية الشائعة
| الرمز | الخيار | الوصف |
|---|---|---|
-b DATE |
--begin DATE |
Filter transactions on or after date |
-e DATE |
--end DATE |
Filter transactions before date |
-C |
--cleared |
Only cleared transactions (*) |
-U |
--uncleared |
Only uncleared transactions |
--pending |
--pending |
Only pending transactions (!) |
-R |
--real |
Exclude virtual postings |
-r |
--related |
Show the offsetting balancing postings |
التقارير وتصدير البيانات
-s, --subtotal # Calculate subtotals for grouped postings
-n, --collapse # Collapse multi-line postings into one line
--flat # Render account tree as a flat list
--tail N # Limit output to last N lines
--invert # Invert numerical signs (display expenses as positive)
-X CUR, --exchange CUR # Convert foreign holdings to specified currency at latest rate
# Export all entries to CSV
ledger csv > report.csv
# Export this month's dining expenses
ledger csv Expenses:Food -p "this month"
أمثلة عملية
# Current assets vs liabilities
ledger bal ^Assets ^Liabilities
# Net revenue this month with positive expenses
ledger bal ^Expenses ^Income -p "this month" --invert
# Top 10 largest expenses
ledger reg Expenses -S amount --tail 10
# Monthly average daily expenses
ledger reg Expenses -M -n --average