bash에 ssh/로그인한 이후 얼마나 많은 명령을 실행했는지 알 수 있는 방법이 있나요? [복사]

bash에 ssh/로그인한 이후 얼마나 많은 명령을 실행했는지 알 수 있는 방법이 있나요? [복사]

historyBash에서 명령을 실행하고 있지만 모든 것을 제공합니다 ...

를 실행하여 이전에 표시되는 명령 수를 제한할 수 있다는 것을 알았습니다. history | tail -n <num-of-lines+1>로그인한 이후 실행한 명령 수와 bash에 로그인한 이후 실행한 명령 수만 볼 수 있는 방법이 있습니까? ?

답변1

특정 정보 없이 일반적인 개수만 원하는 경우 를 사용해 보세요 echo $LINENO.

통역사는 세션을 스트림으로 처리하고 전달된 줄 수를 계산합니다. 이것은원래Enter 키를 몇 번이나 눌렀습니까?

여러 줄 명령을 입력하면 각 줄이 개별적으로 계산됩니다.

답변2

흥미로운. 내장된 방법은 없다고 생각하지만 새 변수를 정의하고 각 명령 후에 변수를 증가시킬 수 있습니다. 예를 들어:

$ count=0
$ PROMPT_COMMAND='count=$((count + 1))'
$ echo $count
1
$ echo command
command
$ echo another command
another command
$ echo $count
4

편집하다:

PROMPT_COMMAND또는 다음 을 사용하여 각 명령 후에 기록 형식을 수정하거나 기록을 저장 하지 않는 한 쉘이 종료될 때까지 기록이 메모리에 저장된다는 것을 아는 것과 유사한 것입니다 .

diff <(history | sed -E 's,\s+?[0-9]+  ,,') ~/.bash_history

답변3

내장된 명령이 없습니다. 약간의 속임수를 쓸 수 있지만 결과는 설정에 따라 달라집니다. 내가 생각할 수 있는 가장 가까운 것은 다음과 같습니다.

history | tail -n `history | tail -n 1 | awk "{print \\\$1-$HISTSIZE;}"`

별칭을 지정할 수 있습니다.

명령은 history해당 항목을 열거합니다. 대부분의 경우 $HISTFILE최대 항목( $HISTSIZE값)이 있습니다. 따라서 위에 번호가 매겨진 추가 명령은 $HISTSIZE이 SSH 세션에 입력된 명령 목록임을 알 수 있습니다 .

마지막 행과 첫 번째 열을 가져오고 값을 빼는 대신 기록을 숫자로 표시하여 $HISTSIZE로그인한 이후에 얼마나 많은 명령이 있는지 알 수 있습니다. 이 인수는 기록의 마지막 항목 수만 표시하는 tail -n으로 전송됩니다.

$HISTSIZE불행하게도 기록이 명령보다 적으면 제대로 작동하지 않습니다. 더 좋게 만들려면 .bashrc파일에 몇 가지 추가 설정을 해야 하므로 로그인할 때마다 기록의 항목 수를 기억하도록 추가 변수가 설정됩니다. 그런 다음 해당 변수를 대신 사용하십시오.$HISTSIZE

답변4

세션당 개수를 계산하려면 HISTCMD를 사용합니다. 그러나 모든 bash 저장 기록을 추적하므로 이 셸 인스턴스에 대해 전달된 HISTCMD의 복사본을 저장한 다음 이를 뺍니다.

존재하다 ~.bashrc:

OHISTCMD=$HISTCMD

그러면 언제든지 개수를 알고 싶을 때,

echo $((HISTCMD - OHISTCMD - 1))

매뉴얼의 참고 사항:

HISTCMD가 설정되지 않으면 나중에 재설정되더라도 특수 속성이 손실됩니다.

그리고 위쪽 화살표를 사용하여 기록에서 명령을 호출해도 HISTCMD가 증가하지 않습니다.

너무 끔찍해전역 변수history_offset외부에서는 사용불가!

관련 정보