GNU를 사용하면 ls
"사람이 읽을 수 있는" 파일 크기를 얻을 수 있습니다(K, M, G, ...와 같은 접미사를 추가하여 킬로바이트, 메가바이트, 기가바이트 등을 의미하며 숫자는 1024 이하로 유지됨) -h
. 만약에아니요와 함께 사용하세요. 단, -l
에서만 사용하세요 -s
.
ls
FreeBSD와 함께 제공되는 소프트웨어 에서 이러한 동작을 어떻게 얻습니까? 즉, ls -sh
FreeBSD에서 어떻게 작동합니까?
답변1
이 질문에 대답하는 방법은 소스 코드를 읽는 것입니다.
- FreeBSD는 여러 곳에서
ls
이 옵션을 사용합니다 .-h
처음에 이 일을 할 때파일 통계가 필요합니다. - 이 작업을 수행하려면 통계가 필요합니다."longform"(
-l
), inode(-i
) 또는 크기(-s
) 옵션은 가장 큰 숫자의 너비를 계산합니다. - 이 옵션 중 어느 것도 설정되지 않은 경우, 이 옵션을 사용하지 않습니다
-h
. - 이는 결합
-h
및-i
/또는-s
긴 목록을 만들 때 (-l
), 특히 그럴 때인쇄 크기. 그렇지 않으면 무시됩니다.
-h
이러한 옵션 중 하나라도 제공되지 않으면 오류가 보고되지 않습니다.
FreeBSD는 2001년에 이 옵션을 추가했습니다., OSX의 (상당히 오래된) Userland보다 앞서 있습니다. FreeBSD와 OSX 매뉴얼 페이지에는 동일한 설명이 있습니다 -h
(그리고 "ls -lh"는 둘 다에 대해 작동합니다). 그러나 다음에서만 작동합니다 -l
.
새로운 로고를 추가하고,
-h
언제-l
옵션을 사용하면 파일 크기가 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 및 페타바이트 단위로 표시되어 자릿수를 3개 이하로 줄일 수 있습니다.
답변2
FreeBSd에서 GNU ls 기능을 사용하려면 다음을 설치하세요.gnuls 패키지그리고 별칭 ls
은 gnuls
.
기본 소프트웨어를 계속 사용하려면 ls
.(스크립트는 다음에서 다시 게시됨) 을 사용하여 수행할 수 있습니다.du 출력을 크기별로 정렬하는 방법은 무엇입니까?) 이는 모든 POSIX 시스템에 적용됩니다.
CLICOLOR_FORCE=1 ls | awk '
function human(x) {
s="kMGTEPYZ";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/^[0-9]+/, human($1)); print}'
CLICOLOR_FORCE
ls
터미널에 쓰지 않더라도 BSD가 색상을 사용하게 합니다 . 반면에 ls
터미널에 쓰는 것이 아니기 때문에 열 대신 한 줄에 하나의 파일을 받게 됩니다. FreeBSD에서는 이 옵션을 사용하여 -C
열을 가져올 수 있지만 행 중간에서 크기를 찾아야 하므로 사후 처리 스크립트가 더 복잡해집니다. 이것을 시도해 보세요(테스트되지 않음):
CLICOLOR_FORCE=1 ls -C | awk '
function human(x) {
s="kMGTEPYZ";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/(^| )[0-9]+/, human($1)); print}'