Почему argv [-1] показывает заголовок руководства в fish_title? - PullRequest
0 голосов
/ 07 марта 2020

Я настраиваю заголовки в терминале windows, определяя функцию fish_title. Я хочу показать X после того, как я выполню man X, и я подумал, что eval $argv[-1] даст мне это, но это дает мне сам заголовок человека (например, FISH(1) fish-shell). Почему?

Я получаю фактический аргумент с (string split " " $argv)[-1], но я хотел бы знать, почему первая попытка дает мне такой неожиданный результат.

1 Ответ

1 голос
/ 07 марта 2020

Я настраиваю заголовки в терминале windows, определяя функцию fish_terminal.

Вы имеете в виду функцию fish_title.

eval $argv[-1]

Это принимает последний аргумент и выполняет его как команду. Полученный аргумент fish_title является текущей командной строкой. Вы выполняете команду man X. Поэтому он снова выполняет man.

Поскольку многострочные заголовки обычно не поддерживаются, fi sh будет использовать только первую строку вывода fish_title s в качестве заголовка. Это заглавная строка справочной страницы.


eval - это совершенно не то, что нужно здесь.

Вы хотите использовать echo. Просто echo $argv[-1], чтобы дать всю командную строку, или echo (string split " " $argv)[-1], чтобы дать последнее слово командной строки.

Не то, чтобы я предполагал, что это все так полезно - например, если вы сделаете git diff something.cpp, это будет выведите something.cpp, но вы это сделаете.

...