Случайно переименован /bin Help!

У меня есть аварийный, новичок Linux и Bash здесь и перепутал, пытаясь написать сценарий для переименования некоторых файлов. Цикл случайно поднялся по пути (запустил скрипт в папке на рабочем столе) и переименовал /bin в /D_bin (D_ был префиксом, который я добавил), так что теперь система не может используйте /bin, поэтому no bash, no mv, чтобы переименовать, no sudo. .. Файлы в /D_bin в порядке, не переименованы и могут скопировать-вставить их, но не могут создать папку /bin снова без bash. Система выглядит стабильной, но очень немногие работают и не имеют доступа к файлам на рабочем столе.

Другие папки / как /lib /sbin /etc Кажется, все в порядке и графический рабочий стол по-прежнему существует. Я боюсь перезагрузки, потому что я не знаю, сможет ли он загрузиться.

Есть ли оболочка в корне или способ переименовать /D_bin обратно в /bin? Нужна помощь, пожалуйста, очень важная работа скомпрометирована.

Мой суицидальный сценарий: $:

 #!/bin/bash
files=~/Desktop/folder_1/*

for j in $files
do
    cd $j
    for i in 10n*  #file names starting by 10n
    do
       find * -maxdepth 0 ! -path . -exec mv {} D_{} \;
    done
    cd ..
done

:( Спасибо !!!!

38 голосов | спросил Carlos D. Zapata 2 PMpSun, 02 Apr 2017 15:45:31 +030045Sunday 2017, 15:45:31

2 ответа


88

Есть несколько способов устранить эту проблему.

Если у вас есть доступ к оболочке (любой открытый терминал), запустите:

sudo /D_bin/mv -T /D_bin /bin

sudo находится в /usr/bin, поэтому нет необходимости запускать его с абсолютным путем.

Другое, что вы можете сделать, это добавить /D_bin к вашему PATH, например:

export PATH=$PATH:/D_bin

Если у вас нет доступа к какой-либо оболочке:

  1. перезагрузите систему.
  2. , когда появляется grub, нажмите e , чтобы отредактировать grub
  3. в конце строки, которая начинается с linux, добавьте:

    init=/D_bin/bash
    
  4. нажмите CTRL + x

Теперь вы попадете в оболочку bash, вы должны переделать файловую систему как прочитанную и перезаписываемую.

/D_bin/mount -o remount,rw /

И переместите каталог D_bin в bin:

/D_bin/mv -T /D_bin /bin

Затем перезагрузите систему.

Он должен работать, но если ничего не сработало для вас, вы все равно можете загрузить систему с живым диском /usb ubuntu и исправить проблему.

ответил Ravexina 2 PMpSun, 02 Apr 2017 16:04:16 +030004Sunday 2017, 16:04:16
8

Чтобы устранить эту проблему, если у вас нет открытого терминала, я бы сначала попытался найти «заменитель оболочки», который вы можете использовать вместо bash. Python находится в /usr/bin, поэтому он должен работать.

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.call(["sudo", "/D_bin/mv", "-T", "/D_bin", "/bin"])

Если это не сработает, я бы просто загрузился с live CD /USB и исправлю все, начиная с известной разумной рабочей среды.

Как общий совет, я бы добавил Jonathan Leffler в комментарии: никогда не используйте

cd ..

Кроме того, конечно, не запускайте файлы как root, если это абсолютно необходимо.

ответил leftaroundabout 3 PMpMon, 03 Apr 2017 15:50:28 +030050Monday 2017, 15:50:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132