이 명령을 사용하면 cat -n $(echo $HISTFILE) | grep -v "#"
4000줄이 넘습니다. (grep은 histfile에 추가된 타임스탬프를 생략합니다)
1 pwd
...
2017 cd ~
...
4033 git push
하지만 이 명령을 사용하면 history
2000개가 넘는 행만 표시됩니다.
1 18/09/19 11:00:38 cd ~
...
2017 30/10/19 09:41:50 git push
내 기록 명령에서 줄의 절반이 생략된 이유는 무엇입니까?
$HISTFILE
타임스탬프가 원인인 것으로 의심됩니다 . 하지만 이 동작을 어떻게 피할 수 있습니까? 아니면 의심이 잘못된 걸까요?
env
명령 에 사용되는 변수를 history
다음과 같이 수정했습니다 .
export HISTFILESIZE=
export HISTSIZE=
export HISTFILE=~/.bash_eternal_history
export HISTTIMEFORMAT="%d/%m/%y %T "
무제한 기록과 추가 타임스탬프를 원하기 때문에 이러한 수정을 수행했습니다. 나는 이것을 유지하고 기록 명령을 출력하고 싶습니다 HISTFILE
.
나는 사용하고있다운영 체제 cat /etc/*release
:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
답변1
History 명령은 현재 bash 세션의 기록만 나열하는 반면, 이 파일에는 모든 bash 세션의 기록이 포함됩니다. 따라서 세션의 실행 기록에는 파일보다 적은 결과가 표시될 가능성이 높습니다. 또한 기록은 "최근" 명령을 찾는 데 사용되므로 $HISTSIZE를 기준으로 길이가 제한됩니다(사용자 환경에서 HISTSIZE를 늘리려면 다음을 참조하세요).이 토론).
기록 파일의 모든 최신 명령을 포함하도록 특정 세션의 기록을 업데이트하려면 -r 또는 -n을 사용하여 기록을 실행합니다. 매뉴얼 페이지에서:
-n: 기록 파일에서 읽지 않은 기록 줄을 현재 기록 목록으로 읽어옵니다. 이는 현재 bash 세션이 시작된 이후 기록 파일에 추가된 줄입니다.
-r: 기록 파일의 내용을 읽고 이를 현재 기록 목록에 추가합니다. ):
user@machine:~> history
994 ssh server
995 history --help
996 man history
997 history
997개의 행만 반환되었습니다.
user@machine:~> history -r
새로 고치다...
user@machine:~> history
994 ssh server
995 history --help
996 man history
997 history
998 history -r
999 ping 10.10.10.10
1000 ping 10.10.10.1
...
1992 ssh server02
1993 history
이제 1993개의 명령이 나열됩니다. 따라서 열고 사용하는 다른 터미널에서 추가한 기록을 포함하면 원본 파일($HISTFILESIZE로 제한됨)을 읽는 것과 유사한 출력(후행 $HISTSIZE 라인)이 제공됩니다. 미묘한 차이점에 유의하세요... -n은 현재 bash 세션 라인을 읽고, -r은 전체 파일을 읽습니다.