저는 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
첫 번째 명령을 실행하면thancombinfzf가 포함된 텍스트는 예상대로 아랍어 파일 이름을 처리하지만 다음 위치에 저장됩니다..mylocateData어떤 이유로 파일이 손상되어 열 수 없습니다. 확인하기 위해 디버깅을 시도했습니다 ls "$(cat .mylocateData)
.
하지만 스크립트 없이 스크립트를 실행하면thancombinfzf는 검색을 표시하지만 아랍어 문자를 왼쪽에서 오른쪽으로(보기 흉한 방식으로) 표시하지만 파일 이름은 어쨌든 올바르게 저장되어 열 수 있습니다.
내 질문is: 이 두 가지 목표를 어떻게 달성할 수 있나요? 다른 방법으로 파일을 읽는 것이 문제라면 어떻게 될까요 cat
? 아니면 fzf를 사용합니까?
추신: 저는 dmenu, rofi...etc를 사용하는 데 관심이 없습니다. fzf 작동 방식이 마음에 들고 이를 내 Arch i3wm 데스크탑에서 사용하고 싶습니다.