我有这个命令:
# Open up all git modified files in vertical splits
function vge {
vim -O `git status --porcelain | sed -ne "s/^ M //p"`
}
我想稍后添加选项和内容,但我甚至无法将或作为别名运行。如果我只是复制命令并将其粘贴到我的终端并按下输入即可。我得到的错误是第二个(依此类推)文件是:
-bash: path/to/file.ext: Permission denied
我真的不知道该尝试什么
答案 0 :(得分:0)
在我看来,就像你成功打开第一个文件,然后尝试执行其余文件。至少,当我看到错误消息时,这是我想到的第一件事。然后它实际上是有道理的,因为你没有对文件执行访问权限。
您可以通过在具有执行权限的无害脚本上进行尝试来验证这一点,并查看它是否已执行。
那就是说,我没有得到这种行为 - 它对我来说很好,就像你写的一样。
为了弄清楚发生了什么,我倾向于尝试将功能分成不同的部分。我也倾向于避免使用反引号进行命令替换。我认为$(命令)语法更清晰,更不容易出错。不过,这只是个人偏好。 :)
所以,我建议从这样的事情开始:
function vge {
files_to_open=$(git status --porcelain | sed -ne "s/^ M //p")
echo "Opening files: $files_to_open"
vim -O $files_to_open
}
检查输出并试图弄清楚为什么只打开一个文件而其余文件被执行(如果确实这个假设是正确的)。