2013-10-05 1 views
1

최근 bash 기록에서 타임 스탬프를 켜 놓았습니다. 나는 세 가지 옵션을 사용하여 더 많은 역사를 얻고 있습니다. 타임 스탬프가있는 bash 히스토리 인쇄를 위해 awk 스크립트에서 개행을 대체하십시오.

HISTTIMEFORMAT="[%F %T %Z] "; shopt -s histappend; PROMPT_COMMAND='history -a' 

는 차라리 엄청나게 많은 수의 I는 뇌 구문 분석 신기원 시간에하지 않고 역사를보고 싶을 때마다 HISTSIZE를 설정하는 것보다, 함께 bash는 스크립트를 자갈길.

awk '/^#[0-9]+$/{ match($0,/[0-9]+/); 
    t = strftime("[%F %T %Z] ",substr($0,RSTART,RLENGTH)); 
    sub(/#[0-9]+/,t) } 1' ~/.bash_history | less 

끔찍하지만 작동합니다. 나는 그것이 또한 단순화 될 수 있다고 상상한다. 그러나 그것은 이것을 게시하는 나의 이유 때문에 단지 보조적이다. 내가하고 싶은 것은 각 명령 앞에 대응하는 타임 스탬프를 붙이는 것이다. sub(/#[0-9]+/,t)에서이 작업을 수행 할 수 있다고 생각했지만 \n과 일치 시키려고하면 아무 것도 수행하지 않습니다. 줄 바꿈을 인식하게하려면 어떻게해야합니까?

모든 포인터가 크게 감사하겠습니다.

+1

난 당신이 \의 n''로 뭘 하려는지 이해가 안 돼요. 샘플 입력과 예상 출력을 보여주십시오. –

답변

0

환경에 따라 따옴표 나 백 슬래시를 사용하여 이스케이프 처리해야 할 수도 있습니다.

\\n or "\n" 
0

레코드 분리 \n 레코드 $0의 일부가 아니다. 이 출력에게 \n하지 않도록

당신은 약간 스크립트를 수정할 수 있습니다 : 하나

awk '/^#[0-9]+$/{ match($0,/[0-9]+/); 
    t = strftime("[%F %T %Z] ",substr($0,RSTART,RLENGTH)); 
    sub(/#[0-9]+/,t); printf $0; next } 1' ~/.bash_history | less 
관련 문제