Ps

EOL 附近的“ps”輸出中缺少空格

  • November 20, 2014

注意前面缺少的空格foo

$ ps wafux | grep foo
[....]   21742  0.0  0.0  10688  2296 pts/2    S+   23:30   0:00              \_ grep --color=autofoo
$ echo $COLUMNS 
99

與此比較:

$ ps wafux | grep foo
[....]   22183  0.0  0.0  10688  2276 pts/2    S+   23:40   0:00              \_ grep --color=auto foo
$ echo $COLUMNS 
100

這兩種情況下,輸出中的最後一個oo都在第二行。調整大小後的說明截圖(去掉了使用者名和第一條提示行):

截屏

是否存在一些配置問題或已知問題?我的提示在換行符後不包含任何格式程式碼:

$ printf '%q\n' "$PS1"
$'$(exit_code=$?; [[ $exit_code -eq 0 ]] || printf %s \\[$BOLD_FORMAT\\] \\[$ERROR_FORMAT\\] $exit_code \\[$RESET_FORMAT\\] " ")\\u@\\[$BOLD_FORMAT\\]\\[$WARNING_FORMAT\\]\\h\\[$RESET_FORMAT\\]:\\[$BOLD_FORMAT\\]\\[$INFO_FORMAT\\]\\w\\[$RESET_FORMAT\\]\\[\\033]0;\\u@\\h:${PWD}\\007\\]$(__git_ps1 " (%s)")\n$ '

如果這只發生在著色中,這看起來像這個 grep bug

一種解決方法是neGREP_COLORS設置中使用,例如:GREP_COLORS=ne

引用自:https://unix.stackexchange.com/questions/168931