정렬을 변경하지 않고 Linux 명령을 사용하여 터미널 출력을 새 파일에 쓰는 방법은 무엇입니까?

정렬을 변경하지 않고 Linux 명령을 사용하여 터미널 출력을 새 파일에 쓰는 방법은 무엇입니까?

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

lsSTDOUT이 터미널( 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변수 자체에서 사용할 수 있도록 한다고 가정합니다).

관련 정보