일부 본쉘의 read
에서 파일의 전체 라인을 읽을 수없는 내장 /proc
(아래에서 실행해야 할 명령 zsh
, 대체 $=shell
와 $shell
다른 껍질을) :
$ for shell in bash dash ksh mksh yash zsh schily-sh heirloom-sh "busybox sh"; do
printf '[%s]\n' "$shell"
$=shell -c 'IFS= read x </proc/sys/fs/file-max; echo "$x"'
done
[bash]
602160
[dash]
6
[ksh]
602160
[mksh]
6
[yash]
6
[zsh]
6
[schily-sh]
602160
[heirloom-sh]
602160
[busybox sh]
6
read
표준은 표준 입력이 텍스트 파일이어야 한다고 요구하는데, 그 요구로 인해 다양한 동작이 발생합니까?
텍스트 파일 의 POSIX 정의를 읽고 확인을하십시오.
$ od -t a </proc/sys/fs/file-max
0000000 6 0 2 1 6 0 nl
0000007
$ find /proc/sys/fs -type f -name 'file-max'
/proc/sys/fs/file-max
아무 없다 NUL
의 내용의 문자 /proc/sys/fs/file-max
, 또한 find
일반 파일로보고 (이 버그인가 find
?).
나는 껍질이 후드 아래에서 뭔가를 한 것 같아요 file
.
$ file /proc/sys/fs/file-max
/proc/sys/fs/file-max: empty
strace
기반 설명은 이해하기 훨씬 쉽습니다!