تخطَّ إلى المحتوى

Atuin

مدير سجل الأوامر السحري مع تخزين SQLite ومزامنة مشفرة وبحث نصي كامل عبر الأجهزة والجلسات.

الأمرالوصف
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | shالتثبيت عبر السكريبت الرسمي
brew install atuinالتثبيت على macOS باستخدام Homebrew
cargo install atuinالتثبيت من crates.io
pacman -S atuinالتثبيت على Arch Linux
apt install atuinالتثبيت على Debian/Ubuntu (إن كان متاحاً)
dnf install atuinالتثبيت على Fedora
nix-env -i atuinالتثبيت على NixOS
scoop install atuinالتثبيت على Windows باستخدام Scoop
atuin --versionعرض الإصدار المثبت
الأمرالوصف
atuin init bash >> ~/.bashrcالتهيئة لـ Bash
atuin init zsh >> ~/.zshrcالتهيئة لـ Zsh
atuin init fish >> ~/.config/fish/config.fishالتهيئة لـ Fish
atuin init nushellعرض أوامر تهيئة Nushell
# Bash — أضف إلى ~/.bashrc
eval "$(atuin init bash)"

# Zsh — أضف إلى ~/.zshrc
eval "$(atuin init zsh)"

# Fish — أضف إلى ~/.config/fish/config.fish
atuin init fish | source

# Zsh مع تعطيل سهم الأعلى (استخدم Ctrl+R فقط)
eval "$(atuin init zsh --disable-up-arrow)"
الأمرالوصف
Ctrl + Rفتح البحث التفاعلي في السجل
اكتب استعلام البحث بعد Ctrl + Rتصفية السجل تفاعلياً
Enterتنفيذ الأمر المحدد
Tabإدراج الأمر دون تنفيذه
Ctrl + R مرة أخرىالتنقل بين أوضاع البحث
↑ / ↓التنقل في نتائج البحث
Escapeإلغاء البحث
Ctrl + Dحذف المدخل المحدد من السجل
Alt + 1-4تبديل وضع التصفية (عام/مضيف/جلسة/مجلد)
الأمرالوصف
atuin history listعرض سجل الأوامر الأخيرة
atuin history list --cmd-onlyعرض الأوامر فقط (بدون بيانات وصفية)
atuin history list --format "{time} {command}"تنسيق مخصص للمخرجات
atuin history list --reverseعرض الأقدم أولاً
atuin history list -n 50عرض آخر 50 أمراً
atuin history countعرض العدد الإجمالي للسجل
atuin history lastعرض أحدث أمر
يتنقل Atuin بين 4 أوضاع بحث باستخدام Ctrl+R:

1. ضبابي (Fuzzy)    — يطابق الأحرف بأي ترتيب (مثل fzf)
2. بادئة (Prefix)   — يطابق من بداية الأمر
3. نص كامل (Fulltext) — يطابق السلاسل الفرعية في أي مكان
4. تصفح (Skim)     — مطابقة ضبابية بأسلوب Skim

بدّل الأوضاع أثناء البحث بـ Ctrl+R، أو عيّن وضعاً
افتراضياً في ملف الإعدادات.
الأمرالوصف
atuin search queryالبحث في السجل من سطر الأوامر
atuin search "git commit"البحث عن أمر محدد
atuin search --cwdالبحث في سجل المجلد الحالي فقط
atuin search --sessionالبحث في سجل الجلسة الحالية فقط
atuin search --globalالبحث في كل السجل عبر الأجهزة
atuin search --interactiveفتح واجهة البحث التفاعلية
الأمرالوصف
atuin search --after "2024-01-01"البحث بعد تاريخ محدد
atuin search --before "yesterday"البحث قبل وقت محدد
atuin search --after "1 hour ago"البحث خلال الساعة الأخيرة
atuin search --after "3 days ago"البحث خلال آخر 3 أيام
atuin search --after "last week"البحث خلال الأسبوع الماضي
atuin search --before "2024-06-01" --after "2024-01-01"نطاق زمني
الأمرالوصف
atuin search --exit 0البحث عن الأوامر الناجحة فقط
atuin search --exit 1البحث عن الأوامر الفاشلة فقط
atuin search --exit 127البحث عن أخطاء “الأمر غير موجود”
atuin search --limit 50تحديد عدد النتائج
الأمرالوصف
atuin search --cwd /path/to/dirالتصفية حسب مجلد عمل محدد
atuin search --hostname myserverالتصفية حسب اسم المضيف
atuin search --session SESSION_IDالتصفية حسب معرف الجلسة
atuin search --duration ">5s"التصفية حسب مدة التنفيذ
atuin search --duration "<100ms"البحث عن الأوامر السريعة

تنسيقات المخرجات المخصصة

Section titled “تنسيقات المخرجات المخصصة”
الأمرالوصف
atuin search --format "{time} {command}"عرض الوقت والأمر
atuin search --format "{duration} {command}"عرض المدة والأمر
atuin search --format "{host} {command}"عرض اسم المضيف والأمر
atuin search --format "{user} {directory} {command}"السياق الكامل
# البحث عن جميع أوامر docker التي فشلت
atuin search docker --exit 1

# البحث عن عمليات git من الأسبوع الماضي
atuin search git --after "1 week ago"

# البحث عن الأوامر طويلة التنفيذ (أكثر من 30 ثانية)
atuin search --duration ">30s"

# البحث عن الأوامر المنفذة في مشروع محدد
atuin search --cwd ~/projects/myapp

# البحث عن الأوامر من حاسوب العمل
atuin search --hostname work-mbp
الأمرالوصف
atuin register -u username -e email -p passwordإنشاء حساب مزامنة
atuin login -u username -p passwordتسجيل الدخول لحساب المزامنة
atuin login -u username -p password -k KEYتسجيل الدخول بمفتاح التشفير
atuin logoutتسجيل الخروج من حساب المزامنة
atuin accountعرض حالة الحساب
atuin account deleteحذف حساب المزامنة
atuin keyعرض مفتاح التشفير (احفظه!)
atuin statusعرض حالة المزامنة
الأمرالوصف
atuin syncمزامنة السجل مع الخادم
atuin sync -fفرض مزامنة كاملة
atuin sync --forceفرض إعادة رفع كل السجل
جميع البيانات مشفرة من طرف إلى طرفالخادم لا يرى السجل بنص واضح أبداً
# الإعداد لأول مرة على الجهاز 1
atuin register -u myname -e me@example.com -p mypassword
atuin key  # احفظ هذا المفتاح — ستحتاجه للأجهزة الأخرى
atuin sync

# الإعداد على الجهاز 2
atuin login -u myname -p mypassword -k YOUR_ENCRYPTION_KEY
atuin sync

# يبدو مفتاح التشفير هكذا:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

# بدون المفتاح، لا يستطيع الخادم فك تشفير سجلك.
# إذا فقدت المفتاح، فإن سجلك المزامن غير قابل للاستعادة.

الخادم المستضاف ذاتياً

Section titled “الخادم المستضاف ذاتياً”
# تشغيل خادم Atuin خاص بك
docker run -d \
  --name atuin-server \
  -p 8888:8888 \
  -v atuin-data:/config \
  ghcr.io/atuinsh/atuin:latest \
  server start

# توجيه العميل إلى الخادم المستضاف ذاتياً
# في ~/.config/atuin/config.toml:
# sync_address = "http://your-server:8888"
الأمرالوصف
atuin import autoاكتشاف واستيراد سجل الصدفة تلقائياً
atuin import bashالاستيراد من سجل Bash
atuin import zshالاستيراد من سجل Zsh
atuin import zsh-hist-dbالاستيراد من إضافة zsh hist-db
atuin import fishالاستيراد من سجل Fish
atuin import reshالاستيراد من سجل RESH
atuin import nuالاستيراد من سجل Nushell
atuin import nu-hist-dbالاستيراد من سجل Nushell SQLite
# اكتشاف الصدفة تلقائياً والاستيراد
atuin import auto

# استيراد سجل Zsh تحديداً
atuin import zsh

# التحقق من عدد المدخلات المستوردة
atuin history count

# التحقق من نجاح الاستيراد
atuin search --limit 5
الأمرالوصف
atuin statsعرض إحصائيات السجل
atuin stats --count 20عرض أكثر 20 أمراً استخداماً
atuin stats --period dayإحصائيات اليوم
atuin stats --period weekإحصائيات هذا الأسبوع
atuin stats --period monthإحصائيات هذا الشهر
atuin stats --period allإحصائيات كل الأوقات
atuin history countإجمالي مدخلات السجل
$ atuin stats --count 10
┌─────────┬─────────────────┬───────┐
│ الترتيب │ الأمر           │ العدد │
├─────────┼─────────────────┼───────┤
│ 1       │ git status      │  1847 │
│ 2       │ ls              │  1523 │
│ 3       │ cd              │  1201 │
│ 4       │ git diff        │   987 │
│ 5       │ vim             │   842 │
│ 6       │ git add         │   756 │
│ 7       │ docker ps       │   689 │
│ 8       │ npm run         │   534 │
│ 9       │ git commit      │   498 │
│ 10      │ make            │   423 │
└─────────┴─────────────────┴───────┘

إجمالي الأوامر:   45,231
أوامر فريدة:       8,432
الأمرالوصف
~/.config/atuin/config.tomlملف الإعدادات الرئيسي
atuin default-configطباعة الإعدادات الافتراضية
الأمرالوصف
search_mode = "fuzzy"تعيين وضع البحث الضبابي
search_mode = "prefix"تعيين وضع بحث البادئة
search_mode = "fulltext"تعيين وضع البحث النصي الكامل
search_mode = "skim"تعيين وضع البحث الضبابي بأسلوب Skim
filter_mode = "global"البحث في كل السجل افتراضياً
filter_mode = "host"البحث في المضيف الحالي افتراضياً
filter_mode = "session"البحث في الجلسة الحالية افتراضياً
filter_mode = "directory"البحث في المجلد الحالي افتراضياً
filter_mode_shell_up_key_binding = "session"سهم الأعلى يبحث في الجلسة الحالية
الأمرالوصف
style = "compact"استخدام نمط الواجهة المضغوط
style = "full"استخدام نمط الواجهة الكامل
style = "auto"اكتشاف تلقائي حسب الطرفية
inline_height = 40تعيين ارتفاع البحث المضمن
show_preview = trueعرض لوحة معاينة الأوامر
show_help = trueعرض مساعدة اختصارات المفاتيح
show_tabs = trueعرض علامات أوضاع التصفية
max_preview_height = 4الحد الأقصى لأسطر المعاينة

مثال الإعدادات الكاملة

Section titled “مثال الإعدادات الكاملة”
# ~/.config/atuin/config.toml

## إعدادات قاعدة البيانات
db_path = "~/.local/share/atuin/history.db"

## إعدادات البحث
search_mode = "fuzzy"
filter_mode = "global"
filter_mode_shell_up_key_binding = "host"

## إعدادات الواجهة
style = "auto"
inline_height = 40
show_preview = true
show_help = true
show_tabs = true
max_preview_height = 4
invert = false

## إعدادات السجل
update_check = true
sync_frequency = "5m"
sync_address = "https://api.atuin.sh"

## اختصارات المفاتيح (الافتراضية)
# Ctrl+R = بحث
# سهم الأعلى = بحث (ما لم يتم تعطيله)
# Tab = قبول دون تشغيل
# Enter = قبول وتشغيل

## فلتر الأسرار — لا تسجل الأوامر التي تحتوي أسراراً
history_filter = [
  "^export.*TOKEN",
  "^export.*SECRET",
  "^export.*PASSWORD",
  "^export.*KEY",
  ".*AWS_SECRET.*",
]

## تجاهل أوامر محددة
history_filter = [
  "^ls$",
  "^cd$",
  "^pwd$",
  "^exit$",
  "^clear$",
]

## إعدادات المزامنة
sync_frequency = "5m"
# sync_address = "https://api.atuin.sh"  # الخادم الافتراضي
# sync_address = "http://localhost:8888"  # مستضاف ذاتياً
المفتاحالوصف
Ctrl + Rفتح البحث / التنقل بين أوضاع البحث
↑ / ↓التنقل في النتائج
Enterتنفيذ الأمر المحدد
Tabإدراج الأمر دون تنفيذه
Escapeإلغاء البحث
Ctrl + Dحذف مدخل السجل المحدد
Alt + 1التبديل إلى الفلتر العام
Alt + 2التبديل إلى فلتر المضيف
Alt + 3التبديل إلى فلتر الجلسة
Alt + 4التبديل إلى فلتر المجلد
Ctrl + Uمسح استعلام البحث
Ctrl + Wحذف الكلمة السابقة
الأمرالوصف
~/.local/share/atuin/history.dbموقع قاعدة البيانات الافتراضي
قاعدة البيانات بتنسيق SQLiteيمكن الاستعلام بأي أداة SQLite
sqlite3 ~/.local/share/atuin/history.db ".tables"عرض جداول قاعدة البيانات

استعلامات قاعدة البيانات

Section titled “استعلامات قاعدة البيانات”
# فتح قاعدة البيانات مباشرة باستخدام SQLite
sqlite3 ~/.local/share/atuin/history.db

# عد إجمالي المدخلات
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT COUNT(*) FROM history;"

# البحث عن الأوامر الأطول تنفيذاً
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT command, duration FROM history
   ORDER BY duration DESC LIMIT 10;"

# الأوامر حسب المجلد
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT cwd, COUNT(*) as cnt FROM history
   GROUP BY cwd ORDER BY cnt DESC LIMIT 10;"
  1. استورد سجلك الحالي أولاً — شغّل atuin import auto فوراً بعد التثبيت للبدء بقاعدة بيانات سجل غنية بدلاً من البدء من الصفر.

  2. استخدم وضع البحث الضبابي — عيّن search_mode = "fuzzy" للحصول على أكثر مطابقة مرونة. يمكنك دائماً التبديل إلى أوضاع أخرى بـ Ctrl+R أثناء البحث.

  3. فلتر الأسرار من السجل — أضف أنماطاً إلى history_filter في الإعدادات لمنع تسجيل الأوامر التي تحتوي رموز مصادقة وكلمات مرور ومفاتيح API.

  4. احفظ مفتاح التشفير — شغّل atuin key وخزّن المفتاح في مدير كلمات المرور. إذا فقدته، فإن السجل المزامن من الأجهزة الأخرى غير قابل للاستعادة نهائياً.

  5. أعد المزامنة بين الأجهزة — المزامنة المشفرة هي الميزة القاتلة في Atuin. سجّل حساباً وأعد جميع أجهزتك للحصول على سجل موحد في كل مكان.

  6. استخدم البحث المحدد بالمجلد — اضغط Alt+4 أثناء البحث للتصفية حسب الأوامر المنفذة في المجلد الحالي — مثالي لسير عمل المشاريع.

  7. خصص سهم الأعلى — عيّن filter_mode_shell_up_key_binding = "host" لجعل سهم الأعلى يعرض الأوامر من الجهاز الحالي فقط، بينما يبحث Ctrl+R عالمياً.

  8. أعد الخادم المستضاف ذاتياً — إذا كنت تتعامل مع بيانات حساسة، شغّل خادم Atuin خاصاً بك باستخدام Docker للتحكم الكامل في سجلك المزامن.

  9. راجع الإحصائيات بانتظام — شغّل atuin stats دورياً لفهم أنماطك وتحديد الأوامر التي يمكنك إنشاء اختصارات لها لزيادة الكفاءة.

  10. استخدم النمط المضغوط للطرفيات الصغيرة — عيّن style = "compact" إذا كنت تعمل في طرفيات مقسمة بمساحة عمودية محدودة.