اگر از 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
How to fix a corrupt zsh history file
آدرس این یادداشت بر روی وبلاگ شخصی کیاوش
در صورتیکه بعد از خواندن این یادداشت بخواهید به هر شکلی در تکمیلش مشارکت کنید، مثلا آن را اصلاح کنید یا مطلبی به آن اضافه کنید، منبع این یادداشت روی گیتهاب در این آدرس در دسترس است:
https://github.com/kiamazi/kiavash.one/blob/master/content/blog/2020-02-25-zsh-corrupt-history-file.md
میتوانید آنرا ویرایش کنید. البته باید یادآوری کنم که هر ویرایشی قبل از اتشار نهایی نیاز به تایید دارد.