Открывайте pdf-файлы через терминал с помощью fzf и fd.

Вопрос или проблема

с помощью следующей команды, которую я превратил в алиас, я хотел бы открывать pdf-файлы из своего терминала.

alias pdfLoad=”fd . ‘$HOME/OneDrive/DBCalibre’ -t f -e pdf | fzf | xargs -0 -I {} masterpdfeditor5 {}”

Однако я заметил проблему, вызванную определёнными символами, такими как ‘, которые не позволяют мне открыть файл.

OS: Arch Linux x86_64 
Kernel: 6.12.4-arch1-1 
Shell: zsh 5.9 
DE: GNOME 47.2
fzf 0.56.3 (add1aec6)
fd 10.2.0
masterpdfeditor5 Build 5.9.86, 64 bit

Я не знаком с fd, fzf или masterpdfeditor5, но могу по крайней мере сказать, что команда xargs не будет работать, потому что вы используете -0 для записей, разделённых NUL, в то время как передаете ей записи, разделённые LF

Простое решение (и, скорее всего, лучшее, когда дело касается путей) — использовать записи, разделённые NUL, во всех командах конвейера:

fd . ~/OneDrive/DBCalibre -t f -e pdf -0 |
fzf --read0 --print0 |
xargs -0 -n1 masterpdfeditor5

.

Ответ или решение

Открытие PDF-файлов через терминал с использованием fzf и fd на Arch Linux

В современных операционных системах Linux работа с файлами через командную строку становится все более распространенной. В вашем случае, задача заключается в том, чтобы открыть PDF-файлы из терминала, используя такие инструменты, как fd и fzf. Однако вы столкнулись с проблемами, связанными с определенными символами в именах файлов, и с неправильным использованием xargs.

Проблема с пространством имен файлов

Ваш первоначальный алиас использовал следующую команду:

alias pdfLoad="fd . '$HOME/OneDrive/DBCalibre' -t f -e pdf | fzf | xargs -0 -I {} masterpdfeditor5 {}"

Основной проблемой здесь является использование неверных символов. Символы, такие как одинарные кавычки, могут быть неправильно интерпретированы при передаче аргументов, что приводит к сбоям в открытии файлов. Также, как вы правильно заметили, xargs был настроен с опцией -0, но команда fd подавала пути, разделенные символом новой строки (LF).

Рекомендованное решение

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

alias pdfLoad="fd . ~/OneDrive/DBCalibre -t f -e pdf -0 | fzf --read0 --print0 | xargs -0 -n1 masterpdfeditor5"

Подробный разбор команд

1. fd

fd — это удобная утилита для поиска файлов, которая предлагает более быстрое и простое использование по сравнению с find. В данном случае команда fd . ~/OneDrive/DBCalibre -t f -e pdf -0 выполняет следующее:

  • . указывает на текущее местоположение (или корень поиска).
  • ~/OneDrive/DBCalibre — путь к директории, где будут искаться PDF-файлы.
  • -t f указывает на то, что следует искать только файлы.
  • -e pdf ограничивает результаты поиска только PDF-файлами.
  • -0 выводит результаты с нулевым разделителем, что позволяет безопасно обрабатывать имена файлов, содержащие пробелы или специальные символы.

2. fzf

fzf — это инструмент для интерактивного поиска. Использование fzf --read0 --print0 позволяет:

  • --read0 принимать вход, разделенный нулем для корректной обработки имен файлов.
  • --print0 выводить результаты также с нулевым разделителем, что гарантирует совместимость с именами файлов, содержащими пробелы и специальные символы.

3. xargs

xargs используется для передачи аргументов в другие команды. В этом случае, команда xargs -0 -n1 masterpdfeditor5 делает следующее:

  • -0 ожидает вход с нулевым разделителем.
  • -n1 указывает, что каждый аргумент должен передаваться в masterpdfeditor5 по одному.

Заключение

Используя предложенный подход с нулевыми разделителями, вы сможете без проблем открывать PDF-файлы даже если их имена содержат пробелы или специальные символы. Это улучшит вашу рабочую эффективность и сделает использование командной строки более удобным.

С тех пор как вы внедрили fzf и fd для работы с файлами, вы можете дополнительно изучить их документацию, чтобы оптимизировать и расширить свои ведения по работе с файлами в терминале.

Оцените материал
Добавить комментарий

Капча загружается...