Linux (および他のほとんどのシステムでは、移動がファイル システム間でない限り POSIX では保証されませんが) では、ctime が更新されているため、/usr/bin
に他のシステムがないことを前提としています。 過去 24 時間以内にタッチされた場合は、次の方法で元に戻すことができます:
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
echo mv -i "[email protected]" /bin' sh {} +
echo
を削除します それが正しければ。 /bin
に同じ名前で存在したファイルを復元することはできないことに注意してください と /usr/bin
(/usr/bin
の元のもの 失われていたでしょう)
潜在的な注意:一部のファイルが両方の /bin
でハード リンクされている場合 そして /usr/bin
、/usr/bin
内のすべてのハード リンク /bin
に移動されます .
さて、あなたは /bin
から および /usr/bin
デフォルトの $PATH
にあります 、および /bin
/boot
で利用できます 少なくとも /usr
より前 マウントされている場合、実行可能ファイルが /bin
にあるかどうかは問題ではありません /usr/bin
の代わりに .
しかし、それは、多くのコマンドが実行可能ファイルのパスをハードコーディングし、それらが特定のケースにあることを期待していることを見落としているでしょう.一般的なケースは彼女の前髪です。以下を持つすべてのスクリプト:
#! /usr/bin/env bash
mv /usr/bin/env /bin/env
を実行すると機能しなくなります .その点で、両方の場所にコマンドを配置する方が、これらのスクリプトが壊れないという点で安全です。
<ブロック引用>
Ubuntu は壊れた状態ですか?
はい、あなたの Ubuntu は壊れています
パッケージ管理にとって重要なものを台無しにしました。
したがって、実際には重要なデータをバックアップしてください (少なくとも /etc
そして /home
)、おそらくインストールされたパッケージのリストも含まれます。 dpkg -l
の出力 、Ubuntu を再インストールします。
<ブロック引用>
Linux パーティション全体を台無しに再インストールしたことは認めます。
それはおそらくあなたの時間をより少なく消費するものです.他の回答の助けを借りて現在のシステムを維持することは、システムを非常に厄介な状態に保つことです (これは将来の頭痛の種になります)。
ディスクを再フォーマットしているので、 /home
を入れることを検討してください 別のパーティションに保存します(将来、そのような間違いでデータが失われることはありません)。 df -h
の出力を紙に印刷する前に と df -hi
と fdisk -l
(ディスク容量に関する情報を提供します-使用済みと使用可能の両方...)。十分な大きさのシステム パーティション (ルート ファイル システム) を用意することをお勧めします。余裕があれば 100G バイトで十分です。
ソフトウェアの bin フォルダの内容を /usr/bin に移動するはずでした
(用語:Unix には「フォルダー」ではなく、ディレクトリがあります)。
それ (動く /usr/bin/
まで ) は非常に間違っています。 $PATH を (できれば) 改善するか、せいぜい シンボリック リンク を追加するかのいずれかです /usr/bin/
で できれば、実行可能ファイルを /usr/local/bin/
に移動 (またはシンボリック リンクを追加) します。 .
賢明なアプローチは /usr/bin/
を変更しないことです 、 /bin
、 /sbin
、 /usr/sbin/
パッケージ管理ツールの外部 (例:dpkg
、 apt-get
、 aptitude
など)。 FHS を読んでください。
<オール>
インストールはほとんど問題ないはずです。 /usr
に同じ名前の異なるファイルがあってはなりません と /usr/bin
(これはあなたの2.1に答えます)、両方の /bin
にすべてのファイルがあります と /usr/bin
何も壊れません (パッケージをアップグレードするまで)。シンボリックリンクでバイナリを上書きした場合、現在発生する可能性のある唯一の問題は、シンボリックリンクが壊れることです。これを修正するには、壊れたシンボリック リンクを探します:
find -L /bin /usr/bin -type l -ls
リストされたファイルに対応するパッケージを再インストールします (たとえば、/usr/bin/zsh
の場合) dpkg -S /bin/zsh /usr/bin/zsh
が壊れていると表示される ファイルがどのパッケージから来たかを教えてくれます。 apt --reinstall install zsh
で再インストールします ).
ctime で表示および並べ替えて、最近変更されたファイル (移動したファイルを含む) を確認できます:
ls -ltc /bin
行ったことを元に戻す最善の方法は、cruft
を使用することです /bin
で見つかったファイルをパッケージ化して削除します または /usr/bin
パッケージに由来しない:
sudo apt install cruft
sudo cruft -d "/ /usr"
ファイルが /etc/alternatives
のファイルへのシンボリック リンクでない限り (その場合はそのままにしておく必要があります)。