我的动机是我正在使用多个git存储库,并且我想在所有这些存储库上运行git status
以查看究竟是什么。我怎样才能在我的pushd栈上循环?
正如我经常存储库之间切换,我有他们在一个pushd
栈,通过dirs -v
示出为:
0 /d/dev/helperscripts
1 /d/dev/mainsite
2 /d/dev/satellitesite
3 /d/dev/apithing
我试图使用xargs
如下遍历它们:
dirs | xargs -n 1 -I % bash -c 'cd -- "%" && git status '
但是,这给出以下错误:
bash: line 0: cd: /d/dev/helperscripts /d/dev/mainsite /d/dev/satellitesite /d/dev/apithing: No such file or directory
我觉得这令人惊讶,因为下面的结果是预期的目录的线break'd列表:
dirs | xargs -n 1 echo
无法用:庆典:0行:CD:〜/ tmp目录/ IW:没有这样的文件或目录 –
它失败的命令指定'“% “(我从你的例子中逐字抄录)。这扩展为'“〜/ tmp/iw”',并且'〜'在引号内使用时会失去其特殊含义。解决方案是'dirs -l'。我相应地更新了我的答案。 –
在疯狂的dirs上使用失败:bash:line 0:cd:/ home/tange/tmp/<#&|()!!:没有这样的文件或目录 –