如何在双向语言中使用 fzf?

如何在双向语言中使用 fzf?

我正在使用 bash 脚本提供搜索实用程序来查找和打开文件和目录。

这是脚本:

#!/bin/bash
lxterminal -e "bicon.bin locate /home /run/media |fzf >| ~/.mylocateData"
              # ^ this the problematic part
sleep 0.4
while [[ "$(pidof fzf)" != "" ]] ; do
    sleep 0.4
done
file="$(cat ~/.mylocateData)"
if [[ -z "$file" ]] ; then exit ; fi
mimetype=$(file  --dereference --brief --mime-type  "$file" )
case "$mimetype" in
      inode/directory)            lxterminal -e bicon.bin ranger "$file" ;;
      image/*)                    feh "$file" & disown ;;
      text/* | */xml)             lxterminal -e vim "$file"  ;;
      video/* | audio/*)          mpv --really-quiet --loop "$file" & disown ;;
     application/pdf)             okular "$file" & disown ;;
     application/octet-stream)
                                 if [[ "${file#*.}" == "MP3" ]]
                                    then
                                         mpv --really-quiet --loop "$file" & disown
                                 fi
                                 ;;
     *)                            lxterminal -e bicon.bin ranger --selectfile="$file" ;;
esac

如果我运行第一个命令比康宾包含 fzf 的文本按预期处理阿拉伯文件名,但是保存在.mylocateData文件因某种原因损坏,我无法打开它。我尝试了一些调试来ls "$(cat .mylocateData)确认。

但如果我运行我的脚本而不比康宾fzf 显示搜索,但从左到右显示阿拉伯字符(以丑陋的方式),但文件名无论如何都会正确保存并且可以打开。

我的问题是:我怎样才能实现这两个目标?如果是以其他方式读取文件的问题cat?或者是fzf的使用?

PS:我对使用 dmenu、rofi ...等不感兴趣,我喜欢 fzf 的工作方式,我想在我的 arch i3wm 桌面中使用它

相关内容