모든 bash 명령 앞의 명령


답변:


37

전에 잘못된 답변으로 죄송합니다. 귀하의 질문을 이해하지 못했습니다.

쉘에서 실행하는 모든 명령 전에 시간을 추가하려면 다음과 같이 할 수 있습니다

bind 'RETURN: "\e[1~time \e[4~\n"'

리턴 키가 리 바인드됩니다. 이제 줄 바꿈을 쓰지 않고 return 키를 누를 때마다 줄의 시작 부분으로 이동하고 텍스트 '시간'과 공백을 입력하고 줄 끝으로 이동하여 줄 바꿈을 입력하십시오. 효과.

Enter 키를 희생시키지 않으려면 다음과 같은 명령을 바인딩하여 F12와 같은 '두 번째'벤치 마크 입력 키를 만들 수 있습니다.

bind '"\e[24~": "\e[1~time \e[4~\n"'

이제 리턴 키를 교체하는 대신 F12를 바인딩했습니다.

이 모든 것의 배경은 bash가 GNU readline을 사용하여 명령을 읽는 것입니다. 따라서 readline은 추가 명령 조작 등을위한 좋은 출발점이 될 것입니다.


1
+1 좋은 해결책! 벤치마킹 엔터 키를 일반 엔터 키와 분리하는 아이디어가 마음에 듭니다.
quck quixote

그것은 영리한 생각입니다. 모든 명령 전에 사용자 정의 함수를 실행하도록 어떻게 일반화 할 수 있습니까? bash 코드와 readline 함수를 동일한 바인딩에 결합하는 방법을 모르겠습니다.
Gilles 'SO- 악의를 멈추십시오'11:

이것은 Mac에서 실행되지 않습니까? 터미널에서 명령을 실행했는데 Enter 키가 현재 아무것도하지 않는 것 같습니다.
akki September

6

나는 이것이이 질문의 범위 밖이라는 것을 알고 있지만 ...

에서 zsh당신이 당신의 다음 변수를 설정 한 경우 (이, 내 지식의 bash의 슈퍼 세트입니다) .zshrc파일을 :

export REPORTTIME=5

5 초 이상 걸리는 모든 명령 (확실히 확실합니다)의 출력이 표시됩니다 time. 더 빨리 완료되는 모든 명령은 그렇지 않습니다. 그런 경우에는 실제로 신경 쓰지 않으므로 물건을 어지럽히 지 않는 것이 좋습니다. zsh당신이 그것을 즐기고있는 동안 즐길 수있는 다른 멋진 기능도 많이 있습니다.


좋은 팁. 하지만 zsh을가 확실히의 기능의 상위 집합이 떠들썩한 파티를 , 구문은 구문의 상위 집합 아닌 bash는 그래서 교체에 "하락"아니다.
Chris Johnsen

1

프롬프트 문자열에 \ t를 포함하십시오. 프롬프트에 시간을 포함시킬 시점이 포함됩니다. 참조 : http://www.ibm.com/developerworks/linux/library/l-tip-prompt/


프롬프트가 생성 될 때의 현재 시간이며 이전 명령을 실행하는 데 걸린 시간이 아닙니다.
추후 공지가있을 때까지 일시 중지되었습니다.

진실; 그와 다음 프롬프트의 현재 시간의 차이점은 런타임입니다 (입력 시간 빼기-물론 붙여 넣기가 여기에 있습니다). 키 재 할당이 필요하지 않습니다.
JRobert

0

PS1 은 이와 같은 작업을 수행하는 표준 방법 인 것 같습니다.


2
실제로 실행 된 명령이 아니라 디스플레이를 수정합니다.
user1686 년

@ grawity 맞아-하지만 그것은 당신이 원하는 것을 정확하게 얻을 것입니다 ... 모든 라인 앞에 붙인 시간.
Jason Sundram 1

3
이것은 명령과 완전히 다릅니다 time(명령을 실행하는 데 걸린 시간을 측정합니다).
user1686

@ grawity, 당신이 옳은 것 같아요-당신은 뺄셈을 직접해야합니다. @Jrobert도 같은 생각을 한 것 같습니다.
Jason Sundram
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.