Как уже упоминалось, вы можете использовать пробел перед вашей командой, но это зависит от переменной HISTCONTROL. Вот несколько альтернатив -
Вы можете сказать терминалу прекратить запись и начать запись истории. Это можно сделать с помощью этих команд -
set +o history #stop recording history
set -o history #start recording history
Если вы уже запустили некоторые команды и забыли остановить запись или использовать пробел, вы все равно можете остановить ее от записи до .bash_history, пока сеанс по-прежнему открыт. Он записывается в файл при закрытии сеанса терминала. Таким образом, вы можете удалить текущую историю сеанса непосредственно перед закрытием сеанса (до выхода из su в вашем случае). Это можно сделать с помощью этой команды -
history -c
Крайним вариантом было бы убить терминальный процесс, когда вы закончите выполнение всех команд. Вы действительно убиваете процесс, прежде чем он сможет записать историю в файл.
kill -9 $$
$$ выдаст текущий идентификатор процесса терминала, а kill -9 убьет этот процесс.
У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).
Итак, я заглянул в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.
Но отличие от предыдущей версии пакета до новой версии хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.
Я кратко опишу Необходимые шаги:
https : //launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra
Оригинальный tarball называется: nvidia-graphics-drivers_290 .10.orig.tar.gz
Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1 ~ lucid ~ xup1.diff.gz
~ / nvidia & gt; tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~ / nvidia & gt; gzip -d nvidia-graphics-drivers_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff.gz ~ / nvidia & gt; patch -p0 & lt; nvidia-graphics-drivers_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff [...]
Вы не должны получать какие-либо отброшенные куски при патче. diff от 285.05.09-0ubuntu1 ~ lucid ~ xup1 до 290.10-0ubuntu1 ~ lucid ~ xup1
~ / nvidia & gt; gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff.gz ~ / nvidia & gt; patch -R-p0 & lt; nvidia-settings_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff [...]
~ / nvidia & gt; mv nvidia-settings-290.10 / nvidia-settings-285.05.09 ~ / nvidia & gt; cd nvidia-settings-285.05.09 / ~ / n / nvidia-settings-285.05.09 & gt; dpkg-buildpackage
~ / n / nvidia-settings-285.05.09 & gt; cd .. ~ / nvidia & gt; sudo dpkg -i nvidia-current_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_amd64.deb [...]
Использование xorg-edgers ppa для повседневной работы может быть довольно плохой идеей.
Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.
Чтобы удалить PPA и понизить пакеты, замененные им (так что вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:
sudo apt-get install ppa-purge [ ! d0]
И затем удалите PPA, изящно понизив до официальных пакетов:
sudo ppa-purge ppaname
Это должно верните свои пакеты обратно на официальные.
Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:
sudo apt-get purge packagename
Вы можете найти имя ppa, посмотрев раздел «Источники программного обеспечения» в настройках Ubuntu и просмотрите список пакетов, которые он предоставляет на своей странице запуска (или посмотрите раздел «Происхождение» диспетчера пакетов Synaptic, если он установлен).
[Original Poster]
Не очень весело, я написал сценарий для вычисления разницы и выполнения команды restore; было задействовано около 100 пакетов. К сожалению, мое понижение не удалось, так как многие пакеты больше не доступны: (
#! / Usr / bin / env python import sys, getopt, os from datetime import datetime datefmt = "% Y-% m -% d% H:% M:% S "dry_run = True try: opts, args = getopt.getopt (sys.argv [1:]," y "), если не args: raise Exception (" дата не указана ") elif len (args) == 1: args.append ("00:00:00") # default time elif len (args)! = 2: raise Exception ("неожиданные аргументы") snapshot = datetime.strptime ("". join (args), datefmt) для opt, _ in opts: if opt == "-y": dry_run = False else: raise Exception ("неподдерживаемая опция% s"% opt), за исключением исключения: e: print "error:" , e print "usage:", sys.argv [0], "[flags] YYYY-MM-DD [HH: MM: SS]" print "flags: -y = для реального, не просто покажите это, восстановить его "sys.exit (1) # определить, что делать history = {} restore = set () remove = set () с open (" / var / log / dpkg.log "," r ") в качестве журнала: для строки в журнале: дата, время, действие, строка = строка.split (нет, 3), когда = datetime.strptime ("% s% s"% (дата, время), datefmt) package, ver = line.strip ( ) .split (None, 1), если при & lt; = моментальный снимок: если действие включено ("upgrade", "install"): prev_ver, new_ver = ver.split () history [package] = new_ver elif action == "remove": если пакет в истории: del history [package] else: print "(не удается удалить% s)"% line else: if action == "install": remove.add (package) elif action == "upgrade": если пакет в history: restore.add (пакет) elif package not in remove: print "(не может вернуть% s)"% line elif action == "remove": если пакет в истории: restore.add (package) elif package in remove: remove .remove (package) else: print "(не может отменить% s)"% line # показать, что делать для пакета при восстановлении: напечатать "restore", package, history [package] для пакета в remove: print "remove", package # сделать это, если не dry_run: print "======" def execute (cmd): print cmd os.system (cmd) #execute ("apt-get remove" + "" .join (удалить)) выполнить ( "apt-get install" + "" .join ("% s =% s"% (package, history [package]) для восстановления пакета))
/var/log/apt/history.log
?
– Lekensteyn
28 June 2011 в 02:13
dpkg
прямо? Synaptic является интерфейсом apt-get
.
– Lekensteyn
28 June 2011 в 02:21
В будущем, если вы используете synaptic (при условии, что вы можете загрузиться в X), вы можете выбрать из доступных версий, выделив пакет, который нужно изменить, а затем выберите «принудительная версия» в меню. Оттуда вы сможете понизить рейтинг.
Использование xorg-edgers ppa для повседневной работы может быть довольно плохой идеей.
Это может дать вам последние версии драйверов, правда, но вы также можете получить неработающие драйверы.
Чтобы удалить PPA и понизить пакеты, замененные им (так что вернемся к тем, которые доступны в официальных репозиториях), сначала установите ppa-purge:
sudo apt-get install ppa-purge [ ! d0]
И затем удалите PPA, изящно понизив до официальных пакетов:
sudo ppa-purge ppaname
Это должно верните свои пакеты обратно на официальные.
Другие пакеты, которые были в PPA, но не в официальных репозиториях, не будут удалены. Вы должны вручную сообщить диспетчеру пакета об их удалении, например, используя apt:
sudo apt-get purge packagename
Вы можете найти имя ppa, посмотрев раздел «Источники программного обеспечения» в настройках Ubuntu и просмотрите список пакетов, которые он предоставляет на своей странице запуска (или посмотрите раздел «Происхождение» диспетчера пакетов Synaptic, если он установлен).
У меня была такая же проблема сегодня, я заметил, что ~ 2 недели назад я установил обновления в свою систему и все еще имел активированный ubuntu-x-swat ppa, у которого был новый драйвер nvidia. Старый был в порядке, новый сломал мою систему (только немного, мне потребовалось некоторое время, чтобы заметить).
Итак, я заглянул в /var/log/apt/history.log, чтобы найти предыдущий номер версии пакета драйверов nvidia, который я установил, а затем попытался найти пакет в / var / cache / apt / archives, где вы обычно найдете все пакеты, загруженные apt, но его там не было. И ppa не сохраняет предыдущую версию своих пакетов, как только они заменяются более новой версией, поэтому я тоже не смог ее получить.
Но отличие от предыдущей версии пакета до новой версии хранится в ppa для всех версий, а вместе с оригинальным tarball и его debian-патчами можно отменить все изменения новой версии и получить предыдущие версии.
Я кратко опишу Необходимые шаги:
https : //launchpad.net/~ubuntu-x-swat/+archive/x-updates/+sourcepub/2087970/+listing-archive-extra
Оригинальный tarball называется: nvidia-graphics-drivers_290 .10.orig.tar.gz
Патчи debian, которые делают встроенный пакет из tarball: nvidia-graphics-drivers_290.10-0ubuntu1 ~ lucid ~ xup1.diff.gz
~ / nvidia & gt; tar xvzf nvidia-graphics-drivers_290.10.orig.tar.gz [...] ~ / nvidia & gt; gzip -d nvidia-graphics-drivers_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff.gz ~ / nvidia & gt; patch -p0 & lt; nvidia-graphics-drivers_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff [...]
Вы не должны получать какие-либо отброшенные куски при патче. diff от 285.05.09-0ubuntu1 ~ lucid ~ xup1 до 290.10-0ubuntu1 ~ lucid ~ xup1
~ / nvidia & gt; gzip -d nvidia-graphics-drivers_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff.gz ~ / nvidia & gt; patch -R-p0 & lt; nvidia-settings_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_290.10-0ubuntu1 \ ~ lucid \ ~ xup1.diff [...]
~ / nvidia & gt; mv nvidia-settings-290.10 / nvidia-settings-285.05.09 ~ / nvidia & gt; cd nvidia-settings-285.05.09 / ~ / n / nvidia-settings-285.05.09 & gt; dpkg-buildpackage
~ / n / nvidia-settings-285.05.09 & gt; cd .. ~ / nvidia & gt; sudo dpkg -i nvidia-current_285.05.09-0ubuntu1 \ ~ lucid \ ~ xup1_amd64.deb [...]