german translation with>
leo (){ l="en"; if [ "${1:0:1}" = "-" ]; then l=${1:1:2};shift;fi;Q="$*";curl -s "${l}de/?search=${Q// /%20}" | html2text | sed -e '0,/H.ufigste .*/d;/Weitere Aktionen/,$d;/f.r Sie .*:/,$d' | grep -aEA900 '^\*{5} .*$'; }

foo <--> german translation with

Translate strings from non-german to german (and vice versa) using LEO. Put it in your ~/.bashrc. Usage: leo words   To use another language other than english, use an option: leo -xx words Valid language options: ch - chinese en - english es - spanish fr - french it - italian pl - polish pt - portuguese ru - russian The other language will always be german!
Sample Output
joe@marry:~$ leo hart am Wind segeln
***** Verben *****
????to sail near the wind |?sailed, sailed?|       ?hart am Wind segeln ??
        [naut.]                                            [Segeln]
????to sail close to the wind |?sailed, sailed?|   ?hart am Wind segeln ??
        [naut.]                                            [Segeln]
????to sail on a close reach |?sailed, sailed?|    ?am Wind segeln ??[Segeln]
????to sail close to the wind |?sailed, sailed?|   ?dicht am Wind segeln ??
        [naut.]                                            [Segeln]
????to sail near the wind |?sailed, sailed?|       ?dicht am Wind segeln ??
        [naut.]                                            [Segeln]
***** Adjektive / Adverbien *****
?? ?close-hauled ?adj. [naut.] ?hart am Wind


joe@marry:~$ leo -fr Mitternacht
***** Substantive *****
?? ?minuit ?m.??die Mitternacht ?kein Pl.
***** Beispiele *****
?? ?Il est minuit.               ?Es ist Mitternacht.
?? ?La plupart sont partis vers  ?Die meisten sind gegen Mitternacht
       minuit.                        gegangen.

2013-06-24 22:35:46

These Might Interest You

  • A bash function might also be useful: dict() { curl dict://$1; } Or if you want less verbose output: dict() { curl -s dict://$1 | perl -ne 's/\r//; last if /^\.$/; print if /^151/../^250/'; } Show Sample Output

    curl dict://
    HorsePunchKid · 2009-04-10 18:12:37 1
  • the google-api gives you only one translation which is sometimes insufficent. this function gives you all translations, so you can choose which one fits best.

    translate() { echo $1: $(wget -q -O - ''$1'&langpair=en|de' | grep '^<span class="dct-tt">.*</span>$' | sed 's!<span class="dct-tt">\(.*\)</span>!\1, !'); }
    fpunktk · 2010-09-02 00:08:06 0
  • So I use OSX and don't have the shuf command. This is what I could come up with. This command assumes /usr/share/dict/words does not surpass 137,817,948 lines and line selection is NOT uniformly random. Show Sample Output

    jot 4 | awk '{ print "wc -l /usr/share/dict/words | awk '"'"'{ print \"echo $[ $RANDOM * $RANDOM % \" $1 \"]\" }'"'"' | bash | awk '"'"'{ print \"sed -n \" $1 \"p /usr/share/dict/words\" }'"'"' | bash" }' | bash | tr -d '\n' | sed 's/$/\n/'
    fathwad · 2011-08-16 00:26:56 0
  • searches through the linux dictionary for the word you're trying to spell (you can use regular expressions, e.g. "< /usr/share/dict/words egrep bro[c]+o[l]+i" ) Show Sample Output

    < /usr/share/dict/words egrep onomatopoeia
    smop · 2010-08-13 00:12:39 1
  • The first grep rejects capitalised words since the dict has proper nouns in it that you mightn't want to use. The second grep rejects words with ending in apostrophe s, and the third forces the words to be at least 15 characters long. Show Sample Output

    cat /usr/share/dict/words | grep -P ^[a-z].* | grep -v "'s$" | grep -Pv ^.\{1,15\}$ | shuf -n4 | tr '\n' ' ' | sed 's/$/\n/'
    bugmenot · 2011-08-15 01:03:48 3

  • -1
    RANGE=`wc -l /usr/share/dict/words | sed 's/^\([0-9]*\) .*$/\1/'`; for i in {1..4}; do let "N = $RANDOM % $RANGE"; sed -n -e "${N}p" /usr/share/dict/words | tr -d '\n'; done; RANGE=100; let "N = $RANDOM % $RANGE"; echo $N
    unixmonkey24597 · 2011-08-16 07:04:57 0

What Others Think

'^Weitere Aktionen$' must be replaced by 'Weitere Aktionen' or '\* Weitere Aktionen \*'--probably output format of leo changed ad some point sed -e '/Weitere Aktionen/,$d' can do better as it doesn't output of the searched line itself and avoids the somehow 'dirty' -B 900
jandclilover · 175 weeks and 2 days ago
Thanks for your fixes, jandclilover! I also made a little change, so the lang variable can be used as an environment variable: lang=es leo Danke sehr ***** Phrasen ***** ?? ??Muchas gracias! ?Danke sehr!
michelsberg · 175 weeks and 2 days ago
Oh, let's see if that works: lang=es leo Danke sehr ***** Phrasen ***** ?? ??Muchas gracias! ?Danke sehr! Oh, I noticed that some languages (like pl,ru,ch) have an annoying "***** H?ufigste Anfragen der letzten 7 Tage *****" section above the results...
michelsberg · 175 weeks and 2 days ago
Umlauts don't arrive as "?" anymore. Fix: leo () { lang="en" if [ "${1:0:1}" = "-" ] then lang=${1:1:2} shift fi Q="$*" curl -s "${lang}de/?search=${Q// /%20}" | html2text | sed -e '0,/H.ufigste Anfragen/d;/Weitere Aktionen/,$d;/f.r Sie im .berblick:/,$d' | grep --color=always -EA 900 '^\*{5} .*$' }
michelsberg · 147 weeks and 5 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this? is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.


Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: