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