터미널의 Dictionary.app에서 단어를 찾으십시오.


19

/Applications/Dictionary.app터미널 창에서 단어를 찾을 수있는 bash 또는 applescript가 있습니까?

open -a /Applications/Dictionary.app/ --args word

--args를 무시하고 "검색 할 단어를 입력하십시오"라고 말합니다.

⌃ Control ⌘ Command D그러나 Mac Dictionary 개선 사항 은 작은 팝 오버뿐만 아니라 전체 앱을 시작하려고합니다.


"추가"버튼 대신 팝업에서 사전 이름을 클릭하여 사전 응용 프로그램에서 검색을 엽니 다.
gentmatt

답변:


20

당신이 사용할 수있는...

open dict://my_word

... 사전 응용 프로그램을 열고 문자열을 조회합니다 my_word. 여러 단어를 사용하려면 다음과 같은 것을 사용하십시오 open dict://"Big Bang Theory".

그러나 터미널에는 출력이 없습니다.


감사. open magicprefix : ...의 목록이 있습니까?
데니스

@Denis 나는 문서화되지 않은 명령 옵션을 특별히 수집하는 소스를 모른다 open. 그러나 일반적으로 hints.macworld.com 은 숨겨진 보석의 잘 알려진 출처입니다. 나는 또한 문서화되지 않은 defaults write명령 을 수집하는 다른 출처를 알고 있었지만, 그 사실을 기억하지 못하고 Google이 나를 도와주지 않았다 ...
gentmatt

나는 간단한 요약을 만든 open슈퍼 유저에 얼마 전에 superuser.com/questions/4368/os-x-equivalent-of-windows-run-box/...
조쉬 헌트

@denis 시스템은 설치된 모든 앱이 처리 방법을 알려주는 모든 접두사의 데이터베이스를 유지 관리합니다. 정답을 알기위한 실용적인 용도를 생각할 수 있다면 전체 질문을하는 것이 좋습니다.
bmike

18

Python Objective-C 바인딩을 사용하면 작은 Python 스크립트 만 작성하여 내장 된 OS X Dictionary에서 가져올 수 있습니다. 다음 은이 스크립트를 자세히 설명 하는 게시물 입니다. "

#!/usr/bin/python

import sys
from DictionaryServices import *

def main():
    try:
        searchword = sys.argv[1].decode('utf-8')
    except IndexError:
        errmsg = 'You did not enter any terms to look up in the Dictionary.'
        print errmsg
        sys.exit()
    wordrange = (0, len(searchword))
    dictresult = DCSCopyTextDefinition(None, searchword, wordrange)
    if not dictresult:
        errmsg = "'%s' not found in Dictionary." % (searchword)
        print errmsg.encode('utf-8')
    else:
        print dictresult.encode('utf-8')

if __name__ == '__main__':
    main()

에 저장 dict.py한 다음 실행하십시오.python dict.py dictation

여기에 이미지 설명을 입력하십시오

터미널 전체에서 액세스 할 수 있도록하는 방법에 대한 자세한 내용 은 게시물확인하십시오 .


1
이 스크립트를 사용했지만 출력에 줄 바꿈이 없습니다. i.imgur.com/ooAwQCA.png (OS X 10.9).
h__

또한 출력에 줄 바꿈이 없습니다. 확인 print repr(dictresult.encode('utf-8'))하면 나에게 이것을 보여줍니다 :'dictation |d\xc9\xaak\xcb\x88te\xc9\xaa\xca\x83(\xc9\x99)n| \xe2\x96\xb6noun [ mass noun ] 1 the action of dictating words to be typed, written down, or recorded on tape: the dictation of letters. \xe2\x80\xa2 the activity of taking down a passage that is dictated by a teacher as a test of spelling, writing, or language skills: passages for dictation. \xe2\x80\xa2 words that are dictated: the job will involve taking dictation, drafting ...'
nnn

내가 광범위하게 그것을 테스트하지 않은 비록 내가 시뮬레이션 할 줄 바꿈 일부 문자열 대체를 추가했습니다 .. 작업 확인에 보인다 gist.github.com/lambdamusic/bdd56b25a5f547599f7f
magicrebirth

더 이상 작동하지 않는 것 같습니다.
Toothrot

4

나는 또한 제안 할 open dict://word것이지만 Google 사전 API는 New Oxford American Dictionary도 사용합니다.

#!/usr/bin/env ruby

require "open-uri"
require "json"
require "cgi"

ARGV.each { |word|
  response = open("http://www.google.com/dictionary/json?callback=dict_api.callbacks.id100&q=#{CGI.escape(word)}&sl=en&tl=en&restrict=pr,de").read
  results = JSON.parse(response.sub(/dict_api.callbacks.id100\(/, "").sub(/,200,null\)$/, ""))
  next unless results["primaries"]
  results["primaries"][0]["entries"].select { |e| e["type"] == "meaning" }.each { |entry|
    puts word + ": " + entry["terms"][0]["text"].gsub(/x3c\/?(em|i|b)x3e/, "").gsub("x27", "'")
  }
}

1
Google API는 더 이상 사용되지 않으며 404를 반환합니다. dictionaryapi.com 이 작동하는 것 같습니다. 로그인 만하면됩니다.
Sam Berry

4

Swift 4를 사용하여 해결책을 찾았습니다.

#!/usr/bin/swift
import Foundation

if (CommandLine.argc < 2) {
    print("Usage: dictionary word")
}else{
    let argument = CommandLine.arguments[1]
    let result = DCSCopyTextDefinition(nil, argument as CFString, CFRangeMake(0, argument.count))?.takeRetainedValue() as String?
    print(result ?? "")
}
  1. 이것을 다음과 같이 저장하십시오 dict.swift
  2. 에 의해 권한을 추가 chmod +x dict.swift
  3. 조회 사전
    • 통역사와 함께 달리다 ./dict.swift word
    • 컴파일러로 빌드 swiftc dict.swift하고 실행./dict word

2

David Perace의 업데이트 된 코드는 몇 가지 색상과 줄을 추가합니다.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import re
from DictionaryServices import *

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

def main():
    try:
        searchword = sys.argv[1].decode('utf-8')
    except IndexError:
        errmsg = 'You did not enter any terms to look up in the Dictionary.'
        print errmsg
        sys.exit()
    wordrange = (0, len(searchword))
    dictresult = DCSCopyTextDefinition(None, searchword, wordrange)
    if not dictresult:
        errmsg = "'%s' not found in Dictionary." % (searchword)
        print errmsg.encode('utf-8')
    else:
        result = dictresult.encode('utf-8')
        result = re.sub(r'\|(.+?)\|', bcolors.HEADER + r'/\1/' + bcolors.ENDC, result)
        result = re.sub(r'▶', '\n\n ' + bcolors.FAIL + '▶ ' + bcolors.ENDC, result)
        result = re.sub(r'• ', '\n   ' + bcolors.OKGREEN + '• ' + bcolors.ENDC, result)
        result = re.sub(r'(‘|“)(.+?)(’|”)', bcolors.WARNING + r'“\2”' + bcolors.ENDC, result)
        print result

if __name__ == '__main__':
    main()

1

Dictionary OSX를 사용해보십시오 (다른 답변을 고수하고 Python 이외의 솔루션을 원한 후에 이것을 만들었습니다). 의 정의를 사용합니다 Dictionary.app.

dictionary cat
# cat 1 |kat| ▶noun 1 a small domesticated carnivorous mammal with soft fur...

그것은 사용 DictionaryKit , OSX에서 사용할 수있는 개인 사전 서비스에 대한 래퍼입니다. 이것이 NSHipster 에서 어떻게 작동하는지에 대한 흥미로운 배경 정보가 있습니다.



0

나는 비슷한 것을 찾기 위해이 게시물을 보았습니다. 사용 가능한 옵션에 만족하지 않아 간단한 스크립트를 만들었습니다. 텍스트 기반 음성을 사용하는 터미널 기반 동의어 사전입니다. 관심이있을 수 있습니다 ...

https://github.com/aefty/thes


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