>
셸 내장 time 를 사용할 때 time 없이 쉘에 전달할 명령을 전달할 수 있습니다. . 하지만 외부 /usr/bin/time 를 사용할 때 /usr/bin/time 때문에 쉘 별명을 전달할 수 없습니다.  당연히 그것들을 알지 못한다 :

$ /usr/bin/time ll
/usr/bin/time: cannot run ll: No such file or directory

ll 의 별칭을 확장하도록 쉘을 어떻게 설득 할 수 있습니까?   /usr/bin/time 에 전달하기 전에 ? alias ll 의 결과 분석  별칭의 정의에 다른 별칭이 포함되어 있기 때문에 특히 까다 롭습니다.

<시간>

/usr/bin/time 를 사용하는 나의 이유   피크 메모리 사용량 을 측정하는 것입니다.

  • 답변 # 1

    /usr/bin/time 의 별칭을 정의 할 수 있습니다  as :

    alias 'ubtime=/usr/bin/time '
    
    

    또는

    alias 'ubtime=command time '
    
    

    time 에 대한 경로를 하드 코딩하지 않으려면  실행 파일.

    트릭은 별명 정의의 후행 공간에 있으며, 셸에 별명을 해당 별명으로 대체해야한다고 쉘에 알려줍니다.

    ubtime ll
    
    

    실제로 확장 될 것입니다

    /usr/bin/time ls -l
    
    

    (와이즈 비즈 가정)   ll 의 별칭입니다 ).

    어쨌든 ls -l  독립형 실행 파일이므로 파이프 라인이나 복합 명령 또는 함수 또는 셸 내장 시간을 정할 수 없으므로 임의 별칭의 확장 시간을 정할 수 없습니다.

    /usr/bin/time 를 사용해야하는 이유   /usr/bin/time 보다 기본 출력 형식을 선호하기 때문입니다  많은 셸에서 형식을 수정할 수 있습니다. 예를 들어, time 에서 :

    zsh
    
    

    (와이즈 비즈)  컬러 (굵은 빨간색) 출력의 경우).

  • 답변 # 2

    이것은 bash에서 작동 할 수 있습니다 :

    $ TIMEFMT=$'\e[31;1m%J\e[m: U:%U S:%S (%*E total) [avgtext:%X avgdata:%D maxmem:%M]'
    $ time ls -l | head -n1
    total 288072444
    ls -l: U:0.00s S:0.01s (0.017 total) [avgtext:0 avgdata:0 maxmem:3]
    head -n1: U:0.00s S:0.00s (0.015 total) [avgtext:0 avgdata:0 maxmem:3]
    
    

    그러나 공백, 이스케이프 문자, 중첩 별명 및 함수 등과 관련하여 임의의 별명에 대해서는 아직 완전히 안전하지 않습니다.

    추악한 해결책이 없을 것 같습니다. 그래서 쉘에 내장 \e[31;m 가 있습니다 . 별칭 확장이 더 쉬워 지더라도 다음 문제는 작동 시간을 정하는 방법입니다. 별칭은 셸 함수를 사용할 수도 있습니다.

    별명이 bash의 구성 파일에 정의되어 있고 시간 초과 오버 헤드에 신경 쓰지 않으면 시도 할 수 있습니다

    /usr/bin/time  $(alias "ll" | sed "s/^alias [^=]*='\(.*\)'/\1/")
    
    
    time

  • 이전 linux - MySQL 데이터베이스 시스템에"mysql"사용자가 있습니까?
  • 다음 새 컴퓨터에서 명령을 실행 한 후 화면 창 제목이 되돌아갑니다