Hal pertama yang saya perhatikan tentang Linux adalah berbagai cara memasukkan data ke dalam sebuah perintah, saya tahu beberapa tetapi saya tidak tahu ada berapa banyak di sana.
cara yang saya tahu sejauh ini:
perpipaan:
echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort
dari keyboard dengan sinyal file End:
sort
>gurken
>zucker
>braunkohle
dari file:
sort foo
HERE string (sebenarnya disebut dokumen HERE):
sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE
Apakah ini semua atau ada lebih banyak cara untuk melakukannya, mengapa ada cara yang berbeda sama sekali, ada beberapa cara yang berlebihan?
sumber
foo < bar
sebagai varian tambahan (file via stdin)Untuk memulainya,
sort << HERE
dan seterusnya bukan string di sini. Itu dokumen di sini. String di sini menggunakan<<<
operator. Itu dalam bash (dan beberapa kerang lainnya).Secara umum, ada dua cara. Satu melalui input standar (dan pengalihan), dan yang lainnya adalah melalui parameter.
Input standar dan pengalihannya
Ini adalah aliran yang secara default terhubung ke terminal, di mana perintah dijalankan dan dikaitkan dengan fd (file descriptor) 1. Diumpankan apa pun yang diketikkan ke terminal. Padahal itu (input) bisa dialihkan seperti menggunakan pipa
|
atau menggunakan sini-dokumen atau di sini-string. Maka input tidak datang dari terminal, tetapi melekat pada output standar dari perintah sebelum pipa. Kerang yang berbeda memiliki pengalihan yang berbeda, jadi untuk kategori ini Anda harus memeriksa dokumentasi shell. Cari pengalihan input.Parameter
Inilah yang ada dalam contoh Anda
sort foo
. Memanggil program atau fungsi, Anda melewatkannya satu atau lebih parameter. File lokal hanya satu kemungkinan. Parameter mungkin berisi URL atau apa pun. Opsi di sini tidak terbatas.Singkatnya, ada dua cara umum:
yang pertama abstrak dari logika bagian dalam aplikasi dan memanipulasi input standar pada tingkat OS / shell,
sementara yang kedua melibatkan jeroan aplikasi, dan itu adalah mereka yang menawarkan kemungkinan tak terbatas, berdasarkan parameter panggilan sebagai antarmuka.
Untuk kedua cara jawabannya adalah tidak ada batasan. Padahal batas sebenarnya datang dengan OS / shell dan aplikasi itu sendiri.
sumber