Есть ли способ отобразить список, состоящий из последних n
команд терминала, сделанных конкретным пользователем?
Каждый пользователь имеет .bash_history
файл, существующий в его корневом каталоге. т.е. /home/<USERNAME>/.bash_history
. Это хранит всю команду, выполняемую конкретным пользователем.
можно использовать этот файл для наблюдения команды, выполняемой пользователем. (Вам нужно полномочие пользователя root получить доступ к файлу другого пользователя.)
tail -n /home/<USERNAME>/.bash_history
не забывают заменять n
фактическим числом.
tail -n /home/userinquestion/.bash_history
казался бы очевидным ответом - предположение, что у них есть удар как их оболочка, конечно..
, Если существует открытый терминал, он еще не мог записать команды в файл истории.
необходимо будет использовать su или sudo, если пользователь не будет самостоятельно.
Если Ваша оболочка bash
, то лучший способ состоит в том, чтобы использовать эти history
команда:
(HISTFILE=/home/user/.bash_history; history -c; history -r; history n)
, В то время как немного сложный, это предоставляет все преимущества history
команда (такие как метки времени при включении ее). Круглые скобки (()
) гарантируют, что команды выполняются в подоболочке и не влияют на текущую оболочку.
Еще одна опция состоит в том, чтобы создать простой сценарий оболочки, который делает это:
#!/bin/bash
tail --lines=$1 /home/$(whoami)/.bash_history
Это берет ответ GP и делает его просто немного более симпатичным путем выполнения большего количества материала автоматически.
Выполненный nano history-lookup.sh
(или безотносительно имени Вы хотите - только заканчивают его в .sh
)
Вставка тот код в
Нажмите Ctrl+O затем Ctrl+X, чтобы сохранить и выйти.
Выполненный bash history-lookup.sh NUMBER-OF-ENTRIES
. Это должно выложить их приятно на экран.
Попробуйте:
history | tail -n20 > history20.txt
Путем отправки результата в текстовый файл, можно распечатать, обзор, послать по электронной почте, и т.д. текстовый файл в любое время.