![기록에서 "echo"로 시작하는 명령을 제거하는 방법](https://linux55.com/image/199544/%EA%B8%B0%EB%A1%9D%EC%97%90%EC%84%9C%20%22echo%22%EB%A1%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
나는 다음을 시도했습니다 :
history -d $(history | grep "echo.*" |awk '{print $1}')
그러나 기록에서 모든 명령을 제거하지는 않습니다.echo
echo
다음과 같이 로 시작하는 모든 명령을 제거하고 싶습니다 .
echo "mamam"
echoaaa
echo "hello"
echooooo
답변1
모든 관련 항목을 삭제 $HISTFILE
한 다음 기록을 지우고 수정된 파일에서 (다시)로드할 수 있습니다.
sed -i '/^echo/d' "$HISTFILE"
history -c
history -r "$HISTFILE"
물론 이는 $HISTFILE
이전 기록을 로드하는 데 사용되는 모든 새 셸 인스턴스에 영향을 미치므로 현재 셸의 범위를 벗어납니다.
답변2
어때요?
history | cut -b8- | grep -v "^echo" > /tmp/TMP; history -c; history -r /tmp/TMP; rm /tmp/TMP