혼란스러운 ls 명령: "ls -t" 대 "ls -u"

혼란스러운 ls 명령: "ls -t" 대 "ls -u"

유닉스에서는 ls -l파일과 디렉터리의 긴 목록이 제공됩니다. ls -lt또한종류시간별로 정렬된 파일, 즉 마지막으로 변경되거나 수정된 ​​파일입니다. 이는 ls -lu긴 목록과 액세스 시간을 제공하고 마지막 액세스 기준이 아닌 az에서 파일을 정렬하는 것과 다릅니다. 액세스 시간을 기준으로 파일을 정렬 하고 싶지만 ls -lu이를 위해서는 ls -lut목록을 긴 형식으로 제공하고 액세스 시간을 인쇄하고 액세스 시간을 기준으로 정렬해야 합니다.

ERGO는 -t시간, 수정 시간 또는 액세스 시간을 기준으로 정렬하는 것을 의미해야 하며, ERGO -u목록인터뷰 시간. 액세스 시간별로 나열 및 정렬되는 것은 아닙니다. 그러면 더 이상 논쟁이 없으면 -t수정 시간별로 나열하는 것을 의미하는 것 같습니다.그리고 정렬수정 시간을 누르세요. 위 내용이 맞나요? 그렇지 않다면 내가 어디서 잘못됐나요?

답변1

이것ls매뉴얼 페이지이러한 옵션을 명확히 하는 데 도움이 될 수 있습니다.

-l옵션은 출력 형식을 제어하여 "긴" 목록을 생성합니다.

-t옵션은 수정 시간을 기준으로 정렬됩니다. 값이 이미 긴 형식으로 존재합니다.

-u이 옵션은 사용되는 옵션에 따라 다르게 작동합니다.

  1. 자체적으로는 ls -u액세스 시간을 기준으로 정렬됩니다.
  2. -l옵션을 사용하면 액세스 시간이 표시되지만 이름별로 정렬됩니다. 이 경우 정렬 옵션이 아닌 출력 수정자 역할을 합니다.
  3. -l및 을 사용 -t하면 접속 시간을 표시하고 이를 기준으로 정렬합니다.

-c옵션은 ctime 속성과 동일하게 작동합니다.

복잡성은 긴 목록 형식을 수정해야 하기 때문에 발생합니다. -lo그룹 정보 억제, -lG소유자 정보 억제, -lh사람이 읽을 수 있는 형식으로 크기 표시 등 여러 다른 옵션이 이 방식으로 작동합니다.


GNU 스타일 옵션ls수동이것을 이해하기 쉽게 만드십시오.

-l--format=long.

-t--sort=time.

-u--time=atime.

마찬가지다. -lu--format=long --time=atime , 긴 목록을 표시하되 기본 mtime 대신 atime을 사용합니다.

그리고 -ltu그렇습니다 --format=long --sort=time --time=atime. 이 예에서는 atime이 표시되고 정렬됩니다.

답변2

기본적으로 맞습니다. -t"시간별 정렬"은 -u"atime 타임스탬프 사용"( sort -t또는 display timestamp 사용 시 -l)을 의미합니다. POSIX 옵션은 타임스탬프별 정렬을 명시적으로 요청하는 데 사용 -u되지 않는 한 기본 정렬 순서를 변경하지 않습니다 .-t

POSIX 사양ls여기에는 다음 텍스트가 포함되어 있습니다.

-u

-t정렬( ) 또는 쓰기( ) 에는 마지막으로 수정된 파일 대신 마지막 액세스 시간(XBD <sys/stat.h> 참조)을 사용합니다 -l.

ls -u그러나 GNU 사람들은 다음과 같이 하는 것이 편리하다고 생각합니다.유형그렇지 않으면 ls -u와 출력 사이에 차이가 없습니다 ls(둘 다 이름별로 정렬되며 타임스탬프는 표시되지 않습니다). 이것이 GNU가 ls다른 시스템과 다르게 작동하는 이유입니다 ls.

lsGNU 시스템 문서에는 다음과 같이 요약되어 있습니다.

-u

with -lt: 접속 시간을 기준으로 정렬하고 표시합니다. with -l: 접속 시간을 표시하고 이름을 기준으로 정렬합니다. 그렇지 않으면 접속 시간을 기준으로 정렬합니다.

이 간략한 텍스트에서 언급되지 않은 것은 다른 어떤 것에도 해당되지 않습니다.비슷한-l예를 들어 와 같은 출력 형식은 -o이와 -g마찬가지로 옵션에서 -n정렬 효과를 제거 합니다. 이러한 옵션에는 GNU 매뉴얼에 "like but, ..."이라는 텍스트가 있습니다.-u-l-lls

-cctime 타임스탬프를 정렬/표시하기 위한 GNU의 옵션은 ls비슷한 방식으로 다른 옵션에 따라 달라집니다.

이것이 GNU가 ls작동하는 방식입니다1999년부터그 쯤.

ls어떤 구현을 사용하든 긴 형식 출력을 타임스탬프별로 정렬하려면 atime -t, -l -utctime -l -ct또는 -l -tmtime별로 정렬하는 데 .

답변3

-t방법유형시간별 - 시간 필드입니다.

-u수정 시간 대신 액세스 시간을 사용하는 것을 의미합니다(표시용).그리고/또는정렬(해당되는 경우)

따라서 귀하의 이해는 정확합니다. 귀하는 상황을 더욱 복잡하고 혼란스럽게 만들고 있습니다. 한발 물러서서 심호흡을 해보세요. 결국에는 그것이 그렇게 복잡하지 않다는 것을 깨닫게 될 것입니다.

PS 참고해주세요-t 아니요-l-o(또는 또는 와 같은 유사한 옵션 -g)은 그렇지 않습니다.전시하다모든 시간 필드.

관련 정보