что делает extended_history в zsh?

Проще делать группы [имя _ пользователя]

Если вы хотите перечислить всех локальных пользователей и их локальные группы, вы можете сделать

cat/etc/passwd | awk -F ':«» {print $1} «| xargs -n1 groups

При получении» groups: команда не найдена, "вероятно, вы отредактировали свой путь к окружающей среде в худшую сторону, чтобы сбросить путь do PATH = $ (getconf PATH)

-121--5602-

Если вы хотите перейти без использования sed:

[[ $string == *$regex*  ]] && echo $regex
-121--83146-

Можно указать число символов для чтения с помощью -n . Так, в вашем случае:

#! /bin/bash
read -n1 a
echo "$a pressed"

Может потребоваться включить -s , чтобы избежать печати клавиши при нажатии.

3
11.01.2018, 20:09
2 ответа

Выход 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значения (, как у меня выше ).

4
27.01.2020, 21:21

Замечу, что ответ в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
2
24.06.2020, 22:08

Теги

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