Как получить команды до отметок времени в выводе «history» в Bash?

255
DiiP

Я нашел этот ответ об истории отметок времени для Bash.

Есть ли способ перестановки вывода? Особенно

Number command time-stamp 

скорее, чем

Number time-stamp command 
0

1 ответ на вопрос

1
Kamil Maciorowski

Вы можете обработать вывод historyвстроенного. Сначала подготовьте ваш HISTTIMEFORMATответ в соответствии с ответом, с которым вы связались:

export HISTTIMEFORMAT="%d.%m.%y %T " 

Чтобы получить желаемый результат, вызовите:

history | awk '{ printf "%s\t",$1; for(i=4; i<=NF; i++) printf "%s",$i OFS; printf "\t%s %s\n",$2,$3 }' 

Если вы перезаписали historyвстроенную функцию:

history() { builtin history | awk '{ printf "%s\t",$1; for(i=4; i<=NF; i++) printf "%s",$i OFS; printf "\t%s %s\n",$2,$3 }'; } 

тогда достаточно написать, historyчтобы получить то, что вы хотите.

Примечание: начальные пробелы и форматирование столбцов с чистого historyвывода теряются. Так как командное поле не имеет фиксированной длины, располагать его посередине не самая лучшая идея. Я специально разделил поля табуляцией (вместо пробелов), чтобы сделать вывод более читабельным. Если вы предпочитаете пробелы, замените \tв моем коде на (пробел).