2016-08-18 55 views
1

我碰到这个来的Git网站的区别:使用echo;之间有什么>和>>

mkdir log 
echo '*.log' > log/.gitignore 
git add log 
echo tmp >> .gitignore 
git add .gitignore 
git commit -m "ignored log files and tmp dir" 

所以回声的第一个实例,我们正在写字符串到日志文件目录文件的.gitignore。在第二种情况下,我们是否将tmp写入文件.gitignore(在当前目录中)。为什么我们需要使用>>与>?

+0

[之间>与差异>>在创建日志文件]的可能的复制(http://stackoverflow.com/questions/34649227/difference-between-and-while-creating-log-file) –

回答

2

当对文件回显某个内容时,>>附加到该文件并且>覆盖该文件。

➜ ~ echo foobar > test 
➜ ~ cat test 
foobar 
➜ ~ echo baz >> test 
➜ ~ cat test 
foobar 
baz 
➜ ~ echo foobar > test 
➜ ~ cat test 
foobar 

从您发布的示例中,创建一个日志目录,然后*.log使没有日志文件都致力于Git是投入log/.gitignore。由于使用了>,所以如果一个.gitignore文件已经存在,它将被覆盖,只有*.log

日志目录本身,然后添加到您的本地git的阶段。

在下一行添加>>,以便将tmp追加到.gitignore文件的末尾,而不是覆盖它。然后将其添加到暂存区域。

1

>是一个重定向操作。 < > >| << >> <& >& <<- <>都是shell命令解释器中的重定向操作符。

在你的例子,基本上>覆写和>>追加。

请参阅man sh(从您的终端,您可以通过man sh访问该手册)。

Redirections 
    Redirections are used to change where a command reads its input or sends its output. In 
    general, redirections open, close, or duplicate an existing reference to a file. The over‐ 
    all format used for redirection is: 

      [n] redir-op file 

    where redir-op is one of the redirection operators mentioned previously. Following is a 
    list of the possible redirections. The [n] is an optional number, as in '3' (not '[3]'), 
    that refers to a file descriptor. 

      [n]> file Redirect standard output (or n) to file. 

      [n]>| file Same, but override the -C option. 

      [n]>> file Append standard output (or n) to file. 

      [n]< file Redirect standard input (or n) from file. 

      [n1]<&n2 Duplicate standard input (or n1) from file descriptor n2. 

      [n]<&-  Close standard input (or n). 

      [n1]>&n2 Duplicate standard output (or n1) to n2. 

      [n]>&-  Close standard output (or n). 

      [n]<> file Open file for reading and writing on standard input (or n). 

    The following redirection is often called a "here-document". 

      [n]<< delimiter 
       here-doc-text ... 
      delimiter 

    All the text on successive lines up to the delimiter is saved away and made available to the 
    command on standard input, or file descriptor n if it is specified. If the delimiter as 
    specified on the initial line is quoted, then the here-doc-text is treated literally, other‐ 
    wise the text is subjected to parameter expansion, command substitution, and arithmetic 
    expansion (as described in the section on "Expansions"). If the operator is "<<-" instead 
    of "<<", then leading tabs in the here-doc-text are stripped. 
相关问题