Используя last для получения последних 8 логинов пользователя - PullRequest
0 голосов
/ 24 января 2019

Создайте псевдоним с именем mylogin, в котором указано указанное число самых последних входов в систему, выполненных пользователем. Например, если пользователь вводит mylogin 8 в командной строке система выведет список восьми последних входов пользователя в систему. Псевдоним должен работать для любого пользователя без каких-либо изменений.

Я могу сделать

last username | head -8

чтобы получить последние 8 логинов username, где я заменяю свое имя на username, но я не могу понять, как заставить его работать для любого пользователя

1 Ответ

0 голосов
/ 24 января 2019

Чтобы ваша команда работала с любым пользователем, попробуйте

last $(whoami)| head -8

Я заменил параметр username в вашей команде на $(whoami), который является выводом whoami.Команда whoami печатает имя пользователя, связанное с текущим действующим идентификатором пользователя.Когда вы запускаете это без использования sudo или других средств для изменения эффективного идентификатора пользователя, это должно быть имя пользователя текущего пользователя.

или

last -n 8 $(whoami)

Если ваш lastКоманда поддерживает опцию -n 8 или просто -8, вы можете указать количество строк, которые будут напечатаны без прохождения через head.Обратите внимание, что это может добавить строку, указывающую, когда файл wtmp был запущен.С | head -8 эта дополнительная строка будет удалена, если над ней будет достаточно строк входа в систему.

псевдоним или функция

Согласно https://stackoverflow.com/a/7131683/10622916 вы не можете передать аргумент псевдониму.,Аргументы будут добавлены к расширению псевдонима.

Поэтому невозможно вставить аргумент в расширение псевдонима или объединить его с - для создания опции.

Если вам нужнопсевдоним, а не функцию, вы можете использовать

alias mylogin='last $(whoami)|head -n'

Затем вы можете вызвать

mylogin 8

, который будет расширен до

last $(whoami)| head -n 8

Это решение имеетнедостатком является то, что вы получите сообщение об ошибке head при вызове

mylogin

без аргументов, потому что это расширяется до

last $(whoami)| head -n

Чтобы избежать этой ошибки, вы можете использовать функцию вместопсевдоним.

mylogin () {
    if [ -n "$1" ]
    then
        last -n "$1" $(whoami)
    else
        last $(whoami)
    fi
}

В функции вы также можете использовать

last $(whoami) | head -n "$1"

вместо

last -n "$1" $(whoami)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...