Shell bash:brew命令未显示任何输出

Shell bash:brew命令未显示任何输出,shell,terminal,homebrew,macos-sierra,Shell,Terminal,Homebrew,Macos Sierra,我不小心将字符放在brew命令(自制)之前,之后,我不确定brew命令是否正在执行,因为它们没有输出任何内容 我重新启动了终端和计算机,但它仍在继续 Mac OS X Sierra简短回答: 运行以下命令以恢复brew: $ git -C /usr/local/Homebrew reset --hard origin/master 长答覆: 如前所述,您通过重定向到brew创建了一个空文件 $ >brew some command 相当于: $ some command > br

我不小心将
字符放在brew命令(自制)之前,之后,我不确定brew命令是否正在执行,因为它们没有输出任何内容

我重新启动了终端和计算机,但它仍在继续

Mac OS X Sierra

简短回答: 运行以下命令以恢复
brew

$ git -C /usr/local/Homebrew reset --hard origin/master
长答覆: 如前所述,您通过重定向到
brew
创建了一个空文件

$ >brew some command
相当于:

$ some command > brew
这意味着您运行
some命令
,并将其输出发送到名为
brew
的文件中。如果该命令失败而没有输出任何内容(除了错误),它会将其转换为空文件

在现有文件上避免这种行为的一种方法是使用
set-C

$ echo foo > myfile
$ echo bar > myfile
$ cat myfile
bar

$ set -C
$ echo foo > myfile
$ echo bar > myfile
bash: myfile: cannot overwrite existing file
$ cat myfile
foo
使用此设置,您必须在重定向目标文件中的输出之前删除目标文件,或者使用
|

$ echo bar > myfile
bas
$ echo bar >| myfile
$ cat myfile
bar
不过,这只是一种预防措施,所以一旦覆盖了文件,就太晚了

要检索原始的
brew
,请重置其git存储库(通常为
/usr/local/Homebrew
):


>brew
截断名为
brew
的文件。如果您所在的目录在您的路径中,那么您现在正在运行该空文件(这解释了为什么它们什么也不做)。如果您在安装brew的目录中执行了此操作,那么实际上您删除了它。就是这样,我必须重新安装整个程序。
$ git -C /usr/local/Homebrew reset --hard origin/master