Yanıtlar:
Standart Windows komut kabuğu - cmd.exe
- kullanmaz <<
operatöre hiç .¹
Tek bir <
vasıta "dosyayı okumak standart girdi için" cmd.exe
, ancak iki <
karakter arka arkaya etmek anlamsızdır cmd.exe
bu sahip hata veriyor, böylece.
<<
Operatör olduğu tüm önemli türleri için anlamlı Unix komut kabuğu bunun için kullanılır, burada-belgeler : ²
$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END
Bu üç hat some-command
standart girdisine gönderilir .
Bu, bir komutla, <
operatöre yapacağınız gibi, önce bir dosyaya yazmadan çok sayıda metin göndermek için kullanışlıdır . Ben sık sık bir komut dosyasına "kullanım" mesajı gömmek için kullanın:
#!/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
Yorumlu metin tam olarak ekrana yazdırıldığı gibi biçimlendirildiğinden, bu bir sürü ifade yazmaktan daha iyidir . Ek olarak, bu bağlamda beyaz boşluk, alıntı, yönlendirme ve değişken enterpolasyon ile uğraşmak daha kolaydır. Örneğin, kabuğun bunları G / Ç yönlendirmesi için kullanmaya çalışmasını önlemek için akıllıca bir şey yapmadan kullanım iletisinde köşeli parantez kullandığım dikkat edin.
Windows'ta böyle şeyler yapmak istiyorsanız, Cygwin'i yükleyebilir ve kabuklarından birini kullanabilirsiniz. Windows 10 kullanıyorsanız, bunun yerine WSL kullanabilirsiniz .
Dipnotlar:
Bu bağlantı, arşivlenmiş Windows XP belge ağacına gider. Microsoft, bu nedenle durumda tekrar kırmak, onlar bu dokümanlar arşivlenmiş zaman önce kullanıyordum linki kırdı burada bir yedek üçüncü taraf referanstır.
cmd.exe
Microsoft.com'da bildiğim diğer tek referans malzemesi , yerleşik ve Microsoft tarafından sağlanan harici komutların çoğu (!) İçin bir referans sağlamaktan çok daha fazlasını yapmayan Windows Komutları PDF'dir (4.9 MB, 948 sayfa). cmd
istemi verebilir . Bu PDF iki temelde tamamlanmamıştır. İlk olarak ve en önemlisi, yeniden yönlendirmenin cmd.exe
kabukta nasıl çalıştığına dair birleşik bir tartışma yoktur ; kabuk dilbilgisi tartışması bile yok. İkincisi, PDF'nin komut liste eksiktir: ben çek başına gelen ilk şey kapsamında değildir: diskpart
.
Tüm bunların, Microsoft'un uzun yıllardır devam eden PowerShellcmd.exe
ile değiştirmeye yönelik net girişimlerinden kaynaklandığına inanıyorum . Bu yazıdan itibaren en son Windows 10 güncellemesinde , henüz tamamen gitmemiş olsa da, varlığını gizlemek için başka adımlar attılar .cmd.exe
PowerShell'in bir <<
yönlendirme işlecini de desteklemediğini belirtmek gerekir . Ayrıca - hem Unix mermilerinden gelen üzücü bir gerilemede hem de cmd.exe
- <
yeniden yönlendirmeyi desteklemiyor !
Burada bir belgeyi başlatmanın standart yolu, yukarıda yazdığım <<
şekildedir , ve ile sınırlayıcı sözcük arasında boşluk yoktur . Bulanık hatırlamam, kabuk metinlerinde gördüğüm burada belgelerin tüm kullanımlarının da bu şekilde yapılması. Buradaki belgeler için POSIX belirtimi ayrıca örneklerinde bu stili kullanır.
Ancak, POSIX.1-2008 belirtiminin diğer bölümlerinin dikkatli bir şekilde okunması , <<
ve sınırlayıcı sözcüğü arasına bir dizi boşluk veya sekme karakteri koymanın yasal olduğunu ortaya koymaktadır . Özel olarak, bkz belirteç tanıma 7 ve 10 kurallar , tanımı io_here
içinde kabuk gramer ve tanımı , "boş" karakter sınıfı .
Yani sen bir kabuk belge nasıl. Not alın, Microsoft. ;)
Burada Bash 4'te test edilir ve ksh93
bunun beklendiği gibi çalıştığını doğrular.
Orada >
ve >>
ancak <
, hiçbir yoktur<<
command < filename Type a text file and pass the text to command
>
YENİ bir dosyaya yazar.
>>
bir dosyaya eklenir
<
bir dosyadan okur
|
başka bir komutun girdisine bir komut çıktısı gönderir
Liste için buraya bakın % ^ yazarak cmd.exe dosyasına bir Windows paskalya yumurtası mı geliyor?
Bu yayınlandığından beri bu eklendi.
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.