2017-03-19 7 views
1

回答に質問ありましたhereを読んでいます。私は最初とセミコロンで空きスペースが必要とされているのはなぜかっこでLinuxコマンドを入力する方法は?

{ time somecommand ; } &> file.txt 

timeコマンドの出力をリダイレクトしたい場合は?私はちょうど

(time somecommand) &> file.txt 
+0

:複合コマンド内のスペースについては

(list) list is executed in a subshell environment (see COMMAND EXECUTION ENVIRONMENT below). Variable assignments and builtin commands that affect the shell's environment do not remain in effect after the command completes. The return status is the exit status of list. 

、それはbashの文法で必要とされるのですか?あなたは質問に尋ねるのに十分な好奇心を持っていますが、それに答えるつもりはありませんか? – jonrsharpe

+0

この有益なコメントをありがとう...もちろん、私はそれを試しました。しかし、もし私がその空間を無視するなら、それはうまくいかず、それについてもっと学びたいと思っています。私はこれがなぜであるのか理解したいと思います。また、さまざまな可能性の違いを知りたいと思います。そして、私は2つのコマンドの違いに気づくことができなかったので、ただ1つではないことを意味するわけではありません。 – Pepe

+0

だから*そのことを言いなさい。あなたの働きを見せてください。あなたは何を試しましたか、あなたは何を読みましたか...? – jonrsharpe

答えて

2

を使用し、私は(時間somecommand)&> file.txtをを使用した場合に差がある場合と違いはありますか?

違いはサブシェルで実行される(...)のコマンドですが、それは別のプロセスです。一方、{...}のコマンドはと同じシェルで実行されます。 bash manualから:あなたはそれを試してみて、見つけるていないのはなぜ

{ list; } 
      list is simply executed in the current shell environment. 
      list must be terminated with a newline or semicolon. This is 
      known as a group command. The return status is the exit 
      status of list. Note that unlike the metacharacters (and), 
      { and } are reserved words and must occur where a reserved 
      word is permitted to be recognized. Since they do not cause a 
      word break, they must be separated from list by whitespace or 
      another shell metacharacter. 
+0

ありがとう、非常に役立つ! – Pepe

関連する問題