2014-01-30 51 views
2

我注意到,當您詢問echo時,如果不在Emacs eshell中輸出尾隨的換行符,它仍會添加它。使Emacs eshell/echo換行符在普通終端中的行爲

例如,來自擊:

$ echo -n "a" | sha1sum 
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 - 

從Emacs的ESHELL:

$ echo -n "a" | sha1sum 
3f786850e387550fdab836ed7e6dc881de23001b - 

的原因是,一個附加字節被添加:

從擊:

$ echo -n "a" | wc -c 
1 

From ESHELL:

$ echo -n "a" | wc -c 
2 

而且使用hexdump都,這裏的輸出:

$ echo -n "a" | hexdump -C 
00000000 61 0a            |a.| 

我有點通過發現困惑:有一個0a(即「新線」的ASCII控制代碼)加入該不該不存在(傳遞給echo的「-n」選項應該不會添加換行符)。

需要什麼樣的elisp配置魔法才能使Emacs的eshell在將echo的輸出管道輸出到其他命令之前不添加換行符?

P.S:Debian Linux上的Emacs 24.3.50.1。

回答

2

eshell-echo似乎反轉-n的典型(sh/bash)含義,這可能是不幸的。 (僅供參考,如果輸入echo -h,它會告訴你這個。)

另外,如果eshell-plain-echo-behavior是非nil,它強制一個換行符到參數的結尾。

所以你想變量爲零,並且你想使用echo而沒有-n參數。