ターミナルのDictionary.appで単語を検索します


19

/Applications/Dictionary.appターミナルウィンドウから単語を検索するbashまたはapplescriptはありますか?

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

--argsを無視し、「検索する単語を入力してください」と言う

Mac辞書の改善⌃ Control ⌘ Command D、小さなポップオーバーだけでなく、完全なアプリの起動を検討していることを示唆しています。


「詳細」ボタンの代わりに、ポップアップで辞書の名前をクリックして、辞書アプリケーションで検索を開きます。
ジェントマット

回答:


20

使用できます...

open dict://my_word

... Dictionaryアプリケーションを開き、文字列を検索しますmy_word。複数の単語を使用する場合は、などを使用しますopen dict://"Big Bang Theory"

ただし、ターミナルには出力がありません。


ありがとう。開いているmagicprefix:...のリストはありますか?
-denis

@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バインディングを使用すると、組み込みのOS X辞書からそれを取得するための小さなPythonスクリプトを作成できます。このスクリプトの詳細については、次の投稿をご覧ください」

#!/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

これはもう機能しないようです。
歯磨き

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は仕事ができる、ちょうどログインを行う必要があります。
サム・ベリー

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

辞書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.