从命令行,这将在我的phpstorm应用程序中打开两个文件:
<select label="gender" value="male">
<option value={"male"}>male</option>
<option value={"female"}>female</option>
<option value={"others"}>others</option>
</select>
当我在〜/ .bash_profile中创建别名时:
git diff --name-only final-migration | xargs pstorm
并从与成功命令相同的目录中调用它:
alias ropen="git diff --name-only $1 | xargs pstorm"
什么都没有发生。我尝试更改别名,以使它回显而不是像预期的那样工作的ropen final-migration
。似乎xargs pstorm
是在别名中使用问题所在。.我不确定我要丢失什么。
答案 0 :(得分:1)
别名不能与$1
之类的参数一起使用。别名使用参数的唯一方法是将其放在最后。但是,即使$1
适用于别名,您的定义也不起作用,因为"$1"
在定义时已扩展。
您可以使用"$1"
打印echo "$1"
的值。对我来说,它是空的。所以别名...
alias ropen="git diff --name-only $1 | xargs pstorm"
...相当于...
alias ropen="git diff --name-only | xargs pstorm"
要按预期使用$1
,请编写一个函数:
ropen() { git diff --name-only "$1" | xargs pstorm; }
xargs
将修改参数。
假设git diff --names-only
将打印路径a b/c
和x/y z
,然后xargs
将构造命令pstorm "a" "b/c" "x/y" "z"
。这些文件都不存在。
要使用空格,请使用xargs -d '\n' pstorm
,这将构造正确的命令pstorm "a b/c" "x/y z"
。
答案 1 :(得分:0)
问题是OSX随附的我的xargs版本。通过使用GNU版本,@ socowi关于使用函数的建议非常有效。
要安装xargs的gnu版本,我就像@Benjamin W所说的那样,并使用自制程序安装findutils。然后,我按照建议将安装findutils的路径添加到了我的〜/ .bash_profile。