En Linux (y en la mayoría de los otros sistemas, aunque POSIX no le da esa garantía a menos que el movimiento fuera a través de sistemas de archivos), eso habría actualizado su ctime, por lo que suponiendo que ninguno de los otros en /usr/bin
han sido tocados en las últimas 24 horas, deberías poder volver a moverlos con:
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
echo mv -i "[email protected]" /bin' sh {} +
Eliminar el echo
si eso se ve bien. Tenga en cuenta que no podrá recuperar los archivos que existían con el mismo nombre en /bin
y /usr/bin
(los originales en /usr/bin
se hubiera perdido)
Una advertencia potencial:si algunos archivos estuvieran vinculados tanto en /bin
y /usr/bin
, todos los enlaces duros en /usr/bin
se movería a /bin
.
Ahora, puedes pensar que desde /bin
y /usr/bin
están en el $PATH
predeterminado y /bin
está disponible en /boot
al menos antes de /usr
está montado, no debería importar si los ejecutables están en /bin
en lugar de /usr/bin
.
Pero eso sería pasar por alto que muchos comandos codifican las rutas de los ejecutables y esperan que estén en algún caso específico. Un caso común es she-bangs. Todos los scripts que tienen:
#! /usr/bin/env bash
no funcionará después de hacer mv /usr/bin/env /bin/env
. En ese sentido, tener los comandos en ambas ubicaciones es más seguro porque no romperá esos scripts.
¿Está mi Ubuntu en un estado roto ahora?
Sí, tu Ubuntu está roto
Echaste a perder algo importante para la administración de paquetes.
Entonces, en la práctica, haga una copia de seguridad de sus datos importantes (al menos /etc
y /home
), quizás también la lista de paquetes instalados, p. salida de dpkg -l
y reinstale Ubuntu.
Podría admitir que me equivoqué al reinstalar toda la partición de Linux.
Eso es probablemente lo que consumiría menos de su tiempo. Mantener su sistema actual con la ayuda de otras respuestas es mantenerlo en un estado muy desordenado (lo que le daría futuros dolores de cabeza).
Ya que está formateando su disco, considere poner /home
en una partición separada (para que futuros errores de este tipo no pierdan sus datos). Antes de hacer eso, imprima en papel la salida de df -h
y df -hi
y fdisk -l
(dan información sobre el espacio en disco -tanto usado como disponible-...). Sea prudente tener una partición del sistema lo suficientemente grande (el sistema de archivos raíz); si te lo puedes permitir, 100 Gbytes es más que suficiente.
Se suponía que debía mover el contenido de la carpeta bin del software a /usr/bin
(terminología:Unix tiene directorios, no "carpetas").
Que (moviéndose a /usr/bin/
) está muy mal. Mejore su $PATH (preferiblemente) o a lo sumo agregue enlaces simbólicos en /usr/bin/
y preferiblemente mueva (o agregue enlaces simbólicos) ejecutables a /usr/local/bin/
.
El enfoque inteligente es nunca cambiar /usr/bin/
, /bin
, /sbin
, /usr/sbin/
fuera de las herramientas de administración de paquetes (por ejemplo, dpkg
, apt-get
, aptitude
, etc...). Lea la FHS.
-
Su instalación debería estar mayormente bien; no debería haber archivos diferentes con el mismo nombre en
/usr
y/usr/bin
(que responde a su 2.1), por lo que tener todos los archivos en ambos/bin
y/usr/bin
no romperá nada (hasta que actualice los paquetes). El único problema que podría tener ahora son los enlaces simbólicos rotos, si sobrescribió un binario con un enlace simbólico. Para solucionar esto, busque enlaces simbólicos rotos:find -L /bin /usr/bin -type l -ls
y reinstale los paquetes correspondientes a los archivos enumerados (por ejemplo, si
/usr/bin/zsh
aparece como roto,dpkg -S /bin/zsh /usr/bin/zsh
le dirá de qué paquete proviene el archivo; reinstalarlo conapt --reinstall install zsh
). -
Puede mostrar y ordenar por ctime para ver los archivos que se cambiaron recientemente (que incluirán los archivos que movió):
ls -ltc /bin
-
El mejor enfoque para deshacer lo que hiciste es usar el
cruft
empaqueta y elimina los archivos que encuentra en/bin
o/usr/bin
que no vienen de un paquete:sudo apt install cruft sudo cruft -d "/ /usr"
a menos que los archivos sean enlaces simbólicos a archivos en
/etc/alternatives
(en cuyo caso deberías dejarlos en paz).