Получить последнюю команду bash, включая трубы

Я написал сценарий, который извлекает текущую команду, используя
$ BASH_COMMAND. Скрипт в основном выполняет некоторую логику, чтобы
определить текущую команду и файл, открываемые для каждого сеанса
tmux. Все работает отлично, за исключением случаев, когда
пользователь запускает команду с конвейером (т. Е. cat file |
less ), и в этом случае $ BASH\_COMMAND только сохраняет
первую команду перед трубой. В результате вместо показа команды
`less [file]` (которая является реальной программой, в
которой файл открыт), сценарий выводит его как `cat
[file]` ,

Одна из альтернатив, которую я пробовал использовать, опирается
на `history 1` вместо $ BASH_COMMAND. Есть пара проблем
с этой альтернативой, а также. Во-первых, он не автоматически
расширяет псевдонимы, например $ BASH\_COMMAND, что в некоторых
случаях может привести к запутанности скрипта (например, если я
скажу ему игнорировать `ls` ), но используйте
`ll` вместо этого (отображается на `ls -l` ),
сценарий не будет игнорировать команду, обрабатывая ее в любом
случае), и включая дополнительные условные обозначения для каждого
псевдонима не кажется чистым решением. Вторая проблема заключается
в том, что я использую HISTIGNORE для фильтрации некоторых
распространенных команд, о которых я все еще хочу, чтобы сценарий
знал, используя историю, просто заставит скрипт игнорировать
последнюю команду, если она не отслеживается историей.

Я также попытался использовать `$ {# PIPESTATUS [@]}
, чтобы узнать, равна ли длина массива 1 (без труб) или выше
(используются трубы, в этом случае я бы взял историю), но это
Кажется, что всегда нужно знать только об одной команде.

Кто-нибудь знает о других альтернативах, которые могут работать
для меня (например, другая переменная, которая будет хранить $
BASH\_COMMAND для других подколов, которые должны быть выполнены
после завершения текущего подкала, или каким-то образом знать, был
ли канал использован в последняя команда)?

я думаю, что вам нужно немного изменить свою реализацию и
использовать команду «история», чтобы заставить ее работать. Кроме
того, используйте команду «alias», чтобы проверить все настроенные
псевдонимы. Команда «who», чтобы проверить, действительно ли
команда хранится в любом каталоге PATH. удачи