Скопируйте.bash_history всех пользователей за один раз
Можно ли использовать cp для копирования файла.bash_history каждого пользователя в одну и ту же папку (с добавленным именем пользователя)?
Или, по крайней мере, можно скопировать их в параллельный набор папок? Я не могу понять это.
У меня есть root-доступ.
3 ответа
ТЛ; др; for a in /home/* ; do cp $a/.bash_history /tmp/$a.bash_history ; done
Более длинная версия:
для шаблона в цикле над всеми элементами в шаблоне.
Сам шаблон хранится в переменной с именем a.
Примеры:for a in * ; do echo $a ; done
эхо все имена файлов.for a in /home/* ; do echo $a ; done
echo - это имена всех homedirs в /home.
Вместо эха мы используем команду копирования. (Ф)
А поскольку мы не хотим перезаписывать все файлы, нам нужно либо изменить имя назначения, либо объединить их все в один файл.
.bash_history
Для копирования мы используем cp $ a / tmp / $ a_file (все файлы теперь называются по-разному.
Для объединения мы можем использовать cat с append для перенаправления.for a in /home/* ; do cat $a/.bash_history >> /tmp/all-users_bash_history ; done
Помните, что это НЕ абсолютно надежный способ скопировать действия пользователей. Это потому, что есть опции, которые пользователь может легко вызвать, чтобы не помещать вещи в файл истории. Поэтому я бы не стал рассчитывать на это как на какой-либо механизм аудита.
Также, будучи пользователем root, шпионит за файлом других пользователей, если для этого нет особых и веских причин. Здесь не хватает честности, если вы заранее не скажете им, что собираетесь это сделать.
Если вы ищете что-то конкретное, вы можете использовать:
grep -e "stuff goes here" /home/*/.bash_history