마지막 명령을 시작한 이후 경과된 시간을 표시하는 방법이 있습니까? 나는 이것을 찾았다:PS1 프롬프트에 경과 시간이 표시됩니다.그러나 이는 마지막 명령이 완료된 후 새 명령이 완료될 때까지 경과된 시간을 표시합니다.
내 생각은 어떻게든 프롬프트에 추가하도록 강제하는 것입니다.time
앞으로내가 입력하는 모든 명령은 좋은 방식으로 형식을 지정합니다.
이 같은:
$ ls
. ..
Last command took 0.001s
$
답변1
두 가지 기능과 타이머가 필요합니다. 첫 번째 기능은 명령줄에서 Enter를 누른 후 실제 명령이 시작되기 전에 실행됩니다. 두 번째 기능은 명령이 완료된 후 프롬프트가 표시되기 전에 실행됩니다. 타이머는 쉘이 시작된 이후의 시간(초)만 계산합니다. 이 세 가지 후크를 , 및 zsh
라고 합니다 .precmd
preexec
SECONDS
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
.