>

bash 키워드가 쉘 키워드 대신 기본적으로 바이너리 (/ usr/bin/time)를 사용하게하려면 어떻게해야합니까?

which time   /usr/bin/time 를 반환
type time   time is a shell keyword 를 반환
time 실행  분명히 쉘 키워드를 실행하고 있습니다 :

$ time
real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
   [--portability] [--format=format] [--output=file] [--version]
   [--quiet] [--help] command [arg...]

enable -n time   bash: enable: time: not a shell builtin 를 반환

  • 답변 # 1

    command 를 사용할 수 있습니다  쉘 내장, 일반 조회 프로세스를 무시하고 다른 가능성 (쉘 내장, 별명 등)에 관계없이 지정된 명령을 외부 명령으로 실행합니다. 이것은 일반적으로 속기 \ 를 사용하는 것이 더 일반적이지만 시스템 전체에서 이식 가능 해야하는 스크립트에서 수행됩니다.  ( \rm 에서와 같이)   command rm 보다는  또는 rm 특히 후자는 rm -i 와 같이 알려지지 않은 것으로 별칭이 지정 될 수 있습니다. ).

    $ time
    real    0m0.000s
    user    0m0.000s
    sys 0m0.000s
    $ command time
    Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
           [--portability] [--format=format] [--output=file] [--version]
           [--quiet] [--help] command [arg...]
    $
    
    

    이와 같이 별명과 함께 사용할 수 있습니다 :

    $ alias time='command time'
    $ time
    Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
           [--portability] [--format=format] [--output=file] [--version]
           [--quiet] [--help] command [arg...]
    $
    
    

    예 : 와이즈 비즈   alias time=/usr/bin/time 에 대한 전체 경로를 지정하지 않았다는 것입니다.  바이너리이지만 대신 일반적인 경로 검색 메커니즘으로 돌아갑니다.

    와이즈 비즈  명령 자체는 예를 들어 ~/.bashrc 또는 /etc/bash.bashrc (후자는 시스템의 모든 사용자에게 전역적임)

    반대 경우(별칭이 정의 된 경우 내장 쉘을 강제로 사용) time 와 같은 것을 사용합니다. 는 일반적인 검색 프로세스를 다시 무시하고 명명 된 셸 내장을 실행합니다. bash 매뉴얼 페이지는 이것이 사용자 정의 alias 를 제공하기 위해 종종 사용된다고 언급합니다.  이름이 builtin time 인 기능 내장 cd 를 사용하는  실제 작업을 수행 할 수 있습니다.

  • 답변 # 2

    경로를 지정하거나 cd 와 같은 다른 내장 도구를 사용하지 않고도 키워드를 회피하는 단축키가 있습니다. : 백 슬래시로 이스케이프 처리합니다.

    cd
    
    

    개인적으로, 이것이 가능하기 때문에 더 읽기 쉽고 안전하다고 생각합니다 :

    command
    
    

  • 답변 # 3

    기본 제공 솔루션 (예 : 테스트)은[1]:

    입니다.

    =^_^= izkata@Izein:~$ time real 0m0.000s user 0m0.000s sys 0m0.000s =^_^= izkata@Izein:~$ \time Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose] [--portability] [--format=format] [--output=file] [--version] [--quiet] [--help] command [arg...] 사용  (모든 껍질)

    =^_^= izkata@Izein:~$ alias command=echo
    =^_^= izkata@Izein:~$ command time
    time
    
    

    내장 기능 비활성화 (bash 및 zsh 만) :

    env
    
    

    슬래시 $ env test external test 사용  명령을 호출하려면 (모든 쉘) :

    $ test 1 = 1 && echo "yes"
    yes
    $ enable -n test        ### for bash. Re-enable with "enable test".
    $ disable test          ### for zsh. Re-enable with "enable test".
    $ test
    external test
    
    

    별명 만들기 ( / 를 제외하고 bash 스크립트 내에서 실패)  사용됩니다) :

    $ test 1 = 1 && echo "yes"
    yes 
    $ ~/bin/test
    external test
    
    

    하지만 시간은 내장되어 있지 않습니다. shopt -s expand_aliases 라는 단어  "예약 된 단어"이며 명령이 아니며 내장도 아닙니다. 이 솔루션을 가능하게합니다 :

    단어를 인용하십시오. 내장 기능으로는 작동하지 않습니다.
    많은 형태의 인용 작업 : $ alias test='~/bin/test' ### remove with 'unalias test'. $ test external test  와이즈 비즈  와이즈 비즈  와이즈 비즈  와이즈 비즈 등

    time
    
    

    별명을 무시하는 데 유용합니다. \time 경우에도  별명입니다, "time"  PATH 명령 (또는 내장되어 있지 않은 경우 내장 명령)을 실행합니다.

    내장 'time' 사용  (내장에서는 작동하지 않습니다) :

    ti\me
    
    

    슬래시 ti"me" 를 사용하는 내장의 경우  작동합니다 :

    $  time
    real    0m0.000s
    user    0m0.000s
    sys     0m0.000s
    $ \time
    Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
           [--portability] [--format=format] [--output=file] [--version]
           [--quiet] [--help] command [arg...]
    
    

    내장의 경우와 같이 별명도 여기에서 작동합니다 :

    test
    
    

    [1] \test 에 외부 실행 파일이 있다고 가정합니다  "외부 테스트"를 인쇄합니다. 그리고 더 : command 가정   $ command time 보다 앞서 있습니다  활성 PATH에서.

  • 답변 # 4

    이것을 / 에 드롭하십시오 :

    $ /usr/bin/time

  • 답변 # 5

    $ alias time='command time' $ alias time='/usr/bin/time' 를 사용할 수 있습니다  특정 내장 기능을 비활성화하는 명령입니다.

    ~/bin/test
    
    
    그러나 pyzwyz  키워드이므로 작동하지 않습니다.

    ~/bin
    
    

    따라서 별칭을 재정의 할 수 있습니다 :

    /bin
    
    
    ~/.bashrc

관련 자료

  • 이전 성능 기록 -a - 모든 샘플에서 코어 당 샘플이 표시되지 않는 이유는 무엇입니까?
  • 다음 search - HTML 파일에서 특정 URL을 추출하는 방법