Unter Linux (und auf den meisten anderen Systemen, obwohl POSIX Ihnen diese Garantie nicht gibt, es sei denn, die Verschiebung erfolgte über Dateisysteme hinweg) hätte dies ihre ctime aktualisiert, also vorausgesetzt, keine der anderen in /usr/bin
in den letzten 24 Stunden berührt wurden, sollten Sie sie mit:
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
echo mv -i "[email protected]" /bin' sh {} +
Entfernen Sie die echo
wenn das richtig aussieht. Beachten Sie, dass Sie die Dateien, die unter demselben Namen in /bin
existierten, nicht wiederherstellen können und /usr/bin
(die Originale in /usr/bin
verloren gegangen wäre)
Ein möglicher Vorbehalt:Wenn einige Dateien in beiden /bin
fest verlinkt waren und /usr/bin
, alle festen Links in /usr/bin
würde nach /bin
verschoben werden .
Nun, Sie denken vielleicht, dass seit /bin
und /usr/bin
sind in der Voreinstellung $PATH
, und /bin
ist verfügbar unter /boot
zumindest vor /usr
gemountet ist, sollte es egal sein, ob sich die ausführbaren Dateien in /bin
befinden statt /usr/bin
.
Aber das würde übersehen, dass viele Befehle die Pfade von ausführbaren Dateien fest codieren und erwarten, dass sie in einem bestimmten Fall sind. Ein häufiger Fall ist She-Pony. Alle Skripte mit:
#! /usr/bin/env bash
wird nicht funktionieren, nachdem Sie mv /usr/bin/env /bin/env
ausgeführt haben . In dieser Hinsicht ist es sicherer, die Befehle an beiden Orten zu haben, da diese Skripte nicht beschädigt werden.
Ist mein Ubuntu jetzt kaputt?
Ja, Ihr Ubuntu ist kaputt
Sie haben etwas Wichtiges in der Paketverwaltung durcheinandergebracht.
Sichern Sie daher in der Praxis Ihre wichtigen Daten (mindestens /etc
und /home
), vielleicht auch die Liste der installierten Pakete z.B. Ausgabe von dpkg -l
, und installieren Sie Ubuntu neu.
Ich könnte einfach zugeben, dass ich die ganze Linux-Partition neu installiert habe.
Das ist wahrscheinlich das, was weniger Zeit in Anspruch nehmen würde. Wenn Sie Ihr aktuelles System mit Hilfe anderer Antworten in einem sehr chaotischen Zustand halten (was Ihnen in Zukunft Kopfschmerzen bereiten würde).
Da Sie Ihre Festplatte neu formatieren, sollten Sie /home
eingeben in einer separaten Partition (damit zukünftige solche Fehler Ihre Daten nicht verlieren). Drucken Sie vorher die Ausgabe von df -h
auf Papier aus und df -hi
und fdisk -l
(Sie geben Auskunft über den belegten und den verfügbaren Speicherplatz auf der Festplatte ...). Achten Sie darauf, eine ausreichend große Systempartition (das Root-Dateisystem) zu haben; wenn Sie es sich leisten können, sind 100 GB mehr als genug.
Ich sollte den Inhalt des Software-Bin-Ordners nach /usr/bin
verschieben(Terminologie:Unix hat Verzeichnisse, keine "Ordner").
Das (bewegen bis /usr/bin/
) ist sehr falsch. Verbessern Sie entweder Ihren $PATH (vorzugsweise) oder fügen Sie höchstens symlinks hinzu in /usr/bin/
und vorzugsweise ausführbare Dateien nach /usr/local/bin/
verschieben (oder Symlinks hinzufügen). .
Der kluge Ansatz besteht darin, /usr/bin/
niemals zu ändern , /bin
, /sbin
, /usr/sbin/
außerhalb von Paketverwaltungstools (z. B. dpkg
, apt-get
, aptitude
, etc...). Lesen Sie die FHS.
-
Ihre Installation sollte größtenteils in Ordnung sein; Es sollten keine verschiedenen Dateien mit demselben Namen in
/usr
vorhanden sein und/usr/bin
(was Ihre 2.1 beantwortet), also alle Dateien in beiden/bin
und/usr/bin
wird nichts kaputt machen (bis Sie Pakete aktualisieren). Das einzige Problem, das Sie jetzt haben könnten, sind defekte Symlinks, wenn Sie eine Binärdatei mit einem Symlink darauf überschrieben haben. Um dies zu beheben, suchen Sie nach defekten symbolischen Links:find -L /bin /usr/bin -type l -ls
und installieren Sie alle Pakete neu, die den aufgelisteten Dateien entsprechen (wenn beispielsweise
/usr/bin/zsh
wird als defekt angezeigt,dpkg -S /bin/zsh /usr/bin/zsh
wird Ihnen sagen, aus welchem Paket die Datei stammt; mitapt --reinstall install zsh
neu installieren ). -
Sie können nach ctime anzeigen und sortieren, um Dateien anzuzeigen, die kürzlich geändert wurden (einschließlich der von Ihnen verschobenen Dateien):
ls -ltc /bin
-
Der beste Ansatz, um das, was Sie getan haben, rückgängig zu machen, ist die Verwendung von
cruft
packt und löscht Dateien, die es in/bin
findet oder/usr/bin
die nicht aus einem Paket stammen:sudo apt install cruft sudo cruft -d "/ /usr"
es sei denn, die Dateien sind symbolische Links zu Dateien in
/etc/alternatives
(in diesem Fall sollten Sie sie in Ruhe lassen).