
나는 다음을 시도했습니다 :
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