ค้นหาคำใน Dictionary.app ใน Terminal


19

มี bash หรือ applescript เพื่อค้นหาคำ/Applications/Dictionary.appจากหน้าต่าง Terminal หรือไม่?

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

ไม่สนใจ - ระบุว่า "พิมพ์คำเพื่อค้นหา"

การปรับปรุง Mac Dictionaryแนะนำ⌃ Control ⌘ Command Dแต่ฉันกำลังมองหาที่จะเปิดตัวแอพพลิเคชั่นเต็มรูปแบบไม่ใช่เพียงแค่ป๊อปอัปขนาดเล็ก


แทนที่จะคลิกปุ่ม "เพิ่มเติม" คุณเพียงคลิกชื่อพจนานุกรมในป๊อปอัปเพื่อเปิดการค้นหาในแอปพลิเคชันพจนานุกรม
gentmatt

ขอบคุณทุกคน, there's_more_than_one_way_to_skin_a_cat
เดนิส

คำตอบ:


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 เมื่อครู่ที่ผ่านมาsuperuser.com/questions/4368/os-x-equivalent-of-windows-run-box/…
Josh Hunt

@denis ระบบรักษาฐานข้อมูลของคำนำหน้าทั้งหมดที่ติดตั้งแอปทั้งหมดได้บอกวิธีจัดการ หากคุณสามารถนึกถึงการใช้งานจริงสำหรับการรู้ว่าชิ้นอาหารอันโอชะที่ถามคำถามเต็มจะน่ากลัว
bmike

18

การใช้การรวม Python Objective-C คุณสามารถสร้างเพียงสคริปต์ python ขนาดเล็กเพื่อรับมันจากพจนานุกรม OS X ในตัว นี่คือโพสต์ที่มีรายละเอียดสคริปต์นี้ "

#!/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เช่นกัน แต่ API ของ Google ก็ใช้พจนานุกรม New Oxford American อีกด้วย:

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

ลองใช้พจนานุกรม OSX (ฉันทำสิ่งนี้หลังจากติดกับคำตอบอื่น ๆ และต้องการวิธีแก้ปัญหาที่ไม่ใช่งูใหญ่) 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


0

ดูในกระทู้ต่อไปนี้เพื่อค้นหาวิธีใช้ Dictionary.app ใน Terminal: https://discussions.apple.com/thread/2679911?start=0&tstart=0


1
รู้รอบบน Ask Different จะต้องเป็นมากกว่าแค่ลิงค์ มันไม่เป็นไรที่จะรวมลิงค์ แต่โปรดสรุปหรือตัดตอนมาในคำตอบ ความคิดคือการทำให้คำตอบยืนอยู่คนเดียว
nohillside
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.