2014-04-01 41 views
1

我正在使用Debian 6-64。 當我運行一個命令Linux bash命令不正確地處理輸出中的零。

echo -n `cat /proc/$(ps -o pid --no-header -C x-session-manager | tr -d ' ')/environ 2>/dev/null | tr '\0000' '\n'|grep XA|cut -d '=' -f 2` 

收購XAUTHORITY當前用戶登錄,我希望它此刻我的實際XAUTHORITY路徑,即返回:

/var/run/gdm3/auth-for-alex-g5t0xM 

但什麼它實際上返回的是

/var/run/gdm3/auth-for-alex-g5t 

0xM缺少的一部分。

顯然它以某種方式需要0作爲'\0',截斷輸出。

如何才能接收正確的輸出?

回答

5

tr手冊:

\NNN character with octal value NNN (1 to 3 octal digits) 

你給了四位數。第四個作爲單獨的符號處理('0')並被替換。

+0

謝謝,我改爲3,並得到正確的結果。我應該查看手冊。 – kopalvich

0

這應該工作以及和是一個小更簡潔:

tr '\000' '\n' </proc/$(pgrep x-session-manager)/environ | awk -F= '/XAUTHORITY/{print $2}'