我有一个bash program,它使用参数扩展从我所在的目录返回上一级。例如,如果我位于目录/path/to/my/dir
中,则程序将允许我转到/path/to/my/
,而无需重新键入整个路径或多次使用cd -
。
最近,我决定开始使用鱼壳,我喜欢它。但是我不确定在鱼壳中如何parameter expansion。
我试图在~/.config/fish/config.fish
中为我的bash程序创建一个别名,以便back
将运行bash /path/to/back.sh
,但这在当前环境中不会运行该程序。由于Fish不知道如何运行bash脚本,因此将其更改为. /path/to/back.sh
并没有真正的帮助。
我想知道鱼中是否有参数扩展功能?我尝试阅读documentation,但找不到它。
任何帮助将不胜感激。
谢谢。
答案 0 :(得分:1)
除非您通过.
或source
运行它,否则 back.sh 脚本可能无法工作。这是因为子进程不能影响任何其他进程的环境,包括CWD。如果您运行back.sh 1
,则只会更改该脚本的CWD,这是没有意义的,因为该脚本会立即退出。
Fish确实支持参数扩展,但不支持${prev_dir%/*}
之类的括号结构。 Fish更喜欢使用命令进行此类操作,而不是使用复杂的语法。因此,例如,要删除最后一个斜杠之后的所有内容,您可以在fish中执行以下操作:
set prev_dir (string split -r -m1 / $prev_dir)[1]
并且正如一位评论者所述,您通常只需要cd ..
就可以在目录层次结构中上移一个级别。您真正需要多久向上移动一次以上?对我来说,答案很少,在这种情况下,我只需要cd ../..
移动两个级别即可。