Ranger: 대용량 파일을 표시하려고 하지 마세요(미리 보기)

Ranger: 대용량 파일을 표시하려고 하지 마세요(미리 보기)

저는 Ranger를 파일 브라우저로 사용하고 있는데, 그건 그렇고 훌륭합니다...

Ranger가 현재 선택한 파일의 미리 보기를 표시하는 데 문제가 있습니다. 이는 매우 유용하지만 대용량 파일의 경우 문제를 일으킬 수 있습니다. 실제로 대용량 파일의 경우 미리보기를 만드는 데는 많은 시간과 리소스가 소요됩니다.

내 질문은: Ranger가 미리 보기를 표시하려고 시도하지 않는 최대 크기를 설정하는 방법이 있습니까?

답변1

적어도 텍스트 파일에 대해서는 해결책을 찾았습니다. 문제는 강조 표시에 있습니다... Ranger가 긴 파일을 강조 표시하려고 합니다... 내가 찾은 해결책은 다음 발췌 내용에 나와 있습니다.~/.config/ranger/scope.sh

#!/usr/bin/env sh

path="$1"    # Full path of the selected file
width="$2"   # Width of the preview pane (number of fitting characters)
height="$3"  # Height of the preview pane (number of fitting characters)
maxln=54    # Stop after $maxln lines.  Can be used like ls | head -n $maxln

# Find out something about the file:
mimetype=$(file --mime-type -Lb "$path")
extension=${path##*.}

try() { output=$(eval '"$@"'); }
dump() { echo "$output"; }
trim() { head -n "$maxln"; }
hl() { command head -n "$maxln" "$path" | highlight --syntax="$extension" --out-format=ansi; test $? = 0 -o $? = 141; }

case "$mimetype" in
    # Syntax highlight for text files:
    text/* | */xml)
        try hl && { dump | trim; exit 5; } || exit 2;;
esac
exit 1

아이디어는 텍스트 파일의 첫 번째 줄만 선택한 다음 highligh해당 부분만 호출하는 것입니다.

답변2

일부 섹션에 명령을 포함하여 scope.sh파일 크기를 확인할 수 있습니다.

먼저 새 함수를 추가합니다(위 코드를 handle_extension()에 붙여넣습니다 scope.sh).

drop_bigsize() {
    # 51200 == 50 MB * 1024
    # change this number for different sizes
    if [[ `du "${FILE_PATH}" | cut -f1` -gt 51200 ]]; then
        echo '----- TOO BIG FILE -----'
        exit 0
    fi
}

둘째, scope.sh.
예를 들어, 다음 코드는 크기가 50MB보다 큰 파일(의 마지막 몇 줄에서 scope.sh)을 미리 볼 수 없게 합니다.

...
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"

### start of new block ###
drop_bigsize
### end of new block ###

if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
    handle_image "${MIMETYPE}"
fi

handle_extension
handle_mime "${MIMETYPE}"
handle_fallback

exit 1

일부 특정 파일 형식(예: 특정 아카이브)에 대해 이와 같은 작업을 수행하려면 동일한 코드 블록을 다른 섹션에 배치해야 합니다 scope.sh.

...
handle_extension() {
    case "${FILE_EXTENSION_LOWER}" in
        # Archive
        a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
        rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
            ### start of new block ###
            drop_bigsize
            ### end of new block ###
            atool --list -- "${FILE_PATH}" && exit 5
            bsdtar --list --file "${FILE_PATH}" && exit 5
            exit 1;;
        rar)
            # Avoid password prompt by providing empty password
            unrar lt -p- -- "${FILE_PATH}" && exit 5
            exit 1;;
...

관련 정보