ls
출력이 터미널로 전달되는지 테스트합니다. 출력이 터미널로 보내지지 않으면 -1
기본값입니다. (이것은 중 하나에 의해 대체 될 수 있습니다 -C
, -m
또는 -x
옵션.)
따라서 ls
파이프 라인에 사용될 때 다른 옵션으로 재정의하지 않은 경우을 ls
사용 -1
합니다. 이 동작은 POSIX에 필요하기 때문에이를 신뢰할 수 있습니다
POSIX 사양
-1
출력이 터미널로 이동하지 않을 때마다 POSIX가 기본값으로 필요합니다 .
POSIX 사양 :
기본 형식은 한 줄에 하나의 항목을 표준 출력으로 나열하는 것입니다. 터미널 또는 -C, -m 또는 -x 옵션 중 하나가 지정된 경우는 예외입니다. 출력이 터미널에 대한 경우 형식이 구현 정의됩니다.
기본 단일 열 형식을 재정의하는 세 가지 옵션은 다음과 같습니다.
-C
조합 순서에 따라 항목을 열별로 정렬하여 다중 텍스트 열 출력을 씁니다. 텍스트 열 수와 열 구분 문자는 지정되지 않지만 출력 장치의 특성에 맞게 조정해야합니다. 이 옵션은 긴 형식 출력을 비활성화합니다.
-m
스트림 출력 형식; 페이지 전체의 경로 이름을 <쉼표> 문자와 <공백> 문자로 구분하여 나열하십시오. 다음 목록 항목을위한 공간이없는 경우 <newline> 문자를 목록 종결 자로 사용하고 구분 기호 시퀀스 뒤에 사용하십시오. 이 옵션은 긴 형식 출력을 비활성화합니다.
-x
다중 텍스트 열 출력이 열이 아닌 아래로 정렬 된 항목으로 생성된다는 점을 제외하고는 -C와 동일합니다. 이 옵션은 긴 형식 출력을 비활성화합니다.
GNU 문서
에서 GNU 수동입니다 아닙니다 :
'-1'
'--format = single-column'
한 줄에 하나의 파일을 나열하십시오. 표준 출력이 터미널이 아닌 경우 ls의 기본값입니다 . 파일 이름 내에 개행 문자가 직접 출력되지 않도록하려면 -b 및 -q 옵션을 참조하십시오. [공포도 추가]
예
세 개의 파일을 만들어 봅시다 :
$ touch file{1..3}
출력이 터미널로 갈 때 GNU ls
는 다중 열 형식을 사용하도록 선택합니다.
$ ls
file1 file2 file3
출력이 파이프 라인으로 갈 때 POSIX 스펙에서는 단일 열이 기본값이어야합니다.
$ ls | cat
file1
file2
file3
기본 단일 열 동작을 재정의하는 세 가지 예외는 -m
쉼표로 구분되고 -C
열이 정렬되어 있고 -x
열이 정렬되어있는 경우입니다.
$ ls -m | cat
file1, file2, file3
$ ls -C | cat
file1 file2 file3
$ ls -x | cat
file1 file2 file3
n=0; for i in .* *; do ((n++)) ; done ; echo $n
할 수 있습니다. 또는 :ls -1d ./.* ./* | grep '^\./' | wc -l
(파일 이름에 '/'를 포함 할 수 없으므로)