ls 출력에서 ​​파일 이름 사이의 마술 구분 기호는 무엇입니까?


20

ls(인수없이) 의 출력은 파일 이름을 줄 바꿈으로 구분하는 것으로 보입니다.

증거:

  • ls | grep foogrep각 파일 이름을 별도의 입력 줄로 취급 하여 예상대로 작동 합니다.

  • ls > files.txt; vim files.txt Vim에서->, 각 파일은 별도의 줄에 있습니다.

그러나 터미널에서 출력 ls은 여러 파일을 한 줄에 넣고 파일 이름을 공백으로 분리하여 잘 정렬 된 열을 만듭니다.

$ ls
a.txt  b.txt  c.txt

그래서 내 질문은, 어떻게이 일을합니까?

줄 바꿈을 '가짜로 만들기 위해 특수 제어 문자를 사용하고 있습니까? 또는 출력이 다른 명령으로 파이프되는시기를 알고 있으며이 경우 출력을 다르게 형식화합니까?

답변:


24

또는 출력이 다른 명령으로 파이프되는시기를 알고 있으며이 경우 출력을 다르게 형식화합니까?

예. 전체 설명서에서 ( info ls문서가 설치된 경우 사용 가능 ) :

표준 출력이 터미널 인 경우 출력은 열 (수직 정렬)이며 제어 문자는 물음표로 출력됩니다. 그렇지 않으면 출력이 한 줄에 하나씩 나열되고 제어 문자는 그대로 출력됩니다.

하나의 열 출력이 마음에 들면 다음을 실행할 수 있습니다.

ls -1

터미널에서도 가져옵니다.


7
특히이 함수 ls는 출력이 터미널인지 아닌지를 결정하는 데 사용됩니다 isatty(3).
Blrfl

또한 다소 관련이 있습니다. 간단한 쉘 스크립트에서 이것을 테스트하고 싶다면 tty -s리턴 상태를 확인하십시오.
Daniel Andersson 16:14에

10

ls출력을 파이프 할 때 감지합니다. 설명서에서 볼 수 있습니다.

표준 출력이 터미널 인 경우 출력은 열 (수직 정렬)이며 제어 문자는 물음표로 출력됩니다. 그렇지 않으면 출력이 한 줄에 하나씩 나열되고 제어 문자는 그대로 출력됩니다.

파이프 재 지정에 관계없이 출력의 각 파일을 별도의 행에 배치하려면 다음을 사용할 수 있습니다.

ls -1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.