Проще делать группы [имя _ пользователя]
Если вы хотите перечислить всех локальных пользователей и их локальные группы, вы можете сделать
cat/etc/passwd | awk -F ':«» {print $1} «| xargs -n1 groups
При получении» groups: команда не найдена, "вероятно, вы отредактировали свой путь к окружающей среде в худшую сторону, чтобы сбросить путь do PATH = $ (getconf PATH)
Если вы хотите перейти без использования sed:
[[ $string == *$regex* ]] && echo $regex
-121--83146- Можно указать число символов для чтения с помощью -n
. Так, в вашем случае:
#! /bin/bash
read -n1 a
echo "$a pressed"
Может потребоваться включить -s
, чтобы избежать печати клавиши при нажатии.
Выход history -E
всегда будет одинаковым, независимо от опции EXTENDED_HISTORY
. Продолжительность команды хранится непосредственно в файле истории (, просто просмотрите файл, чтобы увидеть значения ).
Однако еще одна проблема заключается в том, что есть несколько параметров, которые переопределяют это поведение. Вы можете проверить, работает ли он, выполнив команду, например sleep 3
, которая должна привести к записи, которая выглядит следующим образом:
pol@host ~ $ sleep 3
pol@host ~ $ tail -1 ${HISTFILE}
: 1530663493:3;sleep 3
pol@host ~ $ setopt | grep hist
extendedhistory
histignoredups
incappendhistorytime
Вы можете видеть, что значение "duration" равно 3. Если оно не равно 3, вероятно, у вас установлен другой параметр, который препятствует работе EXTENDED_HISTORY
. К ним относятся SHARED_HISTORY
и INC_APPEND_HISTORY
. Если вам нужно первое, то вам не повезло. Для последнего есть альтернатива INC_APPEND_HISTORY_TIME
, которую вы можете использовать вместо этого, если хотите также иметь EXTENDED_HISTORY
значения (, как у меня выше ).
Замечу, что ответ вhttps://unix.stackexchange.com/a/453336/277040несколько вводит в заблуждение. Действительно, выходной формат из history -E
будет одинаковым независимо от статуса EXTENDED_HISTORY
, но временные метки будут относительно бессмысленными, если unsetopt EXTENDED_HISTORY
всегда имел место для ваших сеансов Zsh. Каждая строка HISTFILE
будет содержать команду без какой-либо информации о метке времени, поэтому history -E
выводит одно и то же время для всех этих команд (время открытия конкретной оболочки и HISTFILE
считывания в ее память ).
Например, задано ~/.zsh_history
, содержащее команды, выполненные в разные часы в прошлом:
echo 1
echo 3
echo 5
Когда я открываю оболочку в 5 :03:00 в день написания этого ответа, history -E
выводит:
1 24.6.2020 17:03 echo 1
2 24.6.2020 17:03 echo 3
3 24.6.2020 17:03 echo 5