Linux에서 파일을 열 응용 프로그램을 선택하는 방법은 무엇입니까?

Linux에서 파일을 열 응용 프로그램을 선택하는 방법은 무엇입니까?

파일이 운영 체제에 파일 형식을 알려주는 경우 운영 체제는 해당 파일을 여는 데 기본적으로 사용할 응용 프로그램을 어떻게 선택합니까?

Windows에서는 연결이 레지스트리에 저장됩니까?

Linux에서 파일을 열 응용 프로그램을 선택하는 방법은 무엇입니까?

예전에는 노틸러스(Nautilus)를 많이 사용했는데 지금은 터미널을 대신 ​​사용하고 있습니다. 터미널에서 파일을 여는 응용 프로그램을 항상 명시적으로 지정해야 합니까? 특정 형식의 파일을 열 때 기본적으로 사용할 응용 프로그램 설정이 파일 관리자(예: Nautilus)에 속하며 터미널에 거주할 때 문제가 되지 않습니까?

답변1

이러한 기본 설정을 처리하는 메커니즘은 다양할 수 있습니다. 그러나 다른 답변은 각각 고유한 메커니즘을 갖춘 완전한 데스크탑 환경에 초점을 맞추는 경향이 있습니다. 그러나 이러한 도구가 항상 시스템에 설치되는 것은 아니며(저는 OpenBox를 자주 사용합니다), 이러한 경우에는 xdg-open이와 같은 도구를 사용할 수 있습니다.

인용하다아치스 위키:

xdg-open은 사용자의 기본 응용 프로그램을 구성하기 위한 데스크탑 독립적 도구입니다. 많은 응용 프로그램은 내부적으로 xdg-open 명령을 호출합니다.

현재 저는 Ubuntu(12.04)를 사용하고 있으며 xdg-open작동합니다. 그러나 GNOME과 같은 전체 데스크탑 환경을 사용하는 경우 xdg-open이는 간단한 전달자 역할을 하며 파일 요청을 DE로 전달한 다음 필요에 따라 자유롭게 처리할 수 있습니다(예: GNOME 및 Nautilus 기타 답변 참조).

데스크톱 환경(예: GNOME, KDE 또는 Xfce) 내에서 xdg-open은 해당 데스크톱 환경의 파일 열기 응용 프로그램(각각 gvfs-open, kde-open 또는 exo-open)에 인수를 전달합니다. 이는 연결이 결정됨을 의미합니다. 데스크탑 환경에서.

...이 경우에는 다른 답변으로 돌아갑니다. 그러나 이것은 Ask Ubuntu가 아닌 Unix 및 Linux이므로:

데스크톱 환경이 감지되지 않으면(예: Openbox와 같은 독립형 창 관리자를 실행하는 경우) xdg-open은 자체 구성 파일을 사용합니다.

전체적으로 :

                            |-- no desktop env. > handle directly.
User Request > xdg-open > --|
                            |-- desktop env.    > pass information to the DE.

첫 번째 경우라면,xdg-open직접 구성, 이 xdg-mime명령을 사용하십시오(이 명령을 사용하면 어떤 응용 프로그램이 어떤 파일을 처리해야 하는지 확인할 수도 있습니다). 두 번째 경우에는...

                        |-- GNOME? > gvfs-open handles the request.
                        |
Info. from xdg-open > --|-- KDE?   > kde-open handles the request.
                        |
                        |-- XFCE?  > exo-open handles the request.

...데스크탑 환경과 관련된 파일 오프너를 구성해야 합니다. 경우에 따라 구성이 xdg-mime사용자 환경의 올바른 구성 도구로 리디렉션될 수 있습니다.

답변2

~에서위키피디아입구,

KDE 및 GNOME과 같은 Linux 기반 GUI는 MIME 유형 기반 연결을 지원합니다. 예를 들어 MIME 유형 text/plain은 텍스트 편집기와 연결됩니다.

반품,이것답변에 더 자세한 내용이 있습니다.

파일 관리자는 종종 옵션 a와 b의 조합을 사용합니다(예: 먼저 파일 확장자를 살펴보고 알 수 없는 경우(또는 파일에 확장자가 없는 경우) 내용을 살펴봅니다.

파일 형식은 일반적인 Linux 파일 시스템에 메타데이터로 저장되지 않습니다.

~에서이것답변, 아래 메시지가 보입니다.

파일 관리자(기본적으로 Nautilus)는 파일의 MIME 유형을 사용하여 파일을 여는 데 사용할 프로그램을 결정합니다. 응용 프로그램이 설치되면 열 수 있는 MIME 유형과 /usr/share/applications에 있는 .desktop 파일에서 파일을 여는 데 사용되는 명령을 지정할 수 있습니다. 메뉴, 바탕화면 바로가기 등에 사용되는 파일입니다.

답변3

파일은 한 가지 예외를 제외하고 운영 체제에 파일 형식을 알려주지 않습니다.

실행 파일이 소위 shebang 줄로 시작하는 경우, 예를 들어

#! /usr/bin/perl

이 줄은 Linux 커널에 시작해야 함을 알려줍니다 /usr/bin/perl(즉, usr/bin/perl이 파일을 실행하는 대신 이 파일을 실행하고 인수로 제공해야 함). 물론, 이는 그러한 셔뱅 라인을 무시(또는 이해)하는 파일 형식에서만 작동합니다.

그 외에도 운영 체제 자체는 파일 형식에 대해 아무것도 모릅니다. 그러나 다른 파일 열기를 허용하는 많은 프로그램에는 어떤 파일을 여는 데 사용할 프로그램을 결정하는 자체 메커니즘이 있습니다. 이는 프로그램 자체 내부의 목록일 수 있습니다(예: Firefox는 이러한 목록을 유지 관리함). 또는 프로그램이 이를 데스크톱 환경에 위임할 수 있습니다(이러한 작업 중 일부는 Linux에서 작동함).

일반적으로 이러한 메커니즘은 파일 유형을 결정하기 위해 파일 이름만 고려합니다. 이메일 클라이언트와 웹 브라우저는 예외입니다. 여기서 파일 유형은 일반적으로 서버에 의해 명시적으로 제공되거나 메시지에 명시됩니다.

메커니즘은 일반적으로 두 단계로 나뉩니다.

  • 첫째, 파일의 MIME 유형(MIME 유형은 표준화되었지만 확장 가능한 파일 유형 목록임)은 파일 이름이나 제공된 정보를 기반으로 결정됩니다.
  • 둘째, MIME 유형에 따라 실행할 프로그램이 결정됩니다. 일반적으로 프로그램 자체 또는 프로그램이 작성된 데스크톱 환경에서 유지 관리하는 일종의 레지스트리를 통해 결정됩니다.

답변4

나는 Unix 시스템이 파일을 처리하는 방법에 대한 기본적인 답변을 제공하려고 노력할 것입니다. 다른 사람들이 지적했듯이 파일 자체가 해당 유형을 보고하지 않고 커널 자체가 어떤 응용 프로그램이 사용되는지 결정하지 않기 때문에 질문의 표현이 오해의 소지가 있습니다.

Unix 및 Windows 운영 체제에서 파일 구조는 단순히 바이트 시퀀스입니다. 타넨바움에서운영 체제, 세 번째 버전:

실제로 운영 체제는 파일의 내용을 모르거나 신경 쓰지 않습니다. 보이는 것은 바이트뿐입니다. 모든 의미는 사용자 수준 프로그램에 의해 부여되어야 합니다.

이것이 데스크탑 환경에서 xdg-open특정 파일 형식을 열기 위한 기본 응용 프로그램을 결정하는 데 사용되는 이유입니다.

Unix 시스템에서는 파일 파티션이 다음과 같이 나뉩니다.일반 파일그리고특수 파일. 일반 파일은 단순한 사용자 데이터이며 텍스트 파일(ASCII 또는 유니코드 인코딩) 또는 바이너리 파일(실행 코드)일 수 있습니다. 특수 파일은 운영 체제를 실행하는 데 필요한 파일입니다. 여기에는 디렉터리, 링크, 파이프, 소켓 및 장치 파일이 포함됩니다.^

관례적으로 파일 이름에는 파일 유형을 나타내는 확장자가 포함됩니다.가능한예를 들어 *.c는 C 소스 코드를 나타내고, *.html은 웹 페이지 등을 나타냅니다. 타넨바움에서:

UNIX와 같은 일부 시스템에서는 파일 확장자가 단지 규칙일 뿐이며 운영 체제에서 시행하지 않습니다. file.txt라는 이름의 파일은 일종의 텍스트 파일일 수도 있지만 이름은 실제 정보를 컴퓨터에 전달하기보다는 소유자에게 상기시켜 주는 역할을 합니다. 반면에 C 컴파일러는 실제로 컴파일할 파일이 .c로 끝나야 한다고 주장할 수 있으며, 그렇지 않으면 컴파일을 거부할 수도 있습니다.

올바른 확장명 없이 파일을 저장하거나 이름을 바꾸면 해당 파일 형식에 대해 동일한 형식이 유지됩니다. 이는 대부분의 파일 관리자가 파일을 여는 데 사용할 응용 프로그램을 결정하는 방법이며, 확장자가 없는 경우 대부분의 파일 관리자가 사용자에게 "이 파일을 여는 데 사용할 프로그램을 선택하십시오:"라는 메시지를 표시하는 이유입니다.

마지막으로 환경 변수는 시스템 전체 및 사용자 수준 설정을 정의하는 데 사용됩니다. 예를 들어, 이 변수 EDITOR는 텍스트 작업(예: 등)을 할 때 열 텍스트 편집기를 지정하는 데 사용됩니다. vim이는 예를 들어 커밋 메시지를 nano편집할 때 프로세스가 열어야 할 편집기를 아는 방법입니다 . git그렇지 않으면 어떤 응용 프로그램을 사용할 것인지 지정해야 합니다. 이것이 맞습니다. vim설정이 되어 있으면 확장자를 확인하고 파일 내용을 확인한 filetype on후 올바른 구문 강조, 들여쓰기 등을 적용하여 파일 형식을 감지 합니다.²

긴 이야기 짧게

즉, 운영 체제 자체가 아니라 특정 파일 형식을 여는 데 사용할 프로그램을 결정하는 것은 사용자 수준 응용 프로그램입니다.

관련 정보