مدير سجل الأوامر السحري مع تخزين 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" | البحث عن الأوامر السريعة |
| الأمر | الوصف |
|---|
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
# بدون المفتاح، لا يستطيع الخادم فك تشفير سجلك.
# إذا فقدت المفتاح، فإن سجلك المزامن غير قابل للاستعادة.
# تشغيل خادم 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 | الحد الأقصى لأسطر المعاينة |
# ~/.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" | عرض جداول قاعدة البيانات |
# فتح قاعدة البيانات مباشرة باستخدام 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;"
-
استورد سجلك الحالي أولاً — شغّل atuin import auto فوراً بعد التثبيت للبدء بقاعدة بيانات سجل غنية بدلاً من البدء من الصفر.
-
استخدم وضع البحث الضبابي — عيّن search_mode = "fuzzy" للحصول على أكثر مطابقة مرونة. يمكنك دائماً التبديل إلى أوضاع أخرى بـ Ctrl+R أثناء البحث.
-
فلتر الأسرار من السجل — أضف أنماطاً إلى history_filter في الإعدادات لمنع تسجيل الأوامر التي تحتوي رموز مصادقة وكلمات مرور ومفاتيح API.
-
احفظ مفتاح التشفير — شغّل atuin key وخزّن المفتاح في مدير كلمات المرور. إذا فقدته، فإن السجل المزامن من الأجهزة الأخرى غير قابل للاستعادة نهائياً.
-
أعد المزامنة بين الأجهزة — المزامنة المشفرة هي الميزة القاتلة في Atuin. سجّل حساباً وأعد جميع أجهزتك للحصول على سجل موحد في كل مكان.
-
استخدم البحث المحدد بالمجلد — اضغط Alt+4 أثناء البحث للتصفية حسب الأوامر المنفذة في المجلد الحالي — مثالي لسير عمل المشاريع.
-
خصص سهم الأعلى — عيّن filter_mode_shell_up_key_binding = "host" لجعل سهم الأعلى يعرض الأوامر من الجهاز الحالي فقط، بينما يبحث Ctrl+R عالمياً.
-
أعد الخادم المستضاف ذاتياً — إذا كنت تتعامل مع بيانات حساسة، شغّل خادم Atuin خاصاً بك باستخدام Docker للتحكم الكامل في سجلك المزامن.
-
راجع الإحصائيات بانتظام — شغّل atuin stats دورياً لفهم أنماطك وتحديد الأوامر التي يمكنك إنشاء اختصارات لها لزيادة الكفاءة.
-
استخدم النمط المضغوط للطرفيات الصغيرة — عيّن style = "compact" إذا كنت تعمل في طرفيات مقسمة بمساحة عمودية محدودة.