source

라인 번호가 없는 Bash 기록

ittop 2023. 5. 17. 23:26
반응형

라인 번호가 없는 Bash 기록

더시배.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으로 정해져 있기 때문에 저를 위해 일할 것입니다.

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

사용해 보십시오.

$ history | cut -c 8-

awk도움이 될 수 있음:

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

이 대답은 이력이 긴 경우 실패할 수 있습니다.

bash 대신 zshist로 전환할 의향이 있다면 zsh는 이를 기본적으로 지원합니다(또한 기록 형식 지정을 위한 다른 옵션).

zsh> fc -ln 0

(https://serverfault.com/questions/114988/removing-history-or-line-numbers-from-zsh-history-file) 참조)

history -w /dev/stdout

에서의 history --help:

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

파일에 - 지정된에파기씁록니다./dev/stdout이 경우에는

저는 이번 건에 늦었지만, 더 짧은 방법은 당신의 웹사이트에 다음을 추가하는 것입니다.~/.bashrc또는~/.profile파일 이름:

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

쉬에서배에서.manpage:

HIST 시간 형식이 변수가 null이 아닌 설정된 경우 해당 값이 다음과 같이 사용됩니다.연관된 타임스탬프를 인쇄할 strftime(3)의 형식 문자열각 기록 항목이 내장된 기록으로 표시됩니다.한다면이 변수가 설정되고 타임스탬프가 기록에 기록됩니다.파일을 저장하여 셸 세션 전체에서 보존할 수 있습니다.이 기능은 다음과 같습니다.타임스탬프를 구분하는 기록 설명 문자다른 역사적 기록들.

"를 캐리지 리턴 return)으로 됩니다.\r을 삭제하고 code)을 합니다.K실제 타임스탬프 대신 ).

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

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

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

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

비록 그것으로 자르긴 했지만.-c옵션은 대부분의 실용적인 목적으로 작동합니다, 저는 파이프 이력을 awk로 하는 것이 더 나은 해결책이 될 것이라고 생각합니다.예:

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

OR

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

이 두 솔루션 모두 동일한 작업을 수행합니다.역사의 결과물이 어색하게 흘러가고 있습니다.그런 다음 Awk는 히스토리 명령 출력의 숫자에 해당하는 첫 번째 열을 공백으로 표시합니다.여기서 hawk는 출력의 숫자 부분에 있는 문자 수에 대해 걱정할 필요가 없기 때문에 더 편리합니다.

print $0는 와동합다니등다에 합니다.print기본값은 라인에 표시되는 모든 항목을 인쇄하는 것이기 때문입니다.자치 기타를 합니다.print $0더 명시적이지만 어느 것을 선택할지는 사용자에게 달려 있습니다. print $0 간단히 간히말면하단.printawk와 함께 사용할 때 awk를 사용하여 파일을 인쇄했다면 더 분명합니다.catawk 대신 입력하는 것이 빠르겠지만, 이것은 요점을 설명하기 위한 것입니다.)

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

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

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

$ 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명령에 줄 번호를 표시하지 않는 옵션이 없습니다.모든 사용자가 제안하는 것처럼 여러 명령을 결합해야 합니다.

예:

history | cut -d' ' -f4- | sed 's/^ \(.*$\)/\1/g'
$ hh -n

(옵션) 메트릭 기반 순서를 사용하여 Bash 기록을 "상자 유형"으로 필터링할 수 있는 https://github.com/dvorka/hstr 을 사용해 보십시오. 즉, 순방향과 역방향 모두에서 훨씬 더 효율적이고 빠릅니다.

여기에 이미지 설명 입력

에 쉽게 결합할 수 있습니다.

명령을 사용할 수 있습니다.cut해결 방법:

STDIN 또는 파일에서 필드를 잘라냅니다.

  • 첫: STDIN 각자행음의 16를라잘다니냅처의.cut -c 1-16

  • 파일의 각: 된파자각줄에처음서일다 16를잘니라냅의지.cut -c 1-16 file

  • 행의 세: 행의세번문째자끝터모까것잘다라니냅을든지각부▁cut다thing니▁every.cut -c3-

  • 콜론을 필드 구분 기호로 사용하여 각 줄의 다섯 번째 필드를 잘라냅니다(기본 구분 기호는 탭). cut -d':' -f5

  • 세미콜론을 구분 기호로 사용하여 각 줄의 두 번째 및 열 번째 필드를 잘라냅니다.cut -d';' -f2,10

  • 공백을 구분 기호로 사용하여 각 줄의 필드 3-7을 잘라냅니다.cut -d' ' -f3-7

제가 파티에 늦었다는 것은 알지만 이것이 기억하기에 훨씬 더 쉽습니다.

cat ~/.bash_history

줄 번호가 없는 내역을 파일로 보내고 나중에 참조할 수 있도록 하려면 아래를 참조하십시오.

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

위의 명령은 기록의 내용을 기록이라는 텍스트 파일로 읽습니다.그러면 프로젝트를 진행하면서 다른 버전을 사용할 수 있습니다.

bash 스크립트를 실행할 때 자동화를 간소화하는 데 도움이 되기 때문에 좋습니다(윙크).

언급URL : https://stackoverflow.com/questions/7110119/bash-history-without-line-numbers

반응형