После случайного переименования / usr, как мне переименовать его обратно?

Это возможно, но grep использует регулярные выражения, которые работают со строками, а не с числами.

grep -v '[0-9]\{5\}$' input.txt

-v удаляет совпадающие строки. [0-9] соответствует любой цифре, \ {n \} означает, что предыдущее действие повторяется n раз (в данном случае 5 раз, т. Е. 10000 и более). $ соответствует концу строки.

awk может сравнивать числа, поэтому он больше подходит для работы:

awk '$4<10000{print}' input.txt

или Perl:

perl -ane 'print if $F[-1] < 10000' input.txt
63
20.03.2018, 01:58
5 ответов

Поскольку вы установили пароль для root, используйте suи busybox, установленные по умолчанию в Ubuntu. Все необходимые библиотеки suнаходятся в /lib. Busybox — это набор статически связанных утилит, поэтому отсутствие библиотек не должно быть проблемой. Делай:

su -c '/bin/busybox mv /usr_bak /usr'

(Хотя у самого Busybox также есть апплет su, двоичный файл /bin/busyboxне имеет setuid и поэтому не работает, если только он не запущен от имени пользователя root.)

Если у вас нет пароля root, вы, вероятно, могли бы использовать решение Жиля здесь, используя LD_LIBRARY_PATH, или(Жиль говорит, что это не будет работать с двоичными файлами setuid, такими как sudo )перезагрузите и отредактируйте меню GRUB для загрузки с init=/bin/busyboxв качестве параметра ядра и переместите папку обратно.

112
27.01.2020, 19:32

В дополнение к ответ муру:

  • вы могли использовать аварийный загрузочный USB-ключ для восстановления системы; например. если ваша система — Debian или Ubuntu, загрузите установочный USB-ключ в режиме восстановления и выполните соответствующие mount, mvи umount.

  • чтобы иметь возможность легче исправлять такие ошибки, я обычно также устанавливаю статическую оболочку с несколькими встроенными командами (, особенно с некоторыми cp, rm, mv-, такими как встроенные ), такие какsash(он упакован в Debian и Ubuntu, а также доступен как sash -3.8.tar.gz в исходной форме )и загружается с init=/bin/sash, переданным в Grub.

PS:sashнемного глючит и не полностью совместим с Posix, но все же очень полезен.

35
27.01.2020, 19:32

Я не могу попробовать это прямо сейчас (и не уверен, что хочу ), но похоже, должно работать, чтобы создать себе новый "/usr" в качестве жесткой ссылки(не программной ссылки )на ваш "/usr _bak", затем удалите "/usr _bak"

ln /usr_bak /usr
rm /usr_bak

Жесткая ссылка, созданная "ln" (с без аргумента " -s" )в файловой системе, должна сделать каталоги usr и usr _bak одинаково действительными. ссылки на указанные каталоги. «rm» просто удаляет одну ссылку, которую вы просили удалить, а не обе. Поскольку все еще существует действующая ссылка на содержимое, они должны оставаться доступными по оставшейся ссылке в «/usr».

-4
27.01.2020, 19:32

Я думаю, что самый безопасный способ — перезагрузить компьютер с помощью ОС, загружаемой с USB, CD или DVD. (Debian, Ubuntu, Suse и т. д. ). Затем смонтируйте диск, содержащий проблемы, и выполните переименование.

Безопаснее, чем загружаться на минном поле с фактически отсутствующими /usr или /lib.

5
27.01.2020, 19:32

Я столкнулся с аналогичной проблемой, когда я переименовал /usr/binв /usr/bin_bkpдля некоторого теста, а затем я не смог переименовать (, так как команда не нашла sudoв стандартном каталоге, который это /usr/bin), а затем я перешел в каталог /usr/bin_bkpвручную (с помощью диспетчера файлов ), и большинство функций (, включая переименование )при щелчке правой кнопкой мыши, отключены.

Затем я попробовал следующую команду, и она устранила проблему

$/usr/bin_bkp/sudo mv /usr/bin_bkp/ /usr/bin/

Я вызвал sudo из текущего пути, и это сработало, теперь все вернулось в норму.

ОС :Xubuntu 14.04

0
27.01.2020, 19:32

Теги

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