"xdg-mime 쿼리 파일 형식"은 "file --mime-type"과 다른 파일 형식을 반환합니다.

"xdg-mime 쿼리 파일 형식"은 "file --mime-type"과 다른 파일 형식을 반환합니다.

이메일을 생성하기 위해 실행하는 bash 스크립트가 있습니다. 현재 프로젝트에서 매우 중요하므로 지금 수정하고 싶지 않습니다. 명령은 운영 컴퓨터와 내 컴퓨터에서 다르게 실행됩니다.

xdg-mime query filetype <file>

us-ascii이는 간단한 인코딩된 텍스트 파일(맞춤형 파일 확장자 포함)에서 실행됩니다. 문제는 스크립트가 실행 중인 운영 체제에서 plain/text(예상된 동작)을 반환한다는 것입니다. xdg-mime의 디버그 모드는 실제로 file -i운영 머신에서 명령을 실행하고 있음을 보여줍니다. 하지만 내 컴퓨터에서는 명령이 반환 application/octet-stream되어 실행됩니다 . gnomevfs-info데스크탑 환경과 관련된 것 같습니다(두 시스템 모두 gnome에서 실행 중입니다).

xdg-mime강제 로 실행하게 하는 방법이 있나요 file -i? 아니면 gnomevfs-info올바른 MIME 유형을 반환하시겠습니까? 설정을 해제하려고 시도했지만 GNOME_DESKTOP_SESSION_ID작동합니다 xdg-mime.

detectDE()
{
    if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
    elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
    elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
    elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
    fi
}

세 번째는 명령이 0을 반환하고 DE가 gnome으로 설정되어 있기 때문에 over가 사용되도록 하는 것 elif입니다 . 매뉴얼 페이지를 보려고 했지만 명령이 횡설수설처럼 들렸습니다.xdg-mimegnomevfs-infofile -idbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1

답변1

사용자 정의 텍스트 파일 확장자를 미리 알고 있는 경우 해결 방법으로 해당 확장자에 대한 새 MIME 항목을 등록하면 됩니다.

예를 들어, 파일 확장자가 ".list"인 경우:

설명자 파일 준비:비행선 목록.xml

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/plain">
    <comment>List file type</comment>
    <glob pattern="*.list"/>
  </mime-type>
</mime-info>

새 MIME 항목을 등록합니다.

%xdg-mime install zeppelin-list.xml

묻다:

%xdg-mime query filetype my.list
text/plain

답변2

xdg-mime데스크탑 환경의 핵심 구성 요소이므로 해당 동작을 변경하려고 시도해서는 안 됩니다. 미션 크리티컬 스크립트 손상에 대한 귀하의 우려를 이해합니다. 하지만 운영 중인 시스템과 테스트 시스템에서 서로 다른 결과가 생성된다면 이는이미고장났으니 수리해야 합니다. 원래,

file -b --mime-type <file>

간단한 교체입니다

xdg-mime query filetype <file>

그리고 이를 변경하는 것은 고통스럽지 않아야 합니다. 특히 선호하는 동작이 다음과 같은 경우라면 더욱 그렇습니다 file -i.

xdg-*명령은 실행 중인 데스크탑 환경에 따라 설계되었습니다(접두사는엑스 데스크탑G그룹) 원칙적으로 사용자 상호 작용을 위한 것이 아닌 스크립트에서는 전혀 사용해서는 안 됩니다.

모든 시스템에서 정확히 동일한 동작을 원한다면 file항상 동일한 방식으로 실행되는 유사한 명령을 사용하십시오.가능한버전 차이는 미미하지만 불가피합니다.)

모든 시스템에서 "가장 스마트한" 동작을 원한다면 이러한 래퍼 명령을 사용 xdg-mime하고 모든 시스템에서 "가장 스마트한" 아이디어에 적응할 준비를 하십시오.

잘못된 접근 방식은 환경 종속 프로그램이 동일하게 작동하도록 각 환경을 변경하려고 시도하는 것입니다.

관련 정보