Почему делает комнату * (1) *, удаляют все файлы в каталоге?

Вот строка, для которой я использовал grub1 когда я делал это на Lenny, использующем CD.

append vga=normal initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.txt debian-installer/locale=en_US console-keymaps-at/keymap=us --

Кроме того, что Вы используете grub2, это не выглядит существенно отличающимся.

Необходимо удостовериться, что путь, который Вы пытаетесь использовать, является на самом деле корректным путем. Делает установщик USB, монтируют себя к /hd-media? Я (еще) не попробовал это Хрипящим, но это не чувствует себя хорошо мне.

Для проверки запустите установщик, затем переключаются на консоль оболочки (я полагаю, что это 4, так нажмите, ctrl+alt+4) затем осматривают систему для Вашего pressed.cfg файл.

Путь к файлу, который Вы перечисляете, должен соответствовать точному пути к файлу preseed.cfg от корня загруженного установщика.

47
18.03.2014, 15:36
2 ответа

Из man bash:

*(pattern-list)
                 Matches zero or more occurrences of the given patterns

У вас есть выражение glob, которое ищет файлы, начинающиеся с нуля или более 1s - то есть все файлы.

Один из простых способов отключить это поведение globbing - \ снять скобки:

rm *\(1\)*

В противном случае вы можете использовать shopt -u extglob для отключения поведения и shopt -s extglob для его повторного включения:

shopt -u extglob
rm *(1)*
shopt -s extglob

Обратите внимание, что, как говорит Stephane, extglob включен bash-completion, поэтому его отключение может привести к некорректной работе функций завершения.

51
27.01.2020, 19:34

Возможно, это связано с опцией оболочки extglob. Если я отключу ее, шаблон выдает сообщение об ошибке:

martin@dogmeat:~$ shopt -u extglob
martin@dogmeat:~$ shopt extglob
extglob         off
martin@dogmeat:~$ echo *(1)*
bash: syntax error near unexpected token `('

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

   If the extglob shell option is enabled using the shopt builtin, several
   extended  pattern  matching operators are recognized.  In the following
   description, a pattern-list is a list of one or more patterns separated
   by a |.  Composite patterns may be formed using one or more of the fol‐
   lowing sub-patterns:

          ?(pattern-list)
                 Matches zero or one occurrence of the given patterns
          *(pattern-list)
                 Matches zero or more occurrences of the given patterns
          +(pattern-list)
                 Matches one or more occurrences of the given patterns
          @(pattern-list)
                 Matches one of the given patterns
          !(pattern-list)
                 Matches anything except one of the given patterns

Я не вижу никакой документации, которая бы указывала, что делает скобка без ведущего символа. В любом случае, вы можете обойти проблему, заключив скобки в кавычки:

martin@dogmeat ~ % echo *\(1\)*
A(1)b

Также используйте echo или ls для проверки вашего шаблона, если вы не уверены, что он работает :)

9
27.01.2020, 19:34

Теги

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