Na Linuxu (a na většině ostatních systémů, i když vám POSIX tuto záruku nedává, pokud přesun nebyl mezi systémy souborů), by to aktualizovalo jejich ctime, takže za předpokladu, že žádný z ostatních v /usr/bin se jich za posledních 24 hodin dotklo, měli byste být schopni je přesunout zpět pomocí:
find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
echo mv -i "[email protected]" /bin' sh {} +
Odstraňte echo jestli to vypadá správně. Všimněte si, že nebudete moci obnovit soubory, které existovaly pod stejným názvem v /bin a /usr/bin (původní v /usr/bin byl by ztracen)
Potenciální upozornění:pokud by některé soubory byly pevně propojeny v obou /bin a /usr/bin , všechny pevné odkazy v /usr/bin bude přesunuto na /bin .
Nyní si můžete myslet, že od /bin a /usr/bin jsou ve výchozím nastavení $PATH a /bin je k dispozici na /boot alespoň před /usr je připojeno, nemělo by záležet na tom, zda jsou spustitelné soubory v /bin místo /usr/bin .
To by však přehlíželo, že mnoho příkazů pevně kóduje cesty ke spustitelným souborům a očekává, že budou v nějakém konkrétním případě. Častým případem je ona-bang. Všechny skripty, které mají:
#! /usr/bin/env bash
po provedení mv /usr/bin/env /bin/env nebude fungovat . V tomto ohledu je mít příkazy v obou umístěních bezpečnější, protože tyto skripty neporuší.
Je moje Ubuntu nyní v nefunkčním stavu?
Ano, vaše Ubuntu je nefunkční
Zpackali jste něco důležitého pro správu balíků.
V praxi tedy zálohujte důležitá data (alespoň /etc a /home ), možná také seznam nainstalovaných balíčků, např. výstup dpkg -l a přeinstalujte Ubuntu.
Mohl bych jen přiznat, že jsem zpackal přeinstalaci celého linuxového oddílu.
To je pravděpodobně to, co by vám zabralo méně času. Udržování vašeho současného systému pomocí jiných odpovědí ho udržuje ve velmi chaotickém stavu (což by vám v budoucnu způsobilo bolesti hlavy).
Protože přeformátujete disk, zvažte vložení /home v samostatném oddílu (takže budoucí takové chyby neztratí vaše data). Než to uděláte, vytiskněte na papír výstup df -h a df -hi a fdisk -l (poskytují informace o místě na disku - využitém i dostupném - ...). Je rozumné mít dostatečně velký systémový oddíl (kořenový souborový systém); pokud si to můžete dovolit, 100 GB je více než dost.
Měl jsem přesunout obsah složky softwaru bin do /usr/bin
(terminologie:Unix má adresáře, nikoli "složky").
To (pohyb na /usr/bin/ ) je velmi špatně. Buď vylepšete svou $PATH (nejlépe), nebo nanejvýš přidejte symlinky v /usr/bin/ a nejlépe přesunout (nebo přidat symbolické odkazy) spustitelné soubory do /usr/local/bin/ .
Moudrý přístup je nikdy neměnit /usr/bin/ , /bin , /sbin , /usr/sbin/ mimo nástroje pro správu balíčků (např. dpkg , apt-get , aptitude , atd...). Přečtěte si FHS.
-
Vaše instalace by měla být většinou v pořádku; v
/usrby neměly být různé soubory se stejným názvem a/usr/bin(což odpovídá vašemu 2.1), takže mít všechny soubory v obou/bina/usr/binnic nezlomí (dokud neupgradujete balíčky). Jediný problém, který teď můžete mít, jsou nefunkční symbolické odkazy, pokud jste přepsali binární soubor symbolickým odkazem na něj. Chcete-li to opravit, vyhledejte nefunkční symbolické odkazy:find -L /bin /usr/bin -type l -lsa přeinstalujte všechny balíčky odpovídající uvedeným souborům (například pokud
/usr/bin/zshzobrazí se jako nefunkční,dpkg -S /bin/zsh /usr/bin/zshvám řekne, ze kterého balíčku soubor pochází; znovu jej nainstalujte pomocíapt --reinstall install zsh). -
Můžete zobrazit a seřadit podle ctime, abyste viděli soubory, které byly nedávno změněny (což bude zahrnovat soubory, které jste přesunuli):
ls -ltc /bin -
Nejlepší způsob, jak vrátit zpět to, co jste udělali, je použít
cruftzabalit a odstranit soubory, které najde v/binnebo/usr/binkteré nepocházejí z balíčku:sudo apt install cruft sudo cruft -d "/ /usr"pokud soubory nejsou symbolické odkazy na soubory v
/etc/alternatives(v tom případě byste je měli nechat na pokoji).