응용 프로그램에서 파일을 여는`open` 명령 index.html -a “Sublime Text”. 이 명령의

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

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



답변

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명령은 새로운 가상 콘솔을 생성합니다. 루트로만 수행 할 수 있으며 대부분의 사람들은 그래픽 창 환경에서만 작업하므로이 세기에는 자주 사용되지 않습니다.


답변

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

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

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

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


답변

사람들은 종종 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
}


답변

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

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

alias open='xdg-open '

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

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


답변