저 할 수 있어요
$ echo $COLUMNS
95
결과를 얻지만 만약 내가
env | grep COLUMNS
또는
set | grep COLUMNS
나는 아무것도 얻지 못했습니다.
(업데이트: 방금 bash에서 동작이 다르다는 것을 발견했습니다. 저는 zsh를 사용하고 있습니다.)
둘째, 열이 포함된 목록을 어떻게/어디서 얻을 수 있습니까? (직접 답변하는 것은 제외합니다.)
답변1
set | grep COLUMNS
"바이너리 파일(표준 입력) 일치"가 표시되어야 합니다(GNU grep 사용).무루범인은 올바르게 식별되었습니다. zsh에서는 IFS
표준 문자 공백, 탭, 줄 바꿈 외에도 null 바이트도 포함되어 있습니다.
set | grep --text COLUMNS
grep이 바이너리 파일을 건너뛰는 경향을 무시하도록 실행하세요 .
run은 set
많은 쉘에서 출력이 모호하기 때문에 현재 설정된 매개변수를 나열하는 이식 가능하고 신뢰할 수 있는 방법이 아닙니다(변수 값의 일부인 개행 문자와 변수를 구분하는 개행 문자를 구별할 수 없음). zsh set
의 출력은 모호하지 않도록 인용되어 있지만 구문 분석하기 어렵습니다. grep
거짓 긍정이 여전히 반환될 수 있습니다. zsh의 모든 매개변수를 나열하려면 배열의 키를 열거하십시오 parameters
.
print -rl ${(ko)parameters}
답변2
추측해야 한다면 의심할 것이다.IFS
. 또한 set
나열됩니다 IFS
. 나에게 IFS
그것은 (공백, 가로 탭, 개행 및 nul)이었습니다.
$ printf "%s" "$IFS" | od -a
0000000 sp ht nl nul
0000004
\0
NUL 문자( )가 있으면 grep
이진수로 처리되므로 사용자에 따라 grep
다음이 표시될 수 있습니다.
$ set | grep COLUMNS
Binary file (standard input) matches
grep
입력이 텍스트로 처리되도록 강제할 수 있습니다 .
-a, --text
Process a binary file as if it were text; this is equivalent
to the --binary-files=text option.
그래서:
$ set | grep COLUMNS --text
COLUMNS=239