응용 프로그램에서 파일을 여는`open` 명령


13

터미널에서이 명령을 실행할 수없는 이유는 무엇입니까?

open index.html

브라우저에서이 파일을 열지 않았습니까? 또한이 명령을 실행할 수 없습니다 : open index.html -a "Sublime Text". 이 명령의 결과는 다음과 같습니다.

$ open index.html
Couldn't get a file descriptor referring to the console

$ open index.html -a "Sublime Text" - 
open: invalid option -- 'a' 
Usage: open [OPTIONS] -- command

2
xdg-open브라우저에서 파일을 열어야 한다는 의미라고 가정 합니다. open명령에 대한 링크입니다 openvt명령 및 새로운 가상 콘솔에서 바이너리를 엽니 다. 그것은 분명히 당신이 원하는 것이 아닙니다.
Marco

1
OSX 시스템을 사용한다고 가정하십니까? 나는 open리눅스에 어떤 명령 이 있다고 믿지 않는다 .
slm

1
Marco가 지적했듯이 @slm은 openLinux에 링크 된 명령이 있습니다 openvt. 질문의 오류 메시지는 해당 상황과 일치합니다.
Stephen Kitt

xdg-open filename_or_URL
Ijaz Ahmad Khan

1
@EdgarOliveira 프로그램 (바이너리)을 열려면 이름을 터미널에 입력하십시오. 관련 프로그램으로 파일을 열려면 사용 xdg-open <file>하고 해당 프로그램으로 파일을 열어야합니다.
Marco

답변:


19

OS X open명령 의 주요 목적은 관련 응용 프로그램에서 파일을 여는 것입니다. 현대의 비 OSX 유니스에서와 동일 xdg-open합니다.

xdg-open index.html

xdg-openopen -a특정 응용 프로그램에서 파일을 여는 OSX에 해당하는 것이 없습니다 . 응용 프로그램에서 파일을 여는 일반적인 방법은 단순히 응용 프로그램 이름과 파일 이름을 입력하는 것입니다. 보다 정확하게는 응용 프로그램을 구현하는 실행 프로그램의 이름을 입력해야합니다.

sublime_text index.html

Linux는 다른 유닉스 시스템과 마찬가지로 (OS X의 Unix 이외의 부분은 아님) 소프트웨어를 패키지 관리자로 추적하여 소프트웨어를 관리하고 사용되는 개별 파일을 저장합니다 . 예를 들어, 모든 실행 가능 프로그램은 작은 디렉토리 세트에 있으며 모든 해당 디렉토리는 PATH변수에 나열됩니다 . running sublime_text은에 sublime_text나열된 디렉토리에서 호출 된 파일을 찾습니다 PATH. OS X open -a은 단일 디렉토리 트리에서 압축을 풀고 응용 프로그램 데이터베이스에 등록 된 응용 프로그램을 처리하기 위해 추가 수준의 간접 처리가 필요합니다. Linux에는 응용 프로그램 데이터베이스가 없지만 필요하지 않은 방식으로 구성되어 있습니다.

명령 sublime_text쉘 실행이 작동하지 않으면 Sublime Text가 제대로 설치되지 않은 것입니다. 나는 그것을 사용하지 않았으며 분명히 배포 패키지 (예 : deb 또는 rpm)가 아닌 tar 아카이브로 제공되므로 추가 설치 단계를 수행해야 할 수도 있습니다. Sublime Text 제작자가이 작업을 자동으로 수행하는 것은 실제로 일이지만, 그렇지 않은 경우 명령을 실행하여 직접 수행 할 수 있습니다.

sudo -s …/sublime_text /usr/local/bin

교체 하여 경로에 의해 sublime_text실행은 물론이다.

open발생한 명령 은 명령의 이전 이름입니다 openvt(일부 Linux 배포판에서는 name 아래에만 포함 openvt). 이 openvt명령은 새로운 가상 콘솔을 생성합니다. 루트로만 수행 할 수 있으며 대부분의 사람들은 그래픽 창 환경에서만 작업하므로이 세기에는 자주 사용되지 않습니다.


그러나 "sublime_text indext.html"명령을 실행하면 "sublime_text : command not found"라는 결과가 나타납니다. 어떻게하면 문제를 해결할 수 있습니까?
Edgar Oliveira

@ EdgarOliveira 나는 숭고한 텍스트가 적절한 패키지와 함께 제공되지 않는 것 같습니다. 내 편집을 참조하십시오.
Gilles 'SO- 악마 그만해'

별명을 만들었습니다 : alias sublimetext = '/ opt / sublime_text / sublime_text / home / user / Documents / sandbox / webdeveloper' "sublimetext"를 실행할 때 하나의 창만 열었습니다! 왜? 감사합니다
Edgar Oliveira

.bashrc 파일을 변경했을 때 "변경 한 동일한 터미널에서 새 별칭을 실행할 수 있도록 .bashrc 파일을 어떻게 재설정합니까?"라는 의심이 있습니다. 구글 유닉스와 리눅스에서 답장을 찾았으며, "bash"명령 만 실행하면 새 별칭을 실행할 수 있습니다. :
Edgar Oliveira

7

사용중인 운영 체제는 언급하지 않았습니다.

일부 Linux 배포판 open에서이 명령은 명령에 대한 심볼릭 링크 openvt이며 새 가상 콘솔에서 바이너리를 엽니 다. 그것은 분명히 당신이 원하는 것이 아닙니다. 오류 메시지는 실제로 openvt명령 을 호출했음을 나타냅니다 . 이 명령은 프로그램 바이너리 (실행 파일)를 인수로 예상합니다.

xdg-open와 달리 openvt실행 파일을 인수로 기대하지 않지만 프로그램과 관련된 파일을 프로그램으로 여는 파일 을 의미한다고 가정합니다 . 파일과 URL을 인수로 전달할 수 있습니다.

따라서 xdg-open index.html브라우저 xdg-open image.png에서 파일을 열고 이미지 뷰어에서 파일을 열어야합니다.


1
유일한 문제는 xdg-open이 파일 형식에 대한 기본 응용 프로그램에서 파일을 여는 것입니다. xdg-open으로 응용 프로그램을 선택할 수 없습니다. 앱을 선택하는 명령이 있는지는 모르지만 (예 : "Sublime Text"와 같이) 앱을 알고 있으면 프로그램을 직접 호출하는 것이 좋습니다.
X3MBoy

1
@ X3MBoy xdg-open호출의 기본 개념 은 해당 파일 의 기본 응용 프로그램 을 호출하는 것 입니다. 다른 프로그램을 사용하려면 전화하십시오 <program> <file>. 문제가 보이지 않습니다.
Marco

그는 몇 가지 명령을 요청합니다 . html 파일을 여는 데 open index.html -a "Sublime Text" -사용 xdg-open하는 경우 "Sublime Text"와 같은 텍스트 편집기가 아닌 브라우저에서 파일을 열 가능성이 높기 때문에 "문제"라고 말합니다.
X3MBoy

3

사람들은 종종 xdg-open의 기능을 에뮬레이트하는 것으로 이름 을 지지만 openmacOS open는 1. stdout / stedrr에서 아무것도 리디렉션하지 않고 2. 터미널에서 실행하려는 모든 것을 분리합니다 (GUI를 시작할 때 거의 항상 원하는 것입니다). 터미널이없는 앱)

이 문제를 해결하기 위해 표준 GNU 도구를 사용하여 적절한 도구를 만들었습니다 (구문은 피쉬 쉘이지만 bash로 변환하는 것은 쉽지 않습니다).

function open
    for i in $argv
        setsid nohup xdg-open $i > /dev/null 2> /dev/null
    end
end

추가 :

bash 쉘을 사용하는 사람들을 위해 다음과 같은 기능이 있습니다.

open ()
{
    for i in $*
    do
        setsid nohup xdg-open $i > /dev/null 2> /dev/null
    done
}

2

내 솔루션 (매일 사용)은 aliasfor 를 사용하는 것 입니다 xdg-open.

그냥 당신의 ~/.bashrc: 에 넣어

alias open='xdg-open '

그런 다음 쉘을 닫았다가 다시 시작하십시오 source ~/.bashrc.

이제 .png ~ .jpg ~ .docx ~ .pdf ~ .txt 명령으로 파일을 열 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.