FreeBSD에서 ls -sh를 사용하여 "사람이 읽을 수 있는" 크기 달성

FreeBSD에서 ls -sh를 사용하여 "사람이 읽을 수 있는" 크기 달성

GNU를 사용하면 ls"사람이 읽을 수 있는" 파일 크기를 얻을 수 있습니다(K, M, G, ...와 같은 접미사를 추가하여 킬로바이트, 메가바이트, 기가바이트 등을 의미하며 숫자는 1024 이하로 유지됨) -h. 만약에아니요와 함께 사용하세요. 단, -l에서만 사용하세요 -s.

lsFreeBSD와 함께 제공되는 소프트웨어 에서 이러한 동작을 어떻게 얻습니까? 즉, ls -shFreeBSD에서 어떻게 작동합니까?

답변1

이 질문에 대답하는 방법은 소스 코드를 읽는 것입니다.

-h이러한 옵션 중 하나라도 제공되지 않으면 오류가 보고되지 않습니다.

FreeBSD는 2001년에 이 옵션을 추가했습니다., OSX의 (상당히 오래된) Userland보다 앞서 있습니다. FreeBSD와 OSX 매뉴얼 페이지에는 동일한 설명이 있습니다 -h(그리고 "ls -lh"는 둘 다에 대해 작동합니다). 그러나 다음에서만 작동합니다 -l.

새로운 로고를 추가하고,-h언제-l옵션을 사용하면 파일 크기가 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 및 페타바이트 단위로 표시되어 자릿수를 3개 이하로 줄일 수 있습니다.

답변2

FreeBSd에서 GNU ls 기능을 사용하려면 다음을 설치하세요.gnuls 패키지그리고 별칭 lsgnuls.

기본 소프트웨어를 계속 사용하려면 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_FORCEls터미널에 쓰지 않더라도 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}'

관련 정보