Komutu girdi ile beslemenin toplam kaç yolu vardır?


9

Linux hakkında fark ettiğim ilk şey, veriyi bir komuta beslemenin farklı yoluydu, birkaçını biliyorum ama toplamda kaç tane olduğunu bilmiyorum.

şimdiye kadar bildiğim yollar:

boru:

echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort

Dosya sonu sinyali ile klavyeden:

sort
>gurken
>zucker
>braunkohle

dosyadan:

sort foo

HERE dizesi (aslında HERE belgesi olarak adlandırılır):

sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE

Hepsi bu mu yoksa bunu yapmanın daha fazla yolu var mı, neden farklı yollar var, bazı yollar gereksiz mi?

Yanıtlar:


9

En azından aşağıdakiler:

  1. Komut seçenekleri: foo --bar

  2. Standart giriş: foo | barveyabar < foo

  3. Dosya (lar): foo *.*(veya kod girişi ile dosya (lar) açılarak foo) †

  4. Çevre ihracatı: export foo=bar; baz

  5. Çevre (ihracatsız): foo=bar bazveyaenv foo=bar baz

  6. HERE doc: foo << EOF bar EOF

  7. HERE dizesi: foo <<< bar

  8. Sinyaller kill -SIGUSR1 $procid

  9. Yuva, TCP, bellek eşlemeli dosyalar gibi çok çeşitli işlemler arası iletişim

† evet, stdin'in bir dosya (veya dosya benzeri) olduğunu anlıyorum. Ve bunun gibi dosyalara geçmek, seçeneklere geçmekle gerçekten aynı


1
foo < barEk bir değişken olarak ekleyebilirsiniz (stdin üzerinden dosya)
Hagen von Eitzen

14

Başlangıç ​​olarak, sort << HEREvb. Burada bir dize değildir. Bu bir belge. Here-string, <<<operatörü kullanır . Bu bash (ve diğer bazı kabuklarda).

Genel olarak iki yol vardır. Biri standart girdi (ve yönlendirmeler), diğeri ise parametreler yoluyla.

  1. Standart girdi ve yönlendirmeleri

    Bu, varsayılan olarak, bir komutun yürütüldüğü ve fd (dosya tanıtıcı) 1 ile ilişkili olduğu terminale bağlı akıştır. Rağmen (giriş) boru |kullanarak veya burada-belgeleri veya burada-dizeleri kullanılarak yeniden yönlendirilebilir . Daha sonra giriş terminalden gelmez, ancak borudan önceki komutun standart çıkışına eklenir. Farklı mermilerin farklı yönlendirmeleri vardır, bu nedenle bu kategori için mermi belgelerini kontrol etmelisiniz. Giriş yeniden yönlendirmelerini arayın .

  2. Parametreler

    Örneğinizde olan budur sort foo. Bir programı veya işlevi çağırdığınızda bir veya daha fazla parametre iletirsiniz. Yerel bir dosya sadece bir olasılıktır. Parametre bir URL veya başka bir şey içerebilir. Buradaki seçenekler sınırsız.

Özetle, iki genel yol vardır:

  • birincisi uygulamanın iç mantığından soyutlanır ve OS / kabuk düzeyinde standart girişi manipüle eder,

  • ikincisi, uygulamanın iç kısımlarını içerir ve ara yüz parametrelerini bir arabirim olarak temel alarak sınırsız olasılıklar sunar.

Her iki yönde de cevap sınırsızdır. Gerçi gerçek sınırlar OS / kabuk ve uygulamanın kendisiyle birlikte gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.