프롬프트에서 마지막 명령을 시작한 이후 경과된 시간을 표시합니다.

프롬프트에서 마지막 명령을 시작한 이후 경과된 시간을 표시합니다.

마지막 명령을 시작한 이후 경과된 시간을 표시하는 방법이 있습니까? 나는 이것을 찾았다:PS1 프롬프트에 경과 시간이 표시됩니다.그러나 이는 마지막 명령이 완료된 후 새 명령이 완료될 때까지 경과된 시간을 표시합니다.

내 생각은 어떻게든 프롬프트에 추가하도록 강제하는 것입니다.time앞으로내가 입력하는 모든 명령은 좋은 방식으로 형식을 지정합니다.

이 같은:

$ ls
. ..
Last command took 0.001s
$ 

답변1

두 가지 기능과 타이머가 필요합니다. 첫 번째 기능은 명령줄에서 Enter를 누른 후 실제 명령이 시작되기 전에 실행됩니다. 두 번째 기능은 명령이 완료된 후 프롬프트가 표시되기 전에 실행됩니다. 타이머는 쉘이 시작된 이후의 시간(초)만 계산합니다. 이 세 가지 후크를 , 및 zsh라고 합니다 .precmdpreexecSECONDS

bash타이머의 이름이 같은 경우 함수는 변수 precmd가 되지만 PROMPT_COMMAND불행하게도 preexec함수가 없으므로 직접 작성하거나(어려운 것은 아니지만 사소하지도 않음) 외부 소스에서 이미 작성된 후크를 설치해야 합니다. 예https://github.com/rcaloras/bash-preexec.

이제 모든 조각을 함께 붙이기만 하면 됩니다. 최소한의 코드는 다음과 같습니다.

preexec() {
    cmd_start="$SECONDS"
}

precmd() {
  local cmd_end="$SECONDS"
  elapsed=$((cmd_end-cmd_start))
  PS1="$elapsed "
}

그것에 모든 것을 넣으십시오 .bashrc.

관련 정보