coreutils ls 요약

coreutils ls 요약

lsMS-DOS/Windows에 있는 것처럼 coreutils 명령에 요약 옵션이 없는 이유는 무엇입니까 ?

요약 옵션의 경우 다음을 의미합니다.
계산문서그리고목차그리고 그들의 요약크기.

고쳐 쓰다:

내용은 다음과 같아야 합니다. "심지어DOS/Windows에는 하나가 있습니다. "

그것은:

command.com  vs.  sh
cmd.exe      vs.  bash

후자에는 분명한 점이 있습니다.

그러나 어떤 이유에서인지, 그것이 바로 문제입니다. Linux/Unix는요약 없음디렉토리 목록에 있습니다.

문제를 해결하는 대신 이것이 옳고, 옳은 일이며, "잘했어요"라고 말하십시오... 그리고 나서야 스레드는 문제가 있는 솔루션을 수정하기 위한 스크립트와 함께 분출됩니다!

내 생각에는 이것이 좋은 예이다.XY 문제:

  • 사용자는 X를 원합니다.
  • 사용자는 X를 수행하는 방법을 모르지만 Y를 수행할 수 있으면 솔루션을 찾을 수 있다고 생각합니다.
  • 사용자는 또한 Y를 수행하는 방법도 모릅니다.
  • 사용자가 Y에 대한 도움을 요청했습니다.
  • 다른 사람들은 사용자가 문제 Y를 해결하도록 도우려고 하지만 Y가 해결하기에는 이상한 문제인 것처럼 보이기 때문에 혼란스러워합니다.
  • 많은 상호 작용과 시간 낭비 끝에 결국 사용자는 X에 대한 도움이 필요하고 Y는 막다른 골목이라는 것이 분명해졌습니다.

다음 상황을 상상해 보세요.

레스토랑에 앉아 있으면 웨이터가 계산서를 가져옵니다. 그는 모든 요리를 나열했지만 요약하지는 않았습니다! 당신은 그것을 스스로 해야 합니다. 그는 "잘 해냈습니다".

아니면 그 사람이 그랬나요?


결론:

물론 나도 알아 - 그리고 좋아해 -UNIX 툴킷. 그러나 기본 기능은 도구 자체에서 제공되어야 합니다. 특히 긴급하게 필요한 경우 올바른 위치에 몇 개의 숫자를 추가하는 것은 전혀 문제가 되지 않습니다. 나는 그렇게 하지 않을 이유가 없다고 본다.


결론적으로:

나의 현재 이해는 다음과 같습니다POSIX!

이것POSIX표준에서는 요약에 대해 언급하지 않습니다. 그게 다야.

돌에 새겨져 있습니다.

사람들은 그것에 대해 생각조차 하지 않는다엑스. 그들은사용된다루기 위해서.

그러나 놀랍게도 우리는 이 시나리오의 가능성을 완전히 무시합니다.

답변1

그러나 기본 기능은 도구 자체에서 제공되어야 합니다.

이것은 정확합니다. UNIX/Linux 철학은 다음과 같습니다.한 가지 일을 수행하고 그 일을 정말 잘 수행하는 명령/도구를 갖습니다.. 그런 다음 한 명령의 표준 출력이 다른 명령의 표준 입력으로 연결되어 복잡한 결과를 생성합니다.

맨페이지에 따르면 이 명령의 목적은 ls"파일에 대한 정보 나열"입니다. 패턴을 포함하거나 제외하고, 다양한 기준으로 정렬하고, 다양한 정보를 표시하는 등의 목록을 생성할 수 있지만 그게 전부입니다. 파일 집합의 전체 크기 계산은 책임이 아닙니다 ls. 사실, 바로 그런 일이 일어났습니다 du. 맨페이지에도 있는 이 du명령은 "파일 세트의 디스크 사용량을 요약"하는 도구입니다.

따라서 이는 귀하가 찾고 있는 답변이 아닐 수도 있지만 ls동작은 다음과 같습니다.UNIX에 의해 설계됨. 이 디자인은 수십 년 동안 효과적인 것으로 입증되었다고 덧붙일 수 있습니다.

반면에 제가 알아차린 것처럼 Windows의 철학은 다릅니다. 내가 보기에 그 목표는 사용자에게 모든 것을 할 수 있는 몇 가지 일반적인 도구를 제공하는 것, 어쩌면 (경험이 없는) 사용자가 너무 많은 명령을 배우지 않도록 하는 것인 것 같습니다.

답변2

du파일 및 디렉터리 사용량을 요약하는 강력한 명령입니다. 바라보다https://superuser.com/questions/162749/how-to-get-the-summarized-sizes-of-directories-and-their-subdirectories.

예를 들어 du -sh *각 폴더의 크기를 확인합니다. 이 -c옵션을 추가하면 du -csh *끝에 합계가 표시됩니다.

파일 개수는 wc아래와 같이 ls 출력을 파이핑하여 확인할 수 있습니다 ls | wc -l.

무엇을 하든 Linux에는 방법이 있다고 확신합니다. DOS/Windows에서 익숙한 것과 다를 수 있지만 일반적으로 Linux는 구현할 수 있는 측면에서 훨씬 더 유연합니다.

답변3

음, 출력을 생성할 수 있는 unix/linux 유틸리티가 있습니다.비슷한dir출력 으로 DOS(나는 렌즈를 사용하고 있습니다이 페이지를 참고자료로 사용하세요지금은 Windows 컴퓨터에 액세스할 수 없기 때문에):

tree

요약과 함께 현재 디렉토리의 내용을 나열합니다.도스와 유사다음 스위치를 사용하십시오.

-i -- 들여쓰기 라인을 인쇄하지 않음
-L 1 -- 깊이 수준을 1로 설정
--du -- 각 디렉토리 크기를 모든 파일과 하위 디렉토리(거부되지 않는 한 해당 파일 등)의 누적 크기를 적절한 수준까지 보고합니다. 디렉토리의 하위 디렉토리 -L. 사용된 총 공간 크기도 최종 보고서에 제공됩니다.
--timefmt '%D %T' --형식 문자열에 따라 날짜를 인쇄하고 형식을 지정합니다.%D %T

예를 들어 실행해 보세요.

tree -i -L 1 --du --timefmt '%D %T'

인쇄

[    8499420 12/05/22 21:38:20]  .
[    2028626 12/28/21 13:24:00]  02.jpg
[    4907520 11/08/22 01:54:10]  03.JPG
[       4096 12/05/22 17:38:54]  05-dir
[     465991 11/01/22 21:46:33]  08.jpg
[     418149 11/01/22 21:46:33]  09.jpg
[       4096 11/28/22 20:42:09]  11-dir
[     583732 10/16/22 21:34:43]  16.png
[      83114 02/20/22 23:01:49]  19.jpg

     8499420 bytes used in 2 directories, 6 files

이제...몇 가지 차이점이 있습니다.

우선, 내가 아는 한, <DIR>후처리 없이 디렉토리를 인쇄할 수 있는 방법은 없습니다... 그러나 환경 변수가 설정되고 출력이 이면 tree디렉토리는 어느 쪽이든 다른 색상을 갖게 됩니다. , 다른 것을 사용할 수 있습니다. 예를 들어, 내 설정에서는 다음과 같습니다(이번에는 인쇄 크기에 사람이 읽을 수 있는 형식이 추가됨).LS_COLORSttyTREE_COLORS-h

TREE_COLORS="di=1;32" tree -i -L 1 --du --timefmt '%D %T' -h

여기에 이미지 설명을 입력하세요.

-F사용할 때와 동일한 기능 도 있습니다 . 예를 들어 디렉터리에 하나, 소켓 파일에 하나, 실행 파일에 하나 등 ls을 추가합니다 (이에 대한 자세한 내용은 예를 들어 파일을 정렬하는 다양한 방법, 숨겨진 파일 표시를 참조하세요). , 등.)/=*

둘째, tree크기, 날짜, 파일 이름 순으로 다른 순서로 열을 인쇄합니다. 마찬가지로 후처리 없이 열의 순서를 변경할 수 있는 방법은 없습니다. v.1.7부터 treeJSON을 출력하는 것이 가능합니다. 해당 JSON 출력을 jq예를 들어 다음 과 같이 파이프할 수 있습니다."도구 자체에서 제공하는 기본 기능"

관련 정보