Удаляют файлы с именами, которые появляются для начала'?' в командной строке

Вам нужен образ ядра, initrd, а также (обычно) параметры ядра, поэтому он будет монтировать arch root, а не fedora root.

Если ваша арка имеет автоматически сгенерированный grub.conf в его/boot/, вы, вероятно, можете просто использовать (копировать и вставить) менюэнтри оттуда, или сделать ваш fedora grub загрузить arch grub config. Таким образом, вам не придется редактировать/обновлять fedora grub conf каждый раз, когда arch устанавливает новое ядро.

Что-то подобное может сработать (но на самом деле я его не тестировал):

menuentry "Switch to Arch Grub" {
    set root=(hd0,7) # your arch partition
    configfile /boot/grub/grub.cfg # your arch grub.cfg
}
-121--291071-

vmware-инструментам нужны полные заголовки ядра.

Вероятно, что headers_install не экспортирует все, что необходимо vmware. попробуйте скопировать реальный источник ядра и проверить. если он работает, удалите все файлы, кроме .h

find /tmp/headers-full -not -name \*.h -delete

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

-121--291070-

Вы запускаете сторону приемника, rz , на пк.

7
23.08.2018, 15:54
3 ответа

Символ не является вопросительным знаком. Утилита lsзаменит непечатаемые символы на ?. Кроме того, неясно, действительно ли непечатаемый символ является первым символом в имени файла или перед ним может быть один или несколько пробелов.

Если вы хотите удалить оба этих файла, вы можете сопоставить «плохую часть» с *, а затем более точно указать остальную часть видимого имени файла:

rm -i./*ssolve*

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

rm -i./*ssolveIncpUL46pK*

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

Опция -iдля rmзаставляет запрашивать подтверждение перед удалением чего-либо.

18
27.01.2020, 20:13

Соответствующий способ удаления файлов такого типа — использование значения inodeфайла.

Используйте следующую команду, чтобы получить inodeзначение

 ls -li 

 12582925 -rw-r--r--  1 root root   646 May 23 02:19 ?ssolveIncpUL46pK.txt

Первое поле длинного списка результатов — это значение inode.

Затем используйте команду find, чтобы удалить файл с индексным узлом.

find. -inum 12582925 -exec rm -i {} \;
27
27.01.2020, 20:13

Не рекомендуется использовать *для удаления файлов. Это может соответствовать больше, чем вам нравится.

В Debian командаls(из GNU )может печатать значения файлов в кавычках [1 ]:

$ ls -Q
"\nssolve"  "\n\nssolve"  "y"  "z"

Или, что еще лучше, список файлов с именами и индексными дескрипторами в кавычках:

$ ls -iQ
26738692 "\nssolve"  26738737 "\n\nssolve"  26738785 "y"  26738786 "z" 

Затем используйте rm с номером инода, чтобы убедиться, что удаляются только правильные файлы:

$ find. -xdev -inum 26738737 -exec rm -i {} \;

Вызов find ограничен одной файловой системой (-xdev), чтобы избежать сопоставления файла в другой файловой системе с тем же номером инода. Также обратите внимание, что rmвызывается с интерактивной опцией-i(), поэтому в командной строке будет запрашиваться, следует ли стереть каждый файл.


[ 1 ] Обратите внимание, что это не решает проблему с визуально запутанными символами, такими как кириллицаа($'\U430' )и латиницаa($'\U61' ), которые выглядят точно так же, но не являются таковыми. Чтобы лучше рассмотреть байты, которые использует имя файла, нам нужно использовать шестнадцатеричный просмотрщик;

$ touch а a é $'e\U301' $'\U301'e
$ ls
a  ́e  é  é  а              # what you "see" here depends on your system.

$ printf '<%s>' * | od -An -c
   <   a   >   < 314 201   e   >   <   e 314 201   >   < 303 251
   >   < 320 260   >
12
27.01.2020, 20:13

Теги

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