LINUX.ORG.RU

переустановка. ссзб

Vekt
()

с помощью команды «mv /folder/* /*

А думать кто будет ?

Как можно в кратчайшие сроки их восстановить?

Из бэкапа системы. Если бэкапа нет - то переустановка.

kostik87 ★★★★★
()

понятно. Хотелось бы узнать, почему так произошло, чтобы опять не наступить на те же грабли?

kernel25
() автор топика
Ответ на: комментарий от kernel25

Хотелось бы узнать, почему так произошло

Что именно? Почему mv затёр корень или почему нейроны в твоём мозге неадекватно перемкнуло?

fragment
()
Ответ на: комментарий от kernel25

Вы знаете что такое маска ?

  • * - Любое число любых символов
  • ? - Любой один символ
  • {a..z} - один символ, входящий в интервал

Это не принимая во внимание решулярные выражения.

kostik87 ★★★★★
()

с помощью команды «mv /folder/* /*» затер эти директории

Если это именно та команда, ищи все свои ошметки в /var или какой там тебе каталог покажет последним echo /*

red_eyed_peguin
()
Ответ на: комментарий от kernel25

Если у вас так же в директории /folder не было бы поддиреткорий usr, bin и etc то да, тогда бы не затёрлось.

Но проблема в другом, прежде чем что-то делать нужно сначала подумать что ты делаешь, если не уверен - почитай документацию.

kostik87 ★★★★★
()

Удалил директории etc, bin, usr, как исправить?

Отрезал руку, две ноги, уши, как исправить?

mopsene ★★★
()
Ответ на: комментарий от kostik87

Стоп! Только что воспроизвёл идентичный сценарий, результат мне непонятен:

joker@localhost /media/home/joker/u $ ls
folder  q
joker@localhost /media/home/joker/u $ ls folder
DATA
joker@localhost /media/home/joker/u $ ls q
bin  dev  etc  lib
joker@localhost /media/home/joker/u $ mv folder/* q/*
joker@localhost /media/home/joker/u $ ls folder
joker@localhost /media/home/joker/u $ ls q
lib
joker@localhost /media/home/joker/u $ ls q/lib
bin  DATA  dev  etc
joker@localhost /media/home/joker/u $ 

Почему так произошло?

fragment
()
Ответ на: комментарий от fragment

Почему так произошло?

Очевидно же:

mv folder/* q/*

развернётся в:

mv folder/DATA q/bin q/dev q/etc q/lib

Все эти каталоги переместились в q/lib, всё правильно.

gentoo_root ★★★★★
()
Ответ на: комментарий от kernel25

понятно. Хотелось бы узнать, почему так произошло, чтобы опять не наступить на те же грабли?

Желательно не использовать root.

Deleted
()
Ответ на: комментарий от kernel25

опять не наступить на те же грабли?

Не сидеть под рутом.

aidaho ★★★★★
()

Желательно не использовать root.
Не сидеть под рутом.

Иногда под рутом надо глобы использовать, так что добавлю, если не понимаешь во что глоб развернется, запускай сначала команду как аргумент к команде echo, типа:

echo mv /folder/* /*

mantar
()
Ответ на: комментарий от winddos

Хотя я так понимаю это обрабатывает баш (ну или что там) или где я не прав?

winddos ★★★
()

99% людей которые приходят с оффтопика сидят под рутом.
Ну типа думая что это +100 к интеллекту.

ТС начинай знакомство с изучения прав. Без них нет смысла вообще сидеть в linux.
Если только ты не любитель гуя и коробочного образа жизни.

VictimOfLoveToLinux
()
Ответ на: комментарий от VictimOfLoveToLinux

У меня сервер на дебиане уже год как только под рутом работает. И за это время он наоборот, стал SIDом из сквиза неожиданно, причем рабочим. Просто забыл про временно подключенный репозиторий. А все остальное ломают люди, которым вообще плевать на то, что остается после их пальчиков на пыльном мониторе

minakov ★★★★★
()

Удалил директории etc, bin, usr, как исправить?

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

anonymous
()
Ответ на: комментарий от Deleted

Желательно не использовать root.

Удваиваю.

В командировке разбирался с угроханным таким образом МСВСом. (Да, пользователи работали под рутом.) К счастью, все стёртые каталоги были из числа стандартных, а на соседнем компе стоял точно такой же МСВС, поэтому я их просто перекинул по сети.

hobbit ★★★★★
()
Ответ на: комментарий от kernel25

Исключения, конечно, бывают. Ну тогда надо быть максимально осторожным и предварительно запустить тестовый вариант команды, как советовали выше.

hobbit ★★★★★
()

Не представляю, как так можно подчистить корень)

OvO
()
Ответ на: комментарий от kostik87

kostik87

{a..z} - один символ, входящий в интервал

бегом читать man bash и думать, почему вот так:

$ echo A{a..z}B
AaB AbB AcB AdB AeB AfB AgB AhB AiB AjB AkB AlB AmB AnB AoB ApB AqB ArB AsB AtB AuB AvB AwB AxB AyB AzB
А диапазон это таки [a-z]

drBatty ★★
()
Ответ на: комментарий от kernel25

kernel25

как мне не работать под рутом, если мне требовалось переместить файлы в системные директории?

а зачем вам перемещать файлы в системные директории?

drBatty ★★
()
Ответ на: комментарий от winddos

winddos

А этот трюк работает только с основными командами?

это фишка bash'а, и к командам не имеет отношения.

$ echo /*
/bin /boot /dev /etc /home /lib /lost+found /media /mnt /opt /proc /root /sbin /srv /sys /tmp /usr /var
очевидно, mv засунет все каталоги в посл. У меня в /var (звёздочка ещё и сортирует по алфавиту).

Для ТС'а, возьмите mc, и перекиньте всё на своё место.

drBatty ★★
()
Ответ на: комментарий от bhfq

bhfq

нет, нужно было использовать cp -R, а не mv.

просто думать надо. И использовать то, что нужно использовать. Ибо mv это почти всегда не cp|rm.

drBatty ★★
()
Ответ на: комментарий от drBatty

А что вы должны были увидеть ?

Вы дали команду выводить на шаблон A{a..z}B, где {a..z} - одна буква, входящая в интервал от 'a' до 'z', тоже самое и здесь Удалил директории etc, bin, usr, как исправить? (комментарий)

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

kostik87

А что вы должны были увидеть ?

а что вы там вещали про звёздочку и про вопрос? Звёздочка _совпадает_ с любым числом любых символов, причём рассортировывает найденные файлы по алфавиту. Вопросительный знак _совпадает_ с любым символом. А вот {a..z} нихрена НЕ совпадает. Это просто буквы алфавита, от a до z. Разницу понимаем?

«одна любая буква от a до z» _совпадает_ с [a-z].

drBatty ★★
()
Ответ на: комментарий от drBatty

Мальчик, пыл убавь, я написал:

kostik87

Вы знаете что такое маска ?

  • * - Любое число любых символов
  • ? - Любой один символ
  • {a..z} - один символ, входящий в интервал

Один символ, входящий в интервал, как пример указал интервал от 'a' до 'z', {a..z}, буква - это символ, и указано что он входит в интервал, в данном случае я написал пример интервала, а именно строчные английские буквы в интервале от 'a' до 'z'. Это пример, если вам не ясно тут уж ничего не поделать, к примеру можно было указать интервал от '0' до '9', {0..9}.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

kostik87

Мальчик, пыл убавь, я написал

х*йню.

ну раз ты так хочешь, могу и мордой в ман ткнуть...

       Pattern Matching

       Any  character that appears in a pattern, other than the special pattern characters described below, matches itself.  The NUL character may not occur
       in a pattern.  A backslash escapes the following character; the escaping backslash is discarded when matching.  The special pattern  characters  must
       be quoted if they are to be matched literally.

       The special pattern characters have the following meanings:

       *      Matches  any string, including the null string.  When the globstar shell option is enabled, and * is used in a pathname expansion context, two
              adjacent *s used as a single pattern will match all files and zero or more directories and subdirectories.  If followed by a /,  two  adjacent
              *s will match only directories and subdirectories.
       ?      Matches any single character.
       [...]  Matches  any  one of the enclosed characters.  A pair of characters separated by a hyphen denotes a range expression; any character that sorts
              between those two characters, inclusive, using the current locale's collating sequence and character set, is matched.  If the first  character
              following the [ is a !  or a ^ then any character not enclosed is matched.  The sorting order of characters in range expressions is determined
              by the current locale and the value of the LC_COLLATE shell variable, if set.  A - may be matched by including it as the first or last charac-
              ter in the set.  A ] may be matched by including it as the first character in the set.

              Within  [  and  ],  character  classes can be specified using the syntax [:class:], where class is one of the following classes defined in the
              POSIX standard:
              alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
              A character class matches any character belonging to that class.  The word character class matches letters, digits, and the character _.

              Within [ and ], an equivalence class can be specified using the syntax [=c=], which matches all characters with the same collation weight  (as
              defined by the current locale) as the character c.

              Within [ and ], the syntax [.symbol.] matches the collating symbol symbol.

drBatty ★★
()
Ответ на: комментарий от drBatty

Я знаю во что она разворачивается, я говорил о шаблонах и указал некоторые возможные конструкции при его формировании, ваш шаблон в этом посте Удалил директории etc, bin, usr, как исправить? (комментарий)

$ echo A{a..z}B

Логично развернётся в AaB AbB AcB AdB AeB AfB AgB AhB AiB AjB AkB AlB AmB AnB AoB ApB AqB ArB AsB AtB AuB AvB AwB AxB AyB AzB

И в этом посте всё Удалил директории etc, bin, usr, как исправить? (комментарий) праивильно, я что где-то это опровергаю, я лишь говорю о шаблонах, а их применять и главное понимать это уже должны вы сами.

kostik87 ★★★★★
()

Удалил директории etc, bin, usr, как исправить?

Поумнеть

anonymous_sama ★★★★★
()
Ответ на: комментарий от kostik87

kostik87

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

не. Это вы _должны_. Перед тем как назвать собеседника «пылким мальчиком», вы таки просто обязаны самостоятельно прочитать мануал. Но вы этого не сделали. Логично, что сели в лужу (мне как раз недавно именно этот кусок man bash понадобился, потому... Ну не честно конечно.)

kostik87

ваш шаблон в этом посте Удалил директории etc, bin, usr, как исправить? (комментарий)

$ echo A{a..z}B

Логично развернётся в AaB AbB AcB AdB AeB AfB AgB AhB AiB AjB AkB AlB AmB AnB AoB ApB AqB ArB AsB AtB AuB AvB AwB AxB AyB AzB

правильно. А во что развернуться шаблоны A*B, A?B, and A[a-z]B? Можете проверить - это уже _поиск_ файлов, а не подстановка. А {x..y..z} это подстановка, и от файлов она не зависит.

drBatty ★★
()
Ответ на: комментарий от kostik87

kostik87

Не дерзи.

ты начал хамить первым.

kostik87

Пример:

echo {a..z}
echo [a z]

и что?

drBatty ★★
()
Ответ на: комментарий от drBatty

Логично, что сели в лужу (мне как раз недавно именно этот кусок man bash понадобился, потому... Ну не честно конечно.)

Где я сел в лужу ?

Удалил директории etc, bin, usr, как исправить? (комментарий)

Это всё маски, применяемые в шаблонах.

Первые две не указывают конкретики для возможных подстановок вместо маски, следовательно в зависимости от контекста применения шаблона будет производиться подстановка значений.

Третья маска конкретизирована.

Можете проверить - это уже _поиск_ файлов, а не подстановка. А {x..y..z} это подстановка, и от файлов она не зависит.

И что из этого и там и там это маска.

drBatty

ты начал хамить первым.

Удалил директории etc, bin, usr, как исправить? (комментарий)

drBatty

А вот {a..z} нихрена НЕ совпадает.

Что ?

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

kostik87

Где я сел в лужу ?

мне ещё раз ман процитировать?

kostik87

Что ?

что непонятно-то? попробую разжевать: {0..9} эквивалентно 0 1 2 3 4 5 6 7 8 9. Т.е тоже самое. Можете так писать, можете эдак. а вот echo *[0-9]* покажет все _имена файлов_, в которых есть хоть одна цифра. А echo [0-9] покажет _имена файлов_, которые имеют вид 0, 1, 2, 3, 4, 5, 6, 7, 8, и 9. А если таких имён нет, данная команда покажет [0-9]. Как и звёздочка с вопросом.

разницу между «цифрами от 0 до 9» и «списком файлов, имена которых являются цифрами от 0 до 9» разве сложно понять?

drBatty ★★
()

dpkg -S /etc | sed 's/\,//g' | xargs sudo aptitude reinstall

lazyklimm ★★★★★
()
Ответ на: комментарий от drBatty

разницу между «цифрами от 0 до 9» и «списком файлов, имена которых являются цифрами от 0 до 9» разве сложно понять?

Ну это-то здесь при чём ? Я написал пример шаблонов с пояснением.

что непонятно-то? попробую разжевать: {0..9} эквивалентно 0 1 2 3 4 5 6 7 8 9. Т.е тоже самое. Можете так писать, можете эдак. а вот echo *[0-9]* покажет все _имена файлов_, в которых есть хоть одна цифра. А echo [0-9] покажет _имена файлов_, которые имеют вид 0, 1, 2, 3, 4, 5, 6, 7, 8, и 9. А если таких имён нет, данная команда покажет [0-9]. Как и звёздочка с вопросом.

$ touch {0..9}
$ ls {0..9}*
0 1 2 3 4 5 6 7 8 9
$ echo [0-9]*
0 1 2 3 4 5 6 7 8 9
$ touch [0-9]
$ ls \[0-*
[0-9] 
$ mkdir -p {0..3}folder
# ls {0..9}*
0  1  2  3  4  5  6  7  8  9

0folder:

1folder:

2folder:

3folder:
$ echo [0-9]*
0 0folder 1 1folder 2 2folder 3 3folder 4 5 6 7 8 9
$ rm -R *
$ echo [0-9]*
[0-9]*
$ ls {0..9}*
ls: невозможно получить доступ к 0*: Нет такого файла или каталога
... 
Убираем ошибки:
$ ls {0..9}* 2>/dev/null

А если таких имён нет, данная команда покажет [0-9]. Как и звёздочка с вопросом.

Это и так ясно и я это знаю.

Вы мне объясните суть ваших претензий.

[0-9] - интервал? Конечно интервал. Но применяется в шаблоне поиска.

{0..9} - интервал ? Конечно интервал. Но применяется в шаблоне подстановки.

mv [0-9]* folder/
mv {0..9}* folder/

Выполнится одинаково.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

kostik87

mv [0-9]* folder/
mv {0..9}* folder/ Выполнится одинаково.

в том-то и дело, что нет.

$ touch {0..9..2}
$ mkdir dir
doc@dt:~/tmp/z$ cp {0..9} dir/
cp: не удалось выполнить stat для «1»: Нет такого файла или каталога
cp: не удалось выполнить stat для «3»: Нет такого файла или каталога
cp: не удалось выполнить stat для «5»: Нет такого файла или каталога
cp: не удалось выполнить stat для «7»: Нет такого файла или каталога
cp: не удалось выполнить stat для «9»: Нет такого файла или каталога
doc@dt:~/tmp/z$ rm -vf dir/*
удалён «dir/0»
удалён «dir/2»
удалён «dir/4»
удалён «dir/6»
удалён «dir/8»
doc@dt:~/tmp/z$ cp [0-9] dir/
doc@dt:~/tmp/z$ rm -vf dir/*
удалён «dir/0»
удалён «dir/2»
удалён «dir/4»
удалён «dir/6»
удалён «dir/8»
А всё потому, что {0..9} это просто числа от 0 до 9.

drBatty ★★
()
Ответ на: комментарий от drBatty
doc@dt:~/tmp/z$ cp {0..9} dir/ 
cp: не удалось выполнить stat для «1»: Нет такого файла или каталога
cp: не удалось выполнить stat для «3»: Нет такого файла или каталога
cp: не удалось выполнить stat для «5»: Нет такого файла или каталога
cp: не удалось выполнить stat для «7»: Нет такого файла или каталога
cp: не удалось выполнить stat для «9»: Нет такого файла или каталога

Ошибки будут, это логично, т.к. здесь просто генерируются последовательности символов согласно шаблону, будет получена эта последовательность:

$ echo {0..9}
0 1 2 3 4 5 6 7 8 9

В вашем примере команда 'cp' будет «пытаться» скопировать имена файлов соответствующим элементам последовательности.

А шаблон с маской '[0-9]' раскроется в последовательность элементов содержащую имена существующих файлов.

Но фактический результат выполнения операций с шаблоном будет одинаков, в первом случае будут корректно выполнены операции копирования для элементов списка подстановки по шаблону, которые соответствуют именам существующих файлов. Для элементов списка для которых нет файла с таким же именем операция копирования завершится ошибкой, во втором случае список элементов полученных по шаблону будет содержать только имена существующих файлов.

разумеется нужно учитывать что возможны ошибки в связи с отсутствием файлов.

Вот вы мне скажите, в этом сообщении: Удалил директории etc, bin, usr, как исправить? (комментарий) я указал частный пример маски интервала, для шаблона подстановки, где я его применю дело десятое, хоть в качестве имени файла источника, в частности в операции копирования, хоть в качестве имени файла приёмника всё в той же операции копирования.

Сути это не меняет , я описал частный пример интервала и он корректен. Мне не понятны ваши претензии ко мне, если вы хотели дополнить моё описание и указать что {a1..a2} - маска интервала подстановки, а [a1-a2] - маска интервала поиска, пожалуйста, дополняйте.

Я то здесь при чём?

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

kostik87

Ошибки будут, это логично, т.к. здесь просто генерируются последовательности символов согласно шаблону

вот именно.

kostik87

Вот вы мне скажите, в этом сообщении: Удалил директории etc, bin, usr, как исправить? (комментарий) я указал частный пример маски интервала, для шаблона подстановки, где я его применю дело десятое, хоть в качестве имени файла источника, в частности в операции копирования, хоть в качестве имени файла приёмника всё в той же операции копирования.

Сути это не меняет , я описал частный пример интервала и он корректен. Мне не понятны ваши претензии ко мне, если вы хотели дополнить моё описание и указать что {a1..a2} - маска интервала подстановки, а [a1-a2] - маска интервала поиска, пожалуйста, дополняйте.

просто есть такая штука как man bash, и там англ. по чёрному описан Pattern Matching. И там прямо как у вас три пункта:

  1. звёздочка
  2. вопросик
  3. а вот третий пункт совсем другой. Там про квадратные скобки, а не про {фигурные}

Про фигурные написано совсем в другом месте, а именно в Brace Expansion и к Pattern Matching оно никакого отношения не имеет. Да и вообще к именам файлов напрямую не относится.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.