Как может я uniqely записывать каждую новую команду, которую я использую и возможно добавляю метку времени к нему?

Я был на Linux больше 6 месяцев теперь, но никогда не шел слишком много в CLI (интерфейс командной строки или терминал или оболочка)

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

Как может, я могу сохранить каждую новую команду в текстовом файле? Только новые/уникальные команды, не повторения той же команды.

Вот пример:

  1. В терминале я ввожу команды как это -
$  command1
$  command2
$  command3
$  command4
$  command1
  1. Теперь, эти команды должны быть сохранены в текстовом файле, говорят commandrec как это
command1
command2
command3
command4

Примечание: Последняя команда в терминале, который был снова command1 не записывается/сохраняется снова в текстовом файле.

И в следующий раз я открываю терминал и ввожу новую команду command 5, это должно быть добавлено к списку в commandrec

(но если бы команда использовалась раньше некоторая другая дата, то она должна все еще быть проигнорирована. Например, command 1 вводимый снова наряду с command 5 в новый день/время, но command1 не зарегистрированный, как уже используется)

  1. commandrec файл будет выглядеть примерно так
31/05/12 12:00:00
command1
command2
command3
command4
01/06/12 13:00:00
command 5

(вещь времени и даты была бы большой, если это возможно, но хорошо даже если это не там),

Таким образом, у меня может быть запись всех команд, используемых мной до настоящего времени.

Как это может быть сделано?

5
задан 4 February 2018 в 10:02

6 ответов

Продолжая предложение Дирка о прохождении .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.

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

0
ответ дан 4 February 2018 в 10:02

Отметка времени проста. Чтобы сделать это, просто добавьте следующую строку в ~/.profile или аналогичный:

HISTTIMEFORMAT='%x %r '

Для уникальной записи каждой новой команды сложно. Сначала нужно добавить к ~/.profile или аналогичному:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'

Затем нужно добавить к ~/.bash_logout:

history -a
history -w
0
ответ дан 4 February 2018 в 10:02

Как насчет простого:

  1. Захватите информацию от .bash_history (Все команды, используемые в терминале)
  2. Уладьте их В алфавитном порядке
  3. Покажите только Uniques
  4. Отправьте их в файл

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

0
ответ дан 4 February 2018 в 10:02

Ваша цель - выучить новые команды? Я рекомендую использовать CLI Companion :

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

enter image description here

Вы получите его, запустив:

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 после установки с sudo add-apt-repository -r ppa:clicompanion-devs/clicompanion-nightlies.

< hr>

PS: я нашел этот вопрос , который тоже может быть полезен.

0
ответ дан 4 February 2018 в 10:02

в вашем домашнем каталоге проверьте файл .bash_history, он сохраняет каждую введенную вами команду

0
ответ дан 4 February 2018 в 10:02

Как успешно поэкспериментировать с изменением этих настроек в .bashrc

  • Перед экспериментированием : сохраните свой текущий .bash_history в другой файл с помощью cp.
  • Экспериментируя с тем, что работает: rm ~/.bash_history после изменения .bashrc с параметрами управления историей, в противном случае комбинация старых и новых записей может дать вам странные результаты.
    • Например, все записи до включения меток времени будут отображать одну и ту же текущую дату / время!
  • Когда вы найдете что-то, что работает , НЕ rm больше !!

  • Обратите внимание также, что любые изменения в .bashrc отражаются только при выходе и создании экземпляра нового терминала / оболочки.

    [ 1123]

Увеличение размера истории и устранение дубликатов

  • Добавьте эти строки в ~/.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
0
ответ дан 4 February 2018 в 10:02

Другие вопросы по тегам:

Похожие вопросы: