اگر از zsh استفاده میکنید یکی از مشکلاتی که ممکن است هراز گاهی با آن روبرو شوید یک فایل تاریخچهی خراب شده است که مانع دسترسی شما به تاریخچه دستورات تایپ شده و اجرای صحیح عملکردها و دستورهایی مانند history
، fc
یا Crtl+R
میشود.
خطایی که با آن مواجه میشوید چیزی شبیه به خط زیر است:
zsh: corrupt history file /home/kiavash/.zsh_history
چه کار کنیم؟
حل این مشکل یک راه حل ساده در ۴قدم دارد،
- به دایرکتوری خانه برگردید،
- فایل تاریخچه را تغییر نام دهید.
- تاریخچه را بازسازی کنید.
cd ~
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
- بعد از چک کردن درستی مراحل، فایل تغییر نام داده شده را هم پاک میکنیم.
rm ~/.zsh_history_bad
ساختن یک اسکریپت
اگر برای شما هم مثل من بیشتر از چندبار این اتفاق افتاده و حوصله تکرار این مراحل را هم ندارید، میتوانید تمام مراحل بالا را در قالب یک اسکریپت ذخیره کنید و یک بار برای همیشه خودتان را راحت کنید.
برای اینکار در دایرکتوری ~/bin
یا هرجای دیگری که برای اجرای اسکریپتهای دستوری در $PATH
خود مشخص کردهاید، یک فایل جدید، با اسمی شبیه به zsh_history_fix
یا هر اسم دیگری که دوست دارید، بسازید و تمام مراحل بالا را در آن ذخیره کنید.
cd ~/bin
touch zsh_history_fix
فایل zsh_history_fix
را با هر ادیتوری که میخواهید باز کنید و چند خط زیر را در آن کپی کنید
#!/usr/bin/env zsh
mv ~/.zsh_history ~/.zsh_history_bad
strings ~/.zsh_history_bad > ~/.zsh_history
fc -R ~/.zsh_history
rm ~/.zsh_history_bad
و در نهایت فایل ساخته شده را قابل اجرا کنید
chmod +x zsh_history_fix
از این به بعد هروقت که لازم داشتید از هر مسیری که هستید، دستور زیر را در خط فرمان تایپ کنید
zsh_history_fix
منبع انگلیسی
https://github.com/kiamazi/kiavash.one/blob/master/content/blog/2020-02-25-zsh-corrupt-history-file.md
میتوانید آنرا ویرایش کنید. البته باید یادآوری کنم که هر ویرایشی قبل از اتشار نیاز به تایید دارد.
این وبلاگ از disqus برای سیستم نظردهی استفاده میکند، اگر فرم نظردادن را نمیبینید احتمالا کسی به جای شما تشخیص داده که این سرویس مناسبتان نیست و آن را از دسترس شما خارج کرده، برای نظردادن در این شرایط از ابزار رفع فیلتر استفاده کنید