Sous Linux (et sur la plupart des autres systèmes, bien que POSIX ne vous donne pas cette garantie à moins que le déplacement ne se fasse entre les systèmes de fichiers), cela aurait mis à jour leur ctime, donc en supposant qu'aucun des autres dans /usr/bin
ont été touchés au cours des dernières 24 heures, vous devriez pouvoir les faire reculer avec :
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
echo mv -i "[email protected]" /bin' sh {} +
Supprimer le echo
si cela semble correct. Notez que vous ne pourrez pas récupérer les fichiers qui existaient sous le même nom dans /bin
et /usr/bin
(ceux d'origine en /usr/bin
aurait été perdu)
Une mise en garde potentielle :si certains fichiers étaient liés en dur dans les deux /bin
et /usr/bin
, tous les liens physiques en /usr/bin
serait déplacé vers /bin
.
Maintenant, vous pensez peut-être que depuis /bin
et /usr/bin
sont dans le $PATH
par défaut , et /bin
est disponible sur /boot
au moins avant /usr
est monté, peu importe si les exécutables sont en /bin
au lieu de /usr/bin
.
Mais ce serait oublier que de nombreuses commandes codent en dur les chemins des exécutables et s'attendent à ce qu'ils soient dans un cas spécifique. Un cas courant est la frange. Tous les scripts qui ont :
#! /usr/bin/env bash
ne fonctionnera pas après avoir fait mv /usr/bin/env /bin/env
. À cet égard, avoir les commandes aux deux emplacements est plus sûr car cela ne cassera pas ces scripts.
Mon Ubuntu est-il actuellement en panne ?
Oui, votre Ubuntu est cassé
Vous avez gâché quelque chose d'important pour la gestion des packages.
Donc en pratique, sauvegardez vos données importantes (au moins /etc
et /home
), peut-être aussi la liste des packages installés, par ex. sortie de dpkg -l
, et réinstallez Ubuntu.
Je pourrais juste admettre avoir foiré la réinstallation de toute la partition Linux.
C'est probablement ce qui consommerait moins de votre temps. Conserver votre système actuel à l'aide d'autres réponses, c'est le maintenir dans un état très désordonné (ce qui vous donnerait des maux de tête à l'avenir).
Puisque vous reformatez votre disque, pensez à mettre /home
dans une partition séparée (afin que de telles erreurs futures ne perdent pas vos données). Avant de faire cela, imprimez sur papier la sortie de df -h
et df -hi
et fdisk -l
(ils donnent des informations sur l'espace disque -à la fois utilisé et disponible- ...). Soyez sage d'avoir une partition système suffisamment grande (le système de fichiers racine); si vous pouvez vous le permettre, 100 Go sont plus que suffisants.
J'étais censé déplacer le contenu du dossier bin du logiciel vers /usr/bin
(terminologie :Unix a des répertoires, pas des "dossiers").
Cela (bouger à /usr/bin/
) est très mal. Améliorez votre $PATH (de préférence) ou ajoutez au plus des liens symboliques en /usr/bin/
et de préférence déplacer (ou ajouter des liens symboliques) les exécutables vers /usr/local/bin/
.
L'approche sage est de ne jamais changer /usr/bin/
, /bin
, /sbin
, /usr/sbin/
en dehors des outils de gestion de packages (par exemple dpkg
, apt-get
, aptitude
, etc...). Lisez le FHS.
-
Votre installation devrait être généralement OK ; il ne devrait pas y avoir de fichiers différents avec le même nom dans
/usr
et/usr/bin
(ce qui répond à votre 2.1), donc avoir tous les fichiers dans les deux/bin
et/usr/bin
ne cassera rien (jusqu'à ce que vous mettiez à niveau les packages). Le seul problème que vous pourriez avoir maintenant est la rupture des liens symboliques, si vous écrasez un binaire avec un lien symbolique vers celui-ci. Pour résoudre ce problème, recherchez les liens symboliques brisés :find -L /bin /usr/bin -type l -ls
et réinstallez tous les packages correspondant aux fichiers répertoriés (par exemple, si
/usr/bin/zsh
apparaît comme cassé,dpkg -S /bin/zsh /usr/bin/zsh
vous dira de quel paquet provient le fichier ; réinstallez-le avecapt --reinstall install zsh
). -
Vous pouvez afficher et trier par ctime pour voir les fichiers qui ont été récemment modifiés (ce qui inclura les fichiers que vous avez déplacés) :
ls -ltc /bin
-
La meilleure approche pour annuler ce que vous avez fait est d'utiliser le
cruft
empaqueter et supprimer les fichiers qu'il trouve dans/bin
ou/usr/bin
qui ne proviennent pas d'un colis :sudo apt install cruft sudo cruft -d "/ /usr"
sauf si les fichiers sont des liens symboliques vers des fichiers en
/etc/alternatives
(auquel cas vous devez les laisser tranquilles).