Заставить cat интерпретировать ввод как файл (а не строку)

Drive won't boot... after cloning, why?

У меня нет под рукой /etc/default/grub, но я воспользуюсь строчкой из вашего скрипта bootinfo

# auto-mount of windows drive
#/dev/disk/by-uuid/9CDAC383DAC357E2 /mnt/9CDAC383DAC357E2 auto nosuid,nodev,nofail,x-gvfs-show,ro 0 0

так что ваш исходный диск имеет UUID любой

вы клонируете содержимое этого диска на новый диск или NVME. И содержимое grub на новом диске по-прежнему будет ссылаться на uuid независимо от , который был старым диском, а не текущим новым диском.

Этот новый диск не будет иметь тот же UUID, что и исходный, вы должны исправить везде, где он использовался, в основном /etc/default/grubи за ним следует grub2-mkconfig, а также исправить свой /etc/fstab.

I believe the problem arises from both drives having the same disk UUID, am I right?

UUID = универсальный уникальный идентификатор. UUID должен быть другим.

Существует несколько способов монтирования диска... по -uuid, или по -id, или по -имени, или по -метке, или по -пути в верхней части моего голова. Я не знаю, все ли дистрибутивы Linux следуют этой модели, но если вы посмотрите в /dev/disk/, вы должны увидеть подпапки

  • по -идентификатор
  • по -метка
  • по -пути
  • автор -ууид

если вы делаете по -имени , то это просто вызывает диск из /dev/sda1или /dev/sd??, что не является уникальным, и я не рекомендую делать... если есть только когда-либо один диск присутствует, тогда он будет /dev/sdaи будет работать, но он не будет уникальным и не будет явным, поэтому со временем вы рискуете. И все может быть еще сложнее, если NVME отображается по-другому, как/dev/nvme????

с вашего fdisk:

Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Disk identifier: 1207A335-32CA-4B6C-A508-29A0E85597C4

Device          Start       End   Sectors   Size Type
/dev/nvme0n1p1   2048    194559    192512    94M EFI System
/dev/nvme0n1p2 194560 488396799 488202240 232,8G Linux filesystem
  • посмотрите под /dev/disk/?и найдите соответствующий идентификатор.
  • исправьте ваши загрузочные файлы, чтобы явно использовать этот новый диск nvme для загрузки.
  • исправить /etc/fstabна этом диске, чтобы использовать этот идентификатор, он будет иметь текст, ссылающийся на старый диск, потому что вы клонировали.
0
23.03.2020, 14:20
2 ответа

Вы не имеете в виду:

cat $(echo test.tex | sed 's/[^.]*$/pdf/') | zathura -

Так что результат вашего sedявляется аргументом для cat, а не его стандартным вводом.

Вы также можете использовать:

cat $(basename $file.tex).pdf | zathura -

или

cat ${file%.*}.pdf | zathura -
0
28.04.2021, 23:19

Я не рекомендую открывать файл с помощью STDINв программе просмотра документов, которая предлагает такие функции, как автоматическое обновление документа или SyncTeX. Это разрывает связь между исходным файлом и программным обеспечением, поскольку открытый файл будет копией исходного файла. Отображаемый файл на самом деле будет что-то вроде /tmp/zathura.stdin. Это может привести к проблемам с безопасностью, и когда исходный файл LaTeX будет перекомпилирован, отображение в программном обеспечении не будет обновлено.

Так зачем возиться с cat, если можно просто передать имя файла в качестве аргумента следующим образом:

zathura $(basename file.tex.tex).pdf

или используяsed

zathura $(echo file.tex | sed 's/[^.]*$/pdf/')
0
28.04.2021, 23:19

Теги

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