Почему я не могу изменить стандартный ввод для Vim на какой-либо файл на диске с помощью перенаправления?

Если вы не можете смонтировать исходную файловую систему в своей среде, вы можете использовать debugfsдля проверки структуры файловой системы,и copyфайлы к вашей цели. Приложив немного усилий, вы можете написать скрипт debugfsдля просмотра, обхода, копирования исходной файловой системы во временное расположение, а затем использовать mke2fs -dдля записи в новую файловую систему или просто скопировать ее в целевое расположение напрямую.

Если вы хотите написать свой собственный код, вы можете использовать libext2fsдля открытия файловой системы, чтения дерева каталогов и рекурсивного копирования его в целевую файловую систему (, которую также можно открыть с помощью libext2fs ). Это было бы гораздо проще, чем писать собственный код для обработки формата ext4 на -диске.

Если доступ к устройству eMMC как к блочному устройству в вашей среде затруднен (, извините, я ничего об этом не знаю, только сторона ext4 ), тогда вы можете написать собственный драйвер ввода-вывода для libext2fs (, например lib/ext2fs/unix_io.cили .../nt_io.c), которые могут напрямую считывать/записывать устройства eMMC, а затем использовать сценарии debugfs+ или специальный инструмент копирования libext2fs.

0
17.04.2020, 21:24
1 ответ

edи exявляются строковыми редакторами . У них есть своего рода пользовательский интерфейс, который может управляться строками в текстовом файле.

viи все его клоны, такие как VIM, являются полноэкранными редакторами . У них есть пользовательские интерфейсы, которые не обрабатывают ввод и вывод как строки текстового файла. Ввод представляет собой отдельные символы и последовательности символов, не сгруппированные в строки. Вывод — это отдельные символы и escape-последовательности и управляющие последовательности для отрисовки на видеотерминале.

Модель пользовательского ввода-вывода в виде текстовых файлов не соответствует интерактивным полноэкранным -программам TUI, не говоря уже о программах GUI.

Ваше поведение зависит от программы. Некоторые полноэкранные программы TUI -распознают, что их стандартный ввод не является терминалом, и прерывают работу, как это делает nvi. Другие, такие как VIM, будут выдавать предупреждения, но будут обрабатывать входной файл без терминала -как ввод терминала, что приводит к несколько странному поведению для людей, которые ожидают, что ввод будет обработан как команды сценария. Третьи, такие как less, например, явно открывают терминальное устройство для пользовательского интерфейса и не используют стандартный ввод-вывод для (его входной части ).Третьи, как и большинство оболочек (, которые, заметьте, имеют интерактивные пользовательские интерфейсы, выходящие за рамки линейного режима ), переходят в не -интерактивный режим.

Статья, написанная о Unix в 1974 году, не будет хорошим руководством по разнице между пользовательскими интерфейсами в линейном -режиме и полноэкранными пользовательскими интерфейсами -. Возможно, первый редактор Unix для видеотерминалов, Джордж Кулурис em, был годом позже. Также в будущем были termcap, оболочки с (их собственным )редактированием командной строки и значениями по умолчанию линейной дисциплины, которые использовали не -графические специальные символы.

4
19.03.2021, 02:29

Теги

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