我正在尝试为别名写一个别名grep:
# config.fish
alias grepcustom="grep -r $argv ~/"
Run Code Online (Sandbox Code Playgroud)
基本上我想要做的是在我的主目录上的递归grep,而不必输出任何东西(我知道我很懒).
当我重新启动shell并运行时,grepcustom我得到:
$ grepcustom "hello"
grep: hello: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有一个文件包含"你好".如果我grep -r在shell中运行它可以正常工作.但是,问题似乎在于我的别名如何识别命令行参数"hello".我究竟做错了什么?
你需要编写一个实际的函数:
$ alias grepcustom="grep -r $argv ~/"
$ type grepcustom
grepcustom is a function with definition
function grepcustom
grep -r ~/ $argv;
end
Run Code Online (Sandbox Code Playgroud)
那里发生了什么?由于我没有$argv在我的shell中定义,它被一个空字符串替换,然后alias添加$ argv以使该函数工作.让我们试试单引号:
$ alias grepcustom='grep -r $argv ~/'
$ type grepcustom
grepcustom is a function with definition
function grepcustom
grep -r $argv ~/ $argv;
end
Run Code Online (Sandbox Code Playgroud)
那显然不对.你要
function grepcustom -a pattern
grep -r $pattern ~/
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1835 次 |
| 最近记录: |