Я был на Linux больше 6 месяцев теперь, но никогда не шел слишком много в CLI (интерфейс командной строки или терминал или оболочка)
Теперь, поскольку я задаю вопросы здесь, получаю ответы или справку от других сайтов, я изучаю новые команды...
Как может, я могу сохранить каждую новую команду в текстовом файле? Только новые/уникальные команды, не повторения той же команды.
Вот пример:
$ command1
$ command2
$ command3
$ command4
$ command1
commandrec
как этоcommand1
command2
command3
command4
Примечание: Последняя команда в терминале, который был снова command1
не записывается/сохраняется снова в текстовом файле.
И в следующий раз я открываю терминал и ввожу новую команду command 5
, это должно быть добавлено к списку в commandrec
(но если бы команда использовалась раньше некоторая другая дата, то она должна все еще быть проигнорирована. Например, command 1
вводимый снова наряду с command 5
в новый день/время, но command1
не зарегистрированный, как уже используется)
commandrec
файл будет выглядеть примерно так31/05/12 12:00:00
command1
command2
command3
command4
01/06/12 13:00:00
command 5
(вещь времени и даты была бы большой, если это возможно, но хорошо даже если это не там),
Таким образом, у меня может быть запись всех команд, используемых мной до настоящего времени.
Как это может быть сделано?
Продолжая предложение Дирка о прохождении .bash_history
и предложение Криса об использовании команды sort
, вы, вероятно, захотите сделать следующее:
cat ~/.bash_history | sed 's/sudo //g' | sort -u +0 -0 | cut -d\ -f1 > commandrec.txt
Вторая команда в конвейере удалит вхождения 'sudo', поэтому при сортировке вы будете сортировать команды, которые вы можете вводить только после вызова sudo
.
История Bash не отслеживает время / дату, когда использовалась команда, но в самый раз, вы можете написать скрипт, который будет вызываться при выходе из терминала. Сценарий вызовет вышеуказанную команду (но сохраните в commandrec- $ DATE.txt, где у вас есть что-то вроде DATE = `date" +% Y-% m-% dT% H:% M:% S "`). Тогда вы можете использовать .bash-history
и сохранить только новые команды в commandrec- $ DATE.txt. Таким образом, у вас будет коллекция таких устаревших файлов commandrec. На самом деле, поскольку .bash_history
ограничено (я думаю, что по умолчанию в моей системе было 500), вам, вероятно, следует сравнить файл, который вы получили, путем cat
-ing всех ваших файлов commandrec * .txt и .bash_history
.
Тогда в любое время, когда вы действительно захотите просмотреть все свои команды на сегодняшний день, вы можете поместить все свои файлы в файл.
Отметка времени проста. Чтобы сделать это, просто добавьте следующую строку в ~/.profile
или аналогичный:
HISTTIMEFORMAT='%x %r '
Для уникальной записи каждой новой команды сложно. Сначала нужно добавить к ~/.profile
или аналогичному:
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
Затем нужно добавить к ~/.bash_logout
:
history -a
history -w
Как насчет простого:
cat .bash_history|sort|uniq > commands.txt
Если Вы только захотите команду (Не принимая параметры во внимание), то простое сокращение сделает:
cat .bash_history|cut -d ' ' -f1|sort|uniq > commands.txt
Если Вы хотите знать, сколько раз выполнялась команда, Вы могли:
cat .bash_history|cut -d ' ' -f1|sort|uniq -c > commands.txt
Ваша цель - выучить новые команды? Я рекомендую использовать CLI Companion :
CLI Companion - это инструмент для хранения и запуска команд терминала из графического интерфейса. Люди, незнакомые с Терминалом, найдут CLI Companion полезным способом познакомиться с Терминалом и раскрыть его потенциал. Опытные пользователи могут использовать CLI Companion для хранения своего обширного списка команд в списке с возможностью поиска. blockquote>
Вы получите его, запустив:
sudo add-apt-repository ppa:clicompanion-devs/clicompanion-nightlies sudo apt-get update sudo apt-get install clicompanion
Если вы не хотите добавлять PPA, попробуйте этот файл для 12.04 (последняя версия 1.1-6, выпущенная 2012-04-14 - проверьте на этой странице для получения более новых версий.) - или удалите PPA после установки с
< hr>sudo add-apt-repository -r ppa:clicompanion-devs/clicompanion-nightlies
.PS: я нашел этот вопрос , который тоже может быть полезен.
в вашем домашнем каталоге проверьте файл .bash_history
, он сохраняет каждую введенную вами команду
.bashrc
.bash_history
в другой файл с помощью cp
. rm ~/.bash_history
после изменения .bashrc
с параметрами управления историей, в противном случае комбинация старых и новых записей может дать вам странные результаты. Когда вы найдете что-то, что работает , НЕ rm
больше !!
Обратите внимание также, что любые изменения в .bashrc
отражаются только при выходе и создании экземпляра нового терминала / оболочки.
Добавьте эти строки в ~/.bashrc
:
export HISTCONTROL=erasedups export HISTSIZE=10000
Размер истории установлен на 10000, дубликаты автоматически удаляются, так что места достаточно:)
export HISTTIMEFORMAT="%F %T"
, это будет отображать время / дату перед каждой строкой при использовании history
izx@preciseunity:~$ history 1 2012-06-01 07:16:22 rm ~/.bash_history 2 2012-06-01 07:16:23 exit 3 2012-06-01 07:16:27 ls 4 2012-06-01 07:16:31 test 5 2012-06-01 07:16:34 ls /etc 6 2012-06-01 07:16:36 down 7 2012-06-01 07:16:37 up 8 2012-06-01 07:16:40 hustory 9 2012-06-01 07:16:48 history
HISTTIMEFORMAT
по вашему выбору / локали на основе strftime