Shell perintah Windows standar - cmd.exe
- tidak menggunakan <<
operator sama sekali .¹
Satu <
berarti "membaca file menjadi input standar " cmd.exe
, tetapi dua <
karakter back-to-back tidak ada artinya cmd.exe
, sehingga memberikan kesalahan yang Anda dapatkan.
The <<
Operator adalah bermakna untuk semua jenis utama dari Unix perintah shell , di mana ia digunakan untuk di sini-dokumen : ²
$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END
Tiga baris itu dikirim ke some-command
input standarnya.
Ini berguna untuk mengirim banyak teks ke dalam perintah tanpa menulisnya ke file terlebih dahulu, seperti yang Anda harus lakukan dengan <
operator. Saya sering menggunakannya untuk menyematkan pesan "penggunaan" ke dalam skrip:
#!/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
Ini lebih baik daripada menulis banyak echo
pernyataan karena teks heredoc diformat persis seperti yang dicetak ke layar. Selain itu, lebih mudah untuk berurusan dengan spasi, mengutip, redirection, dan interpolasi variabel dalam konteks ini. Perhatikan, misalnya, bahwa saya telah menggunakan kurung sudut dalam pesan penggunaan tanpa harus melakukan apa pun yang pintar untuk mencegah shell mencoba menggunakannya untuk pengalihan I / O.
Jika Anda ingin melakukan hal-hal seperti ini di Windows, Anda dapat menginstal Cygwin dan menggunakan salah satu cangkangnya. Jika Anda menggunakan Windows 10, Anda bisa menggunakan WSL sebagai gantinya.
Catatan kaki:
Tautan itu masuk ke pohon dokumentasi Windows XP yang diarsipkan. Microsoft mematahkan tautan yang sebelumnya saya gunakan ketika mereka mengarsipkan dokumen ini, jadi jika mereka memutuskannya lagi, berikut adalah referensi pihak ketiga cadangan.
Satu-satunya cmd.exe
bahan referensi lain yang saya ketahui di microsoft.com adalah Windows Commands PDF (4,9 MB, 948 halaman) yang tidak lebih dari memberikan referensi untuk sebagian besar (!) Perintah internal bawaan dan yang disediakan Microsoft Anda bisa memberi saat cmd
diminta. PDF ini tidak lengkap pada dua basis. Pertama, dan yang paling relevan di sini, tidak ada diskusi gabungan tentang bagaimana pengalihan bekerja di cmd.exe
shell; bahkan tidak ada diskusi tentang tata bahasa shell. Kedua, daftar perintah PDF tidak lengkap: hal pertama yang saya kebetulan cek tidak tercakup: diskpart
.
Saya percaya semua ini mengikuti upaya jelas Microsoft untuk mengganti cmd.exe
dengan PowerShell , yang telah berlangsung selama bertahun-tahun sekarang. Dalam pembaruan Windows 10 terbaru pada tulisan ini, mereka telah mengambil langkah lebih lanjut untuk menyembunyikan keberadaancmd.exe
, meskipun belum sepenuhnya hilang.
Perlu dicatat bahwa PowerShell juga tidak mendukung <<
operator pengalihan . Maupun - dalam regresi menyedihkan dari kedua shell Unix dan cmd.exe
- apakah itu mendukung <
pengalihan!
Cara kanonik untuk memulai dokumen di sini adalah seperti yang saya tulis di atas, tanpa ruang antara <<
dan kata pembatas. Ingatan kabur saya adalah bahwa semua penggunaan dokumen-dokumen yang saya lihat di skrip shell juga dilakukan dengan cara ini. Spesifikasi POSIX untuk dokumen di sini juga menggunakan gaya ini dalam contohnya.
Namun, pembacaan yang cermat atas bagian lain dari spesifikasi POSIX.1-2008 mengungkapkan bahwa adalah sah untuk menempatkan sejumlah spasi atau karakter tab antara kata <<
dan pembatas. Khususnya, lihat aturan pengakuan token 7 dan 10 , definisi io_here
dalam tata bahasa shell , dan definisi kelas karakter "kosong" .
Begitulah cara Anda mendokumentasikan shell. Catat, Microsoft. ;)
Menguji di sini di Bash 4 dan ksh93
mengkonfirmasi bahwa ini berfungsi seperti yang diharapkan.
Ada
>
dan>>
hanya<
ada, tidak ada<<
Sumber: http://ss64.com/nt/syntax-redirection.html
sumber
>
menulis ke file BARU.>>
ditambahkan ke file<
membaca dari file|
mengirimkan output perintah ke input perintah lainLihat di sini untuk daftar. Apakah mengetik% ^ ke dalam cmd.exe adalah telur paskah Windows?
Sejak itu diposting ini telah ditambahkan.
sumber