기록에서 "echo"로 시작하는 명령을 제거하는 방법

기록에서 "echo"로 시작하는 명령을 제거하는 방법

나는 다음을 시도했습니다 :

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

관련 정보