Linux bash命令错误地处理输出中的零。

时间:2014-04-01 14:21:51

标签: linux bash x11

我使用的是Debian 6-64。 当我正在运行命令时

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',截断输出。

如何才能获得正确的输出?

2 个答案:

答案 0 :(得分:5)

tr手册:

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

你给了四位数。第四个作为单独的符号('0')处理,也被替换。

答案 1 :(得分:0)

这也应该有效,并且更简洁:

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