Ubuntu 17.04を実行しながら、リポジトリではなくディストリビューションからソフトウェアをインストールしています。ソフトウェアbinフォルダの内容を/usr/binに移動する必要があります(すでに定義されていないアドバイスです)。
そんな日のひとつだったので、私がしたことは次のとおりです。
mv /bin/* /usr/bin
そのため、誤ってbinのすべてのファイルを/ usr / binに移動しましたが、/ binが空でした。私は/binがシステムにとって重要だと思ったので、迅速な解決のために/usr/binの内容を/binにコピーしました。
私の/binと/usr/binには同じ内容があり、両方とも元の/binと/usr/binにあったファイルが含まれています。
- 私のUbuntuは今破損していますか? (まだコンピュータを再起動していませんが、今はすべてがまだ機能しているようです)
- この状況を手動で処理できるように、最近どのファイルが/usr/binに移動/コピーされたかを知る方法はありますか? 2.1 /bin と /usr/bin にファイルが重複する場合はよくありますか?
- 私がしたことをキャンセルする他の方法はありますか?
私はTimeshiftをインストールしていないので、バックアップを復元することはオプションではありませんが、現在コンピュータには重要なことはありませんので、Linuxパーティション全体を台無しにして再インストールすることは認めます。
ベストアンサー1
/usr/bin
Linux(および他のほとんどのシステムではファイルシステム間の移動がない限り、POSIXはこの保証を提供しませんが)ではctimeが更新されるため、過去24時間に他のシステムにアクセスしたことがないと仮定すると、次のことができます。次を介して戻ります。
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
echo mv -i "$@" /bin' sh {} +
echo
正しいと思われる場合は削除してください。/bin
に存在するのと同じ名前のファイルは回復できませんので注意してください。/usr/bin
(元のファイルは/usr/bin
失われます。)
/bin
1つの潜在的な注意:一部のファイルがおよびからすべてのハードリンクになっている場合は、/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
。これに関して、コマンドを2つの場所に置くことはスクリプトを壊さないので、より安全です。