LINUX.ORG.RU

Повторяющиеся команды в терминале

 , ,


1

1

Доброго времени суток. Я в Линуксе новичок. Вот столкнулся со следующим неудобством и не смог нагуглить как это решить. Если в терминале Дебиан (2.6.26-2-686 #1 SMP Sun Mar 4 22:19:19 UTC 2012 i686 GNU/Linux) вводить одну и туже команду несколько раз, то при испоьлзовании навигации стрелками , чтобы прокрутить историю я вижу одну и ту же команду столько раз сколько и вводил. Как это исправить. Иными словами как обеспечить сохранение в истории ввода терминала, только уникальных команд? Заранее благодарен.

В .bashrc добавь:

export HISTCONTROL=ignoreboth:erasedups
Deleted
()
Ответ на: комментарий от anonymous

Это подрастающий Эдик взамен выпиленному Шаманом.

Он еще совсем маленький, не спугни.

Deleted
()
Ответ на: комментарий от anonymous

и «проблема» самоликвидируется.


Нет, проблема «стрелочек» останется.

athost ★★★★★
()
Ответ на: комментарий от anonymous

Это железо на power pc стареньком. Можно сказать как embended система, почти как.Рад бы поновей, но не могу. Собственно я программы пишу под этот девайс, и часто с разными параметрами запускаю для тестов. Но описанная проблема весьма затрудняет этот процесс. Вот собственно и спросил тут. Велосипед я могу сам сделать, кинуть в крон скрипт и парсить историю раз в минуту. Просто думал есть вариант более человеческий

CrazyEddie
() автор топика
Ответ на: комментарий от beastie

2000  source ~/.bashrc  2001  source .bashrc  2002  ls  2003  history  2004  ls  2005  history  2006  ls  2007  history

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

CrazyEddie
() автор топика
Ответ на: комментарий от CrazyEddie

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

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

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

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
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

я использую такое:

Неплохо. Совсем неплохие обёртки для awk.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.