1

Я пошел в магазин, и когда я вернулся, я обнаружил, что забыл подключить свой ноутбук, и он умер от низкого заряда батареи. Когда я перезагрузился, я с удивлением обнаружил, что моя история bash вместо того, чтобы содержать мои команды терминала, теперь выглядела так:

don@don-Dell-PowerbookBook-777w:~$ �$6:�P!^G����^^B)A|E1����t^E���@=(�|0H�^N�s����+�����C�Ώ)p��s�  pn�ǡ!�ǝ\��"^H�n^M^Rs��$u�^[���^S����![�0^R&^R���@��T���v��8^T^N��^ZJ�O�*�Y$:�A�^[6��jٸ�EIl>��^L�ژ���^^^Xw^T^[��/^Q^Aw       ߨ~�>���s"�6d��^\�U%�a^M/p^P��iޠ��\^M^Z^9��^_l�]*�Ų���J͜��^UK�u�  ����N^S���^G5^B^D�p^^^E��4�&�Qi�^U^?�T^T��- 

И когда я запустил gedit .bash_history , я получил это:

При открытии файла «/home/dave/.bash_history» возникла проблема.

Файл, который вы открыли, содержит недопустимые символы. Если вы продолжите редактирование этого файла, вы можете испортить этот документ. Вы также можете выбрать другую кодировку и повторить попытку.

Кодировка символов: текущая локаль (UTF-8)

а потом:

\D3Q\F6\98ڵ\9B\A8a\9B\97\C7׬\A2\B5\F7\B0,.\B4\FD\E4N\A9͈\FEK\EF蓪*,q\D5HbI\C6!iB\BC\D33\A7\C5\EC\E3\\AE|\D1<%Hx9a\FEI\BE\93f\84\92\C1\AF\B7Ed,6DI<\B5\F9*t\00\DB]PZ\AE\EB\D2\A1e\8C\D4\F8\B4'\8A\CD\00F-\89\CBs\FD;k\CBUv\E1\F8߱y\D0;\BB\9E ůLteE\94\9B\D1\00\E7\CF)\\E51,\9C\81}\E6\96=\C7l\D8v.#s\CE\D5\C2%2\8EZ\93\93<\DD'oIKl.\CC81~\80\DC\F9\A5ȡ@6\E0\DA\F8\92j%\D2;: b(\BE\F5Dv\86\CD"\A0vCc\EC\A2\F8oP\88\CEG\ED~y\866\B9\AF\BF\BF\DC}\8F\94\CF\DB\C9\D6\DC\D9\E7\E4\DC-\94H\B3\A7\F3\DF\EB\9DS+\E5\C8\81p\8FK\E2\88h\E7f\A8\809\B4\FBo}&aa\FA;\B7q\E8\8D\DE\B5\B5\DE{\EB\A3\F9D\BB\E8\80\A0\FA\F2\F6\A2\BB\C6\D1\CEaN?*H8\91\BD\B83y\FF\BA)\DDl)\87vn\97D\EF\EEOS\F5\FB\B0U\83\94\E7D\E0:\A3R\94\EC\B9O\D9 wr^D,Q\8B2\C1\9A;l\9Db\86@C*$\D4=\B7v\86ۉ\85\B5\D0g\85\C0{Cb\EA;\ACK\87q\FE\BA\83\B7\86\C0\DF

Для сотен на сотни строк. Есть ли способ спасти это, или я должен просто укусить пулю и удалить все это?

1 ответ1

1

На этот вопрос есть ответы, в которых перечислены различные способы проверки целостности корневого раздела. Если упомянутая перезагрузка не выполнила проверку целостности, возможно, имеет смысл запустить fsck в корневом разделе. После завершения fsck (независимо от того, произошло ли это уже во время перезагрузки или вы выполняете это явно), ваши метаданные будут согласованы, но нет никакой гарантии, что содержимое файла является правильным. Выходной журнал из fsck может дать представление о степени повреждения.

Особая проблема с вашим файлом истории bash выглядит так, как будто он ошибочно содержит данные, принадлежащие совершенно другому файлу. Наилучшим случаем для этого может быть то, что блоки были выделены в файл истории, но не записаны до потери питания, и в этом случае текущее содержимое файла может просто соответствовать тому, что было у блокированных блоков содержимого до того, как они были назначены вашему файлу истории bash. , Более пессимистическая интерпретация содержимого этих файлов заключается в том, что метаданные были повреждены (в этом случае вероятным вариантом действий является fsck ). Возможно, вы захотите следить за любыми другими файлами, которые могли быть затронуты. В лучшем случае проблемными будут только файлы с достаточно недавним временем модификации.

Что касается спасения того, что осталось от вашей истории bash, простой подход может заключаться в том, чтобы передать его в команду strings (которая должна отфильтровывать большую часть того, что выглядит как двоичное содержимое). Вероятно, имеет смысл переопределить значение по умолчанию --bytes (-n), если вы это сделаете, на что-то ближе к вероятной минимальной длине команды. В зависимости от того, насколько велик ваш файл истории bash, и основной причины его поддельного содержимого, могут быть или не быть какие-либо фактические команды, хранящиеся там.

Возможно, имеет смысл переименовать файл истории bash, а не сразу удалять его, чтобы вы могли отложить усилия по спасению, а также иметь историю bash, которая не вызовет проблем при обычной работе bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .