Как открывать файлы с помощью приложения Wine из mc?

С помощью инструментов GNU вы можете сделать что-то вроде:

find . -regextype posix-extended \
  -regex '.*/[a-zA-Z]+[0-9]\.[0-9]{2}_[0-9]\.[0-9]{4}\.end' -print0 |
  awk -v RS='\0' -F . '
    NR == 1 || $(NF-1) < min {files=$0; min = $(NF-1); next}
    $(NF-1) == min {files = files "\n" $0}
    END {if (NR) print files}'

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

Разделитель полей установлен на . . NF - это количество полей, поэтому $ (NF-1) - это последнее предпоследнее поле. awk находит наименьшее число, сравнивая его с последним известным значением, и сохраняет соответствующие файлы в переменной files awk .

Поскольку мы храним список, разделенный новой строкой, а не NUL, он предназначен только для вывода пользователя. Если вы хотите надежно выполнить постобработку, вы должны вместо этого использовать NUL ( "\ 0" в awk).

2
29.12.2016, 21:45
2 ответа

Для меня решением было добавитьz:ближе к концу командной строки :

Open=wine ~/PDFXEdit6_Portable/PDFXEdit.exe z:%f
                                            ↑↑

Я тестировал PDF X -Редактор изменений в ярлыке, и это тоже сработало:

env WINEPREFIX="/home/jim/.wine" wine-stable C:\\windows\\command\\start.exe /Unix /home/jim/.wine/dosdevices/c:/users/jim/Start\ Menu/Programs/Tracker\ Software/PDF-XChange\ Editor.lnk z:%f

2
27.01.2020, 22:10

Краткий ответ.

Вы используете % f , но имя файла, которое вы хотите передать, хранится в переменной $ {MC_EXT_FILENAME} .

Длинный ответ.

Как открывать / просматривать файлы PDF с помощью Midnight Commander + Wine + PDF-XChange Viewer / Editor Portable

Примечание: я предполагаю, что переносимые приложения Windows хранятся в "~ / MyApps / *"

  • open Midnight Commander файл расширения для редактирования: F9 -> Команда -> Редактировать файл расширения
  • перейдите к разделу файла, в котором записана конфигурация PDF: {{1 }} type / pdf Введите
  • закомментируйте следующие строки (только для резервной копии):

     # PDF 
     # type / ^ PDF 
     # Open = / usr / lib / mc / ext.d / doc.sh open pdf 
     # View =% view {ascii} /usr/lib/mc/ext.d/doc.sh view pdf {{ 1}} 
  • добавьте / замените следующие строки:

     # PDF 
    type / ^ PDF 
    Open = ~ / MyApps / start-pdf-mc.sh {{1} } View =% view {ascii} ~ / MyApps / start-pdf-mc.sh 
     
  • сохраните изменения и выйдите: : w q Введите

  • , чтобы создать файл ~ / MyApps / start-pdf-mc.sh со следующим содержанием:

     #! / Bin / bash 
    Filename = "z : "$ {MC_EXT_FILENAME // \ // \\} {{ 1}} App = `eval wine" ~ / MyApps / PDF-XChange_Viewer / PDFXCview.exe "" '$ Filename' "> / dev / null 2> & 1 &` {1}} $ App 
     

Примечание: вы можете создать его в / usr / lib / mc / ext.d / *. sh (вместо ~ / MyApps / , как я).

  • убедитесь, что файл start-pdf-mc.sh исполняемый файл (используйте chmod ).

Описание файла start-pdf-mc.sh

  • имя файла, которое мы пытаемся открыть, хранится в $ {MC_EXT_FILENAME} { {1}} переменная

  • при использовании Wine, используйте букву диска z:

  • преобразовать путь к файлу в стиле Linux ( / ) в стиль Windows ( \ ) со следующим : $ {MC_EXT_FILENAME // \ // \\} , чтобы передать его в качестве аргумента в PDF-XChange Viewer позже

  • > / dev / null 2> & 1 и & необходимы для отбрасывания вывода программы и запуска ее в качестве фонового процесса, в противном случае (если вы опустите это) вы не сможете использовать Midnight Commander до тех пор, пока вы закрываете PDF-XChange Viewer, что явно нежелательно.

Teste d со следующим программным обеспечением

  • Linux Debian 32-бит

  • GNU Midnight Commander 4.8.13

  • wine-1.6.2

  • PDF-XChange Viewer v2.5.316.1

И

  • Linux Debian 32-бит

  • GNU Midnight Commander 4.8.13

  • wine-1.6.2

  • PDF-XChange Editor v6.0.321.0

Обновление в соответствии с вашим комментарием

Похоже, что все еще есть какая-то ошибка в пути к файлу ... Попробуем исправить.

    • Откройте проблемный PDF-файл с помощью PDFXChange Editor (как вы обычно это делаете, НЕ с Midnight Commander)

    • Файл -> Копировать полное имя файла

    • Вставьте его в любой текстовый файл (только для дальнейшего использования)

    • Закройте редактор PDFXChange

    • Откройте тот же файл с помощью Midnight Commander + PDFXChange Editor (который показывает ваше сообщение об ошибке)

    • Сравните, идентичны ли пути к файлам (тот, который вы только что вставили для справки и тот, который указан в вашем сообщении об ошибке)

    • Если пути НЕ идентичны - исправьте путь соответственно в файле .sh ИЛИ вставьте их сюда, чтобы я мог помочь (просто замените свое имя пользователя в пути на для безопасности)

  1. Кроме того, это маловероятно, НО, если пути ОДИНАКОВЫЕ, может быть проблема с разрешениями, установленными для файла, который вы пытаетесь открыть. Таким образом убедитесь, что ваши права доступа к файлам как минимум:

     sudo chmod 644 your-file-name-here.pdf 
     

Update 2

Возможно получить доступ ко всем файлам со всех дисков, включая те, которые НЕ находятся в ~ / * (домашний каталог пользователя) или даже хранятся на других жестких дисках, просто используя Z: \ (не используя H: \ ] и другие буквы дисков).

Проверьте отображение дисков в Wine:

  • запустите в терминале

     $ winecfg 
     
  • откройте вкладку Диски

  • , там должны быть следующие записи по умолчанию

     Письмо | Сопоставление дисков 
    C: | ../ drive_c 
    Z: | / 
     

Насколько мне известно, любой путь начинается с / (для любого файла на любом жестком диске, доступном в Linux) и, таким образом, к нему можно получить доступ с помощью Z: \ из-за отображения, описанного выше.

Например, приведенная выше конфигурация позволяет мне получить доступ к файлу PDF

  • из / home / /*.pdf ( ~ / *. Pdf ), если он находится в домашнем каталоге пользователя
  • из / media / /*.pdf OR / mnt / /*.pdf , если он находится на каком-то внешнем диске или жестком диске, который я смонтировал; (например, в Windows к тому же диску можно получить доступ, используя H: \ )

Сопоставление дисков, однако, будет другим вопросом, связанным с вашей настройкой. : -)

Кстати, еще одна вещь, которую нужно проверить . Сопоставляется ли домашний каталог пользователя ~ / * с папкой MyDocuments MyDocuments wine ?

  • в терминале: $ wine explorer
  • дважды щелкните папку Мои документы
  • , вы должны увидеть содержимое домашнего каталога Linux ~ / *
1
27.01.2020, 22:10

Теги

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