Terminal'de Dictionary.app içinde bir kelime aramak


19

/Applications/Dictionary.appTerminal penceresinden bir kelime aramak için bir bash veya applecript var mı ?

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

--args, "aramak için bir kelime yazın" diyor

Mac Dictionary geliştirmeleri , ⌃ Control ⌘ Command Dsadece küçük popover'ı değil, tam uygulamayı başlatmak istediğimi gösteriyor.


"Diğer" düğmesi yerine, sözlük uygulamasında aramayı açmak için açılır pencerede sözlüğün adını tıklamanız yeterlidir.
gentmatt

Yanıtlar:


20

Kullanabilirsiniz...

open dict://my_word

... Sözlük uygulamasını açar ve dizeyi arar my_word. Birden fazla kelime kullanmak istiyorsanız, benzer bir şey kullanın open dict://"Big Bang Theory".

Yine de Terminal'de çıktı yok.


Teşekkürler. Açık magicprefix'in bir listesi var mı: ... bir yerde mi?
denis

@Denis Özellikle belgelenmemiş komut seçeneklerini toplayan bir kaynak bilmiyorum open. Ama genel olarak konuşursak, hints.macworld.com gizli mücevherler için iyi bilinen bir kaynaktır. Belgelendirilmemiş defaults writekomutları toplayan farklı bir kaynak biliyordum, ama sadece bildiğimi hatırlamıyorum ve Google da bana yardım etmedi ...
gentmatt

openBir süre önce SuperUser hakkında kısa bir özet yaptım superuser.com/questions/4368/os-x-equivalent-of-windows-run-box/…
Josh Hunt

@denis sistem, yüklü tüm uygulamaların nasıl işleneceğini anlattığı tüm öneklerin bir veritabanını tutar. Eğer bu çöplüğü bilmek için pratik bir kullanım düşünebilirseniz, tam bir soru sormak harika olurdu.
bmike

18

Python Objective-C bağlamaları kullanarak, yerleşik OS X Sözlüğü'nden almak için sadece küçük bir python betiği oluşturabilirsiniz. İşte bu komut dosyasının ayrıntılarını gösteren bir yayın "

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

Bunu dict.pyşuraya kaydedin ve ardından çalıştırınpython dict.py dictation

resim açıklamasını buraya girin

Yayınını inceleyin bu bilgilerin terminal genelinde tüm erişilebilir hale getirmek için daha fazla talimat için.


1
Bu komut dosyasını kullandım, ancak çıktıda satır sonu yok, şöyle görünüyor: i.imgur.com/ooAwQCA.png (bir OS X 10.9'da ).
h__

Ayrıca çıktıda yeni satır almıyorum. Kontrol etmek print repr(dictresult.encode('utf-8'))bana şunu gösterir:'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

Satır sonlarını simüle etmek için bazı dize değiştirmeleri ekledim .. kapsamlı bir şekilde test etmememe
magicrebirth

Bu artık işe yaramıyor gibi görünüyor.
Mart'ta Diş Hekimi

4

Ben de önerecektim open dict://word, ancak Google'ın sözlük API'sı New Oxford American Dictionary'i de kullanıyor:

#!/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'nın kullanımdan kaldırıldığı ve 404 döndürdüğü anlaşılıyor. Görünüşe göre dictionaryapi.com işe yarayabilir, sadece giriş yapmak zorundasınız.
Sam Berry

4

Swift 4 kullanarak bir çözüm buldum.

#!/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. bunu farklı kaydet dict.swift
  2. tarafından izin ekle chmod +x dict.swift
  3. sözlük ara
    • tercüman ile koş ./dict.swift word
    • derleyici tarafından inşa swiftc dict.swiftve çalıştırmak./dict word

2

David Perace yanıtından güncellenen kod, bazı renkler ve yeni çizgiler ekleyin:

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

Sözlük OSX deneyin (Diğer cevaplar ile sıkışıp Python olmayan bir çözüm istedikten sonra bunu yaptım). 'Den tanımları kullanır Dictionary.app.

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

OSX'te bulunan özel Sözlük Hizmetleri için bir sarıcı olan DictionaryKit'i kullanır . Bunun NSHipster'da nasıl çalıştığı hakkında ilginç arka plan bilgileri var .



0

Benzer bir şey arayan bu yazıyla karşılaştım. Mevcut seçenekler ile mutlu değildi bu yüzden basit script yaptı. Onun metin konuşma ile bir terminal tabanlı eş anlamlılar sözlüğü. İlginizi çekebilir ...

https://github.com/aefty/thes


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.