टर्मिनल में Dictionary.app में एक शब्द देखो


19

क्या /Applications/Dictionary.appटर्मिनल विंडो से किसी शब्द को देखने के लिए कोई बैश या एप्सस्क्रिप्ट है ?

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

इग्नोर करता है - शब्द कहते हैं, "देखने के लिए एक शब्द टाइप करें"

मैक शब्दकोश में सुधार का सुझाव है, ⌃ Control ⌘ Command Dहालांकि मैं केवल छोटे पॉपओवर ही नहीं, बल्कि पूर्ण ऐप लॉन्च करना चाहता हूं।


"अधिक" बटन के बजाय आप केवल शब्दकोश एप्लिकेशन में खोज को खोलने के लिए पॉप-अप में शब्दकोश के नाम पर क्लिक करें।
gentmatt

धन्यवाद सब लोग, there's_more_than_one_way_to_skin_a_cat
Denis

जवाबों:


20

आप उपयोग कर सकते हैं...

open dict://my_word

... जो डिक्शनरी एप्लिकेशन को खोलेगा और स्ट्रिंग की खोज करेगा my_word। यदि आप कई शब्दों का उपयोग करना चाहते हैं तो कुछ का उपयोग करें open dict://"Big Bang Theory"

हालांकि टर्मिनल में कोई आउटपुट नहीं है।


धन्यवाद। क्या खुले मैजिकप्रिफ़िक्स की सूची है: ... कहीं?
डेनिस

@ डेनिस मुझे एक ऐसे स्रोत के बारे में नहीं पता है जो विशेष रूप से इसके लिए अनिर्दिष्ट कमांड विकल्प एकत्र करता है open। लेकिन आम तौर पर बोलना, hints.macworld.com छिपे हुए रत्नों के लिए एक प्रसिद्ध स्रोत है। मैं एक अलग स्रोत को भी जानता था जो अनिर्दिष्ट defaults writeकमांड एकत्र करता है , लेकिन मैं इसे सिर्फ याद नहीं रख सकता और Google ने मेरी भी मदद नहीं की ...
gentmatt

मैं का एक संक्षिप्त सारांश बनाया openSuperUser पर थोड़ी देर पहले superuser.com/questions/4368/os-x-equivalent-of-windows-run-box/...
जोश हंट

@denis सिस्टम उन सभी उपसर्गों का एक डेटाबेस रखता है जिसे स्थापित किए गए सभी एप्लिकेशन ने इसे संभाल करने के तरीके के बारे में बताया है। यदि आप उस tidbit को जानने के लिए एक व्यावहारिक उपयोग के बारे में सोच सकते हैं, तो एक पूर्ण प्रश्न पूछना भयानक होगा।
bmike

18

पायथन ऑब्जेक्टिव-सी बाइंडिंग का उपयोग करके, आप इसे ओएस एक्स डिक्शनरी में निर्मित से प्राप्त करने के लिए सिर्फ एक छोटा अजगर स्क्रिप्ट बना सकते हैं। यहाँ एक पोस्ट है कि इस स्क्रिप्ट का विवरण है "

#!/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 पर)।
एचआई

मुझे आउटपुट में कोई नईलाइन नहीं मिलती है। जाँच 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 की डिक्शनरी एपीआई न्यू ऑक्सफोर्ड अमेरिकन डिक्शनरी का भी उपयोग करती है:

#!/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
गूगल एपीआई अब मान्य नहीं है और रिटर्न 404. लगता है कि यही कारण है कि dictionaryapi.com काम कर सकता था, बस एक लॉगिन करना है।
सैम बेरी

4

मुझे स्विफ्ट 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

डेविड पेरेस जवाब से अद्यतन कोड, कुछ रंग और नई लाइनें जोड़ें:

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

यह शब्दकोश का उपयोग करता है , OSX पर उपलब्ध निजी शब्दकोश सेवाओं के लिए एक आवरण। NSHipster पर यह कैसे काम करता है, इसके बारे में दिलचस्प पृष्ठभूमि की जानकारी है ।



0

मुझे इस पोस्ट में एक ऐसी ही चीज़ की तलाश थी। उपलब्ध विकल्पों के साथ खुश नहीं था इसलिए सरल स्क्रिप्ट बनाई। पाठ के साथ एक टर्मिनल आधारित थिसॉरस टू स्पीच। रुचि हो सकती है ...

https://github.com/aefty/thes


0

टर्मिनल में Dictionary.app का उपयोग करने का तरीका जानने के लिए निम्नलिखित धागे में देखें : https://discussions.apple.com/thread/2679911?start=0&tstart=0


1
पूछो अलग पर जवाब सिर्फ एक लिंक से अधिक होने की जरूरत है। लिंक शामिल करना ठीक है, लेकिन कृपया उसे संक्षेप में बताएं या उसका उत्तर दें। विचार उत्तर को अकेले खड़ा करने का है।
nohillside
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.