2014-04-14 85 views
0

別名或函數我有這樣的命令:命令不工作在bash的

# 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

如果你做'/ bin/ls -l path/to/file.ext'權限看起來應該有效嗎?祝你好運。 – shellter

+0

@shellter它的「-rw-r - r--」 –

+0

並且是你的個人ID文件的所有者,或者是'git admin'文件的所有者? – shellter

回答

0

看起來像你對我成功地打開第一個文件,然後將其餘的嘗試被執行。至少,這是我看到錯誤信息時想到的第一件事。然後它實際上是有道理的,因爲你沒有對文件的執行權限。

您可以通過在具有執行權限的一些無害腳本上進行嘗試來驗證該腳本,並查看它是否已執行。

這就是說,我沒有得到那種行爲 - 它對我來說工作得很好,就像你寫的那樣。

爲了弄清楚發生了什麼,我傾向於嘗試將功能拆分爲不同的部分。我也傾向於避免使用反引號來替換命令。我認爲$(command)語法更清晰且不易出錯。但這只是個人偏好。 :)

所以,我建議出發的東西是這樣的:

function vge { 
    files_to_open=$(git status --porcelain | sed -ne "s/^ M //p") 
    echo "Opening files: $files_to_open" 
    vim -O $files_to_open 
} 

檢查輸出,並試圖找出爲什麼只有一個文件被打開,其餘的執行(事實上,如果這種假設是正確的)。