실수로 파일을 쉘에 붙여 넣을 때 bash 기록에 추악한 말도 안되는 항목이 많이 있습니다. 해당 항목을 제거하는 확실한 방법이 있습니까? 분명히 셸을 닫고 .bash_history
파일을 수동으로 편집 할 수는 있지만 현재 셸 기록을 수정하는 데 사용할 수있는 API가 있습니까?
답변
history -d offset
내장을 사용 하여 현재 쉘 히스토리에서 특정 라인을 삭제하거나 history -c
전체 히스토리를 지울 수 있습니다.
하나의 오프셋을 인수로 사용하기 때문에 행 범위를 제거하려는 경우 실제로 실용적이지 않지만 루프를 사용하여 함수로 줄 바꿈 할 수 있습니다.
rmhist() {
start=$1
end=$2
count=$(( end - start ))
while [ $count -ge 0 ] ; do
history -d $start
((count--))
done
}
로 전화하십시오 rmhist first_line_to_delete last_line_to_delete
. (의 출력에 따른 줄 번호 history
)
history -w
히스토리 파일에 강제로 쓰려면 사용하십시오 .
답변
명령 프롬프트에서이 하나의 라이너 만 도움이됩니다.
for i in {1..N}; do history -d START_NUM; done
START_NUM은 (는) 방문 기록의 시작 위치입니다. N은 삭제할 항목 수입니다.
전의: for i in {1..50}; do history -d 1030; done
답변
user2982704의 대답은 거의 효과가 없었지만 거의 효과가 없었습니다. 나는 이와 같이 작은 변형을 만들어야했습니다.
내 이력이 1000이라고 가정하고 마지막 50 개 항목을 삭제하고 싶습니다
start=1000
for i in {1..50}; do count=$((start-i)); history -d $count; done