LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Так что не спасает эта опция....

Ты бы поточнее описал проблему, тебе бы поточнее помогли. Опция спасает от повторов в пределах одной оболочки. Если у тебя там уже куча повторов записана, или если ты пишешь историю из нескольких оболочек сразу, она не поможет.

Чтобы избавиться от повторов вообще, я использую такое:

function dedup {
	awk '! x[$0]++' $@
}

function history_cleanup {
	printf "Записей в истории было: %s\n" "`history | wc -l`"
	local HISTFILE_SRC="${HISTFILE}"
	local HISTFILE_TMP="${HISTFILE}_dedup"
	if [[ -f "$HISTFILE_SRC" ]] ; then
		cp "$HISTFILE_SRC" "$HISTFILE_SRC.backup" && \
			(tac < $HISTFILE_SRC | dedup | tac > "$HISTFILE_TMP") && test -s "$HISTFILE_TMP" && \
			mv "$HISTFILE_TMP" "$HISTFILE_SRC"
		history -c
		history -r
	fi
	printf "Стало: %s\n" "`history | wc -l`"
}

Исходная версия Deleted, :

Так что не спасает эта опция....

Ты бы поточнее описал проблему, тебе бы поточнее помогли. Опция спасает от повторов в пределах одной оболочки. Если у тебя там уже куча повторов записана, или если ты пишешь историю из нескольких оболочек сразу, она не поможет.

Чтобы избавиться от повторов вообще, я использую такое:

function history_cleanup {
	printf "Записей в истории было: %s\n" "`history | wc -l`"
	local HISTFILE_SRC="${HISTFILE}"
	local HISTFILE_TMP="${HISTFILE}_dedup"
	if [[ -f "$HISTFILE_SRC" ]] ; then
		cp "$HISTFILE_SRC" "$HISTFILE_SRC.backup" && \
			(tac < $HISTFILE_SRC | dedup | tac > "$HISTFILE_TMP") && test -s "$HISTFILE_TMP" && \
			mv "$HISTFILE_TMP" "$HISTFILE_SRC"
		history -c
		history -r
	fi
	printf "Стало: %s\n" "`history | wc -l`"
}