gpt4 book ai didi

shell - 如何在 fish shell 脚本中使用命令行参数

转载 作者:行者123 更新时间:2023-12-04 00:07:40 25 4
gpt4 key购买 nike

我正在尝试为 grep 写一个别名:

# config.fish
alias grepcustom="grep -r $argv ~/"

基本上我想要做的是在我的主目录上进行递归 grep,而不必输入所有内容(我知道我很懒)。

当我重新启动 shell 并运行 grepcustom 我得到:

$ grepcustom "hello"
grep: hello: No such file or directory

有一个文件包含“你好”。如果我在 shell 中运行 grep -r 它可以正常工作。但是,问题似乎在于我的别名如何识别命令行参数“hello”。我做错了什么?

最佳答案

你需要编写一个实际的函数:

$ alias grepcustom="grep -r $argv ~/"
$ type grepcustom
grepcustom is a function with definition
function grepcustom
grep -r ~/ $argv;
end

那里发生了什么?由于我没有在我的 shell 中定义 $argv,所以它被一个空字符串替换,然后 alias 添加了 $argv 以使该函数工作。让我们尝试使用单引号:

$ alias grepcustom='grep -r $argv ~/'
$ type grepcustom
grepcustom is a function with definition
function grepcustom
grep -r $argv ~/ $argv;
end

这显然是不对的。你想要的

function grepcustom -a pattern
grep -r $pattern ~/
end

关于shell - 如何在 fish shell 脚本中使用命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com