LinuxBash命令错误地处理输出中的零。
我用的是Debian6-64。 当我运行命令时LinuxBash命令错误地处理输出中的零。,linux,bash,x11,Linux,Bash,X11,我用的是Debian6-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-g5t0x
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'
,截断了输出
如何才能接收正确的输出
tr
手册:
\NNN character with octal value NNN (1 to 3 octal digits)
你给了四位数。第四个作为单独的符号处理(
'0'
),也会被替换。tr
手册:
\NNN character with octal value NNN (1 to 3 octal digits)
你给了四位数。第四个符号作为单独的符号(
'0'
)处理,也会被替换。这也应该可以使用,而且更简洁一些:
tr '\000' '\n' </proc/$(pgrep x-session-manager)/environ | awk -F= '/XAUTHORITY/{print $2}'
tr'\000'\n'这应该也可以,而且更简洁一些:
tr '\000' '\n' </proc/$(pgrep x-session-manager)/environ | awk -F= '/XAUTHORITY/{print $2}'
tr'\000'\n'谢谢,我改为3并得到了正确的结果。我应该看看说明书的。谢谢,我改成了3,得到了正确的结果。我应该看看说明书的。