私は>>
の用途を知っています。すべてのメッセージを画面ではなくファイルに書き込みます。そして、私は<<
を逆にすると思います、私はそれを試してメッセージを受け取ります:<< was unexpected at this time.
<<
の用途と使用方法を教えてください。
標準のWindowsコマンドシェル— _cmd.exe
_ — _<<
_演算子を使用しません まったく 。¹
単一の_<
_は、「ファイルを読み込む 標準入力 "を_cmd.exe
_に変換することを意味しますが、2つの_<
_文字を連続して使用しても、_cmd.exe
_には意味がありません。 、それはあなたが得たエラーを与えます。
_<<
_演算子 is は、主要なすべてのタイプの nixコマンドシェル で意味があり、 here-documents に使用されます=:²
_$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END
_
これらの3行は、標準入力で_some-command
_に送信されます。
これは、_<
_演算子を使用する必要があるため、最初にファイルに書き込むことなく、大量のテキストをコマンドに送信する場合に役立ちます。私は頻繁にそれをスクリプトに「使用法」メッセージを埋め込むために使用します:
_#!/bin/sh
if [ -z "$1" ]
then
cat <<USAGE
usage: myscript <files...>
Grobbles the foobie for all files given on the command line.
USAGE
exit 1
fi
# ... do something with command line arguments
_
ヒアドキュメントのテキストは画面に出力されるのとまったく同じようにフォーマットされているため、echo
ステートメントをたくさん書くよりも優れています。さらに、このコンテキストでは、空白、引用符、リダイレクト、変数補間を処理する方が簡単です。たとえば、シェルがI/Oリダイレクトに使用しようとするのを防ぐために巧妙な処理を行う必要なく、使用方法のメッセージで山かっこを使用したことに注意してください。
Windowsでこのようなことをしたい場合は、 Cygwin をインストールして、そのシェルの1つを使用できます。 Windows 10を使用している場合は、代わりに [〜#〜] wsl [〜#〜] を使用できます。
脚注:
そのリンクは、アーカイブされたWindowsに移動しますXPドキュメントツリー。Microsoftがこれらのドキュメントをアーカイブしたときに以前使用していたリンクを解除したため、再度リンクが壊れた場合に備えて here バックアップサードパーティのリファレンスです。
Microsoft.comで知っている唯一の_cmd.exe
_参照資料は WindowsコマンドPDF (4.9 MB、948ページ)であり、ほとんどの参照(! )cmd
プロンプトで指定できる組み込みおよびMicrosoft提供の外部コマンドこれはPDFは2つのベースで不完全です。最初に、ここで最も重要なのは、_cmd.exe
_シェルでリダイレクトがどのように機能するかについての組み合わせの議論はありません。シェルの文法次に、PDFのコマンドリストは不完全です。たまたま最初に確認したことはカバーされていません: diskpart
。
これはすべて、Microsoftが_cmd.exe
_を PowerShell で置き換えようという明確な試みから来ていると信じています。この記事の執筆時点での最新のWindows 10の更新プログラムには _cmd.exe
_ の存在を隠すための追加の手順が含まれていますが、まだ完全に削除されていません。
PowerShellは_<<
_リダイレクト演算子もサポートしていません 。また、UNIXシェルと_cmd.exe
_の両方からの悲しい回帰では、_<
_リダイレクトをサポートしていますか?
Here-documentを開始する標準的な方法は、上で書いたとおりで、_<<
_と区切り文字Wordの間にスペースはありません。私のあいまいな思い出は、私がシェルスクリプトで見たヒアドキュメントのすべての使用もこの方法で行われていることです。 here-documentsのPOSIX仕様 の例でもこのスタイルを使用しています。
ただし、 POSIX.1-2008仕様 の他の部分を注意深く読むと、_<<
_と区切り文字Wordの間にいくつかのスペースまたはタブ文字を置くことが合法であることがわかります。特に、 トークン認識ルール7および1 、 シェルグラマー の_io_here
_の定義、および the "blank"の定義を参照してください。文字クラス 。
That はシェルをドキュメント化する方法です。マイクロソフト、メモを取ってください。 ;)
ここでBash 4と_ksh93
_をテストすると、これが期待どおりに機能することが確認されます。
有る >
および>>
だけ <
、ありません<<
command < filename Type a text file and pass the text to command
>
新しいファイルに書き込みます。
>>
ファイルに追加します
<
ファイルから読み取ります
|
コマンド出力を別のコマンドの入力に送信します
リストについては、こちらをご覧ください %^をcmd.exeにWindowsイースターエッグに入力していますか?
それが投稿されたので、これは追加されました。
Starting a Program
===============
See start /? and call /? for help on all three ways.
Specify a program name
--------------------------------
c:\windows\notepad.exe
In a batch file the batch will wait for the program to exit. When
typed the command Prompt does not wait for graphical
programs to exit.
If the program is a batch file control is transferred and the rest of the calling batch file is not executed.
Use Start command
--------------------------
start "" c:\windows\notepad.exe
Start starts a program and does not wait. Console programs start in a new window. Using the /b switch forces console programs into the same window, which negates the main purpose of Start.
Start uses the Windows graphical Shell - same as typing in WinKey + R (Run dialog). Try
start Shell:cache
Use Call command
-------------------------
Call is used to start batch files and wait for them to exit and continue the current batch file.