![정렬을 변경하지 않고 Linux 명령을 사용하여 터미널 출력을 새 파일에 쓰는 방법은 무엇입니까?](https://linux55.com/image/99513/%EC%A0%95%EB%A0%AC%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20Linux%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%84%B0%EB%AF%B8%EB%84%90%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%83%88%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%93%B0%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
Linux 명령 출력을 새 파일에 기록하기 위해 다음 명령을 시도했지만 정렬이 다릅니다.
ls(터미널에서)
1m_complete.pl current_sample.pl rsdb.tcsh
1m_complete.pl~ current_sample.pl~ getp.pl
하지만 ls >> ls_out(Alignment Varies)을 시도하면
1m_complete.pl
current_sample.pl
rsdb.tcsh
1m_complete.pl~
current_sample.pl~
getp.pl
내 예상 결과:
1m_complete.pl current_sample.pl rsdb.tcsh
1m_complete.pl~ current_sample.pl~ getp.pl
답변1
ls
STDOUT이 터미널( isatty(1)
)에 연결되어 있는지 확인하고, 연결되어 있지 않으면 각 파일명을 별도의 줄에 인쇄합니다.
대신 ls -C >out.txt
, 또는 를 사용하여 열 형식 목록을 얻을 수 있습니다. 단, 두 경우 모두 출력은 터미널에 출력할 때 표시된 정확한 형식이 echo * >out.txt
아닙니다 .ls
답변2
ls
터미널이나 파일로 출력할 때 동작이 다릅니다.
터미널 출력은 기본적으로 열로 표시되는 반면, 파일 출력은 기본적으로 한 줄에 하나의 파일로 표시됩니다.
그냥 사용
ls -C
답변3
다른 답변에서 언급했듯이 ls
표준 출력이 터미널인지 여부에 따라 출력을 변경합니다.
ls -C
열 형식 출력을 강제 ls
하지만 기본적으로 80개 열에 맞도록 행 형식을 지정합니다. 터미널에서 얻은 결과와 일치하는 출력을 얻으려면 변수를 내보내야 합니다 COLUMNS
.
export COLUMNS
ls -C > output
COLUMNS
또는 다음을 지정 하려는 경우 ls
:
COLUMNS=$COLUMNS ls -C > output
(쉘이 터미널의 현재 너비를 알고 COLUMNS
변수 자체에서 사용할 수 있도록 한다고 가정합니다).