[linux] 줄 번호가없는 배쉬 히스토리

배쉬 history 명령은 매우 멋집니다. 줄 번호가 표시되는 이유를 이해하지만 history 명령을 호출하고 줄 번호를 표시하지 않는 방법이 있습니까?

요점은 history 명령을 사용하는 것이므로 답장하지 마십시오. cat ~/.bash_history

전류 출력 :

  529 man history
  530 ls
  531 ll
  532 clear
  533 cd ~
  534 history

역사적 그래픽 소스.

원하는 출력 :

man history
ls
ll
clear
cd ~
history

역사적 그래픽 소스.

훌륭한 솔루션을 제공해 주신 모든 분들께 감사드립니다. 내 배쉬 히스토리 크기가 2000으로 설정되어 있기 때문에 Paul이 가장 간단하며 나를 위해 일할 것입니다.

또한 오늘 아침에 찾은 멋진 기사를 공유하고 싶었습니다. bash 기록에서 중복 항목을 유지하고 여러 bash 세션이 기록 파일을 덮어 쓰지 않도록하는 것과 같이 현재 사용중인 몇 가지 좋은 옵션이 있습니다 : http://blog.macromates.com/2008/working-with -역사 속의 역사 /



답변

이 시도:

$ history | cut -c 8-


답변

awk 도울 수있다:

history|awk '{$1="";print substr($0,2)}'

오랜 역사를 가진다면 이 답변 은 실패 할 수 있습니다.


답변

나는이 질문이 bash에 대한 것이라는 것을 알고 있으며 많은 사람들이 zsh (cue downvotes …)로 전환하지 않는 것을 선호합니다.

그러나 zsh 로 기꺼이 전환하려는 경우 zsh는이를 기본적으로 지원합니다 (히스토리 형식화를위한 다른 옵션).

zsh> fc -ln 0

( /server/114988/removing-history-or-line-numbers-from-zsh-history-file 참조 )


답변

나는 이것에 늦었지만 더 짧은 방법은 당신 ~/.bashrc이나 ~/.profile파일에 다음을 추가하는 것입니다 :

HISTTIMEFORMAT="$(echo -e '\r\e[K')"

bash에서 manpage:

       HISTTIMEFORMAT
              이 변수가 설정되고 널이 아닌 경우 해당 값은
              연관된 시간 소인을 인쇄하기위한 strftime (3)의 형식 문자열
              히스토리 내장으로 각 히스토리 항목이 표시됩니다. 만약
              이 변수가 설정되고 타임 스탬프가 기록에 기록됩니다.
              파일을 셸 세션에서 보존 할 수 있습니다. 이것은 사용
              타임 스탬프를 구별하는 히스토리 주석 문자
              다른 역사 라인.

이 기능을 사용하여 스마트 핵은 변수 “print”를 캐리지 리턴 ( \r)으로 만들고 K실제 타임 스탬프 대신 라인 (ANSI 코드 )을 지우는 것으로 구성됩니다 .


답변

또는 sed를 사용할 수 있습니다.

history | sed 's/^[ ]*[0-9]\+[ ]*//'

별명을 사용하여이를 표준으로 설정할 수 있습니다 (bash_profile에 고정).

alias history="history | sed 's/^[ ]*[0-9]\+[ ]*//'"


답변

-c옵션을 사용하여 절단하는 것이 대부분의 실제 목적으로 작동 하지만 awk에 대한 배관 기록이 더 나은 솔루션이라고 생각합니다. 예를 들면 다음과 같습니다.

history | awk '{ $1=""; print }'

또는

history | awk '{ $1=""; print $0 }'

이 두 가지 솔루션 모두 동일한 기능을 수행합니다. 역사의 결과는 어색 해졌다. 그런 다음 Awk는 history 명령 출력의 숫자에 해당하는 첫 번째 열을 비 웁니다. 여기서 awk는 출력의 숫자 부분에있는 문자 수에 신경 쓸 필요가 없기 때문에 더 편리합니다.

print $0print기본값은 행에 나타나는 모든 것을 인쇄하는 것이므로. 와 같습니다 . 타이핑 print $0은 더 명확하지만, 어느 쪽을 선택 하느냐에 달려 있습니다. 의 행동 print $0과 단순히 printAWK와 함께 사용할 때 파일을 인쇄 할 AWK 사용하면 더 분명하다 ( cat빠른 대신 AWK의 종류에 수 있지만이 점을 설명하기위한 것입니다).

[예] awk를 사용하여 $ 0의 파일 내용 표시

$ awk '{print $0}' /tmp/hello-world.txt
Hello World!

[예] awk를 사용하여 $ 0없이 파일 내용 표시

$ awk '{print}' /tmp/hello-world.txt
Hello World!

[예] 히스토리 라인이 여러 라인에 걸쳐있을 때 awk 사용

$ history
   11  clear
   12  echo "In word processing and desktop publishing, a hard return or paragraph break indicates a new paragraph, to be distinguished from the soft return at the end of a line internal to a paragraph. This distinction allows word wrap to automatically re-flow text as it is edited, without losing paragraph breaks. The software may apply vertical whitespace or indenting at paragraph breaks, depending on the selected style."

$ history | awk ' $1=""; {print}'
 clear
 echo "In word processing and desktop publishing, a hard return or paragraph break indicates a new paragraph, to be distinguished from the soft return at the end of a line internal to a paragraph. This distinction allows word wrap to automatically re-flow text as it is edited, without losing paragraph breaks. The software may apply vertical whitespace or indenting at paragraph breaks, depending on the selected style."


답변

history -w /dev/stdout

출력에서 history --help:

-w 현재 기록을 기록 파일에 기록합니다.

/dev/stdout이 경우 현재 기록을 지정된 파일에 씁니다 .