---
title: "Experiments With Dictionary Server Protocol Linux | RFC 2229"
description: "There RFC 2229 defines the The Dictionary Server Protocol (DICT) is a TCP transaction based query/response protocol that."
url: "https://h3manth.com/scribe/experiments-dictionary-server-protocol-linux-rfc-2229/"
canonical_url: "https://h3manth.com/scribe/experiments-dictionary-server-protocol-linux-rfc-2229/"
markdown_url: "https://h3manth.com/scribe/blog/experiments-dictionary-server-protocol-linux-rfc-2229.md"
publishDate: "2009-08-03T00:00:00.000Z"
author: "Hemanth HM"
category: "linux"
tags: ["ubuntu","bash","linux"]
word_count: 329
reading_time_minutes: 2
x_markdown_tokens: 543
content_signal: "ai-train=yes, search=yes, ai-input=yes"
---

# Experiments With Dictionary Server Protocol Linux | RFC 2229

> There RFC 2229 defines the The Dictionary Server Protocol (DICT) is a TCP transaction based query/response protocol that.

There RFC 2229 defines the The Dictionary Server Protocol (DICT) is a TCP transaction based query/response protocol that allows a client to access dictionary definitions from a set of natural language dictionary databases.

The most common play with the DICT , that most people are aware is : ` curl -s dict://dict.org/d:word `

Exploring this a more , and using few quick cli utilities i tried the below.

But with the most common method as mentioned above the negative aspect is reflected when we have a huge list of words for which you are in need of it's meanings.

Assume that the list of words are in a file called "list" and the end of the trick you will have the meanings ins a file called "meanings"

  1. With "dict" utility , if on debian just do an apt-get install dict, then: ` cat list | xargs -n1 dict >> meanings `

  2. Using a simple Bash script : ` while read word; do curl dict://dict.org/d:$word >> meanings  
done < list `

3.With sed and curl : ` sed 's##dict://dict.org/d:#' list | xargs -d $'\n' curl > meanings `

I hope "can't" isn't in your word list.Using xargs there means you DO have a loop, you just can't see it. Also, it's got broken parsing.If there's a "'"[apostrophe] in one of the words, it'll fail. Solution : ` sed 's##dict://dict.org/d:#' list | tr '\n' '\0' | xargs -0 curl > meanings `

It's a bit ugly imo, but it replaces all \ns with \0s, since \0 is the only delimiter where xargs will not treat "'" [apostrophe] specially.

You may wonder what does the ## and # signify in sed ? sed users are familiar with sed substitutions: ` s/pattern/replacement/ ` whichever character is after the s will be used as the separator. It doesn't have to be / since the replacement contained /, it's easier to use a different separator rather than escape each / dict:\/\/ [Ugly escape].
