我正在通过定义fish_title函数来定制终端窗口中的标题显示。我想在我执行X之后向man X展示,并且我认为eval $argv[-1]会给我这个结果,但是它给了我男人的头衔本身(例如FISH(1) fish-shell)。为什么?
我得到了与(string split " " $argv)[-1]的实际争论,但我想知道为什么前一次尝试会给我带来意想不到的结果。
发布于 2020-03-07 10:23:05
--我正在通过定义fish_terminal函数来定制终端窗口中的标题显示。
你指的是fish_title函数。
eval $argv-1
这将接受最后一个参数,并将其作为命令执行。fish_title接收的参数是当前命令行。您正在执行的命令是man X。所以它又处决了人。
由于多行标题不受普遍支持,fish将只使用fish_title输出的第一行作为标题。这是手册页的标题行。
eval绝对是完全错误的东西。
你是说要使用echo。只需简单地使用echo $argv[-1]来给出整个命令行,或者echo (string split " " $argv)[-1]就可以给出命令行的最后一个字。
我并不认为它是那么有用--例如,如果你做了git diff something.cpp,它会打印something.cpp,但是你会打印你自己。
https://stackoverflow.com/questions/60576416
复制相似问题