![기록 출력에서 정확한 시간과 날짜로 bash 기록을 가져오는 방법은 무엇입니까?](https://linux55.com/image/135159/%EA%B8%B0%EB%A1%9D%20%EC%B6%9C%EB%A0%A5%EC%97%90%EC%84%9C%20%E2%80%8B%E2%80%8B%EC%A0%95%ED%99%95%ED%95%9C%20%EC%8B%9C%EA%B0%84%EA%B3%BC%20%EB%82%A0%EC%A7%9C%EB%A1%9C%20bash%20%EA%B8%B0%EB%A1%9D%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
bash 기록이 포함된 파일이 있고 새 컴퓨터에서 명령을 "가져오기"하고 싶습니다. 파일에는 history
다음 형식의 출력이 포함됩니다 HISTTIMEFORMAT="%F%t%T%t"
.
$ history > history.txt
결과는 다음과 같습니다.
1 2018-01-01 17:56:36 foo
2 2018-01-01 18:01:21 bar
3 2018-01-01 18:02:02 buz
~/.bash_history
해당 파일의 내용으로 바꾸면 카운터와 날짜 및 시간이 명령의 일부가 됩니다 . 그래서 출력은 다음 history
과 같습니다
1 2018-06-13 18:10:15 1 2018-01-01 17:56:36 foo
2 2018-06-13 18:10:15 2 2018-01-01 18:01:21 bar
3 2018-06-13 18:10:15 3 2018-01-01 18:02:02 buz
가져오기 전에 명령 목록을 정리했습니다. 텍스트 편집기에서 열고 ^[\s]+[0-9]+[\s]+[0-9]{4}-[0-9]{2}-[0-9]{2}[\s]+[0-9]{2}:[0-9]{2}:[0-9]{2}[\s]+
" "를 빈 문자열로 바꾸세요. 훨씬 나아 보입니다. 그러나 명령 날짜와 시간에 대한 정보가 손실됩니다.
1 2018-06-13 18:10:15 foo
2 2018-06-13 18:10:15 bar
3 2018-06-13 18:10:15 buz
기록을 가져오고 날짜 및 시간 메타 정보를 보존하는 방법은 무엇입니까?
답변1
출력 history
은 당신이 읽을 수 있습니다. 실제로 파일을 보면 ~/.bash_history
다음과 같은 내용을 찾을 수 있습니다.
#1528908193
history
#1528908354
vim .bash_history
#1528908359
history
#1528908591
man history
#1528908594
이것이 타임스탬프가 저장되는 방식입니다.
DopeGhoti처럼 scp는 안되나요?
답변2
@찰스 정말 감사합니다귀중한 팁! 그것은 나를 해결책으로 인도합니다.
Bash 기록 항목의 날짜와 시간을 조작하려면 해당 항목을 ~/.bash_history
올바른 형식의 원본 파일로 바꾸면 됩니다. 항목의 올바른 형식은 다음과 같습니다.
#TIMESTAMP
command
따라서 내 경우에는 다음 단계를 수행해야 합니다.
(0단계: 기록을 텍스트 파일로 내보내기: history > history.txt
.)
1단계: 텍스트 편집기에서 파일을 열고 파일을 정리합니다. 결과적으로 모든 줄에는 date
+ space
time
+ tab
+ 가 포함되어야 합니다 command
. 제 경우에는 항목 형식이 이므로 %F%t%T%t
다음 정규식 기반 대체가 필요합니다.
FROM: ^([\s]+[0-9]+[\s]+)([0-9]{4}-[0-9]{2}-[0-9]{2})[\s]+([0-9]{2}:[0-9]{2}:[0-9]{2}[\s]+)
TO: $2 $3
2단계: 결과를 Calc(또는 Excel)에 복사합니다. 이제 두 개의 열이 있습니다.
3단계: 날짜 및 시간 열의 값을 타임스탬프로 변환합니다.
=(A1 - DATEVALUE("1/1/1970"))*86400
4단계: 타임스탬프와 명령이 포함된 열을 텍스트 편집기에 다시 복사합니다.
5단계: 결과를 대상 형식으로 변환합니다.
FROM: ^([0-9]{10})\t
TO: #$1\n
6단계: ~/.bash_history
결과 텍스트 파일을 다음으로 바꿉니다.
$ cp history.txt > ~/.bash_history