«process-substitution» etiketlenmiş sorular

İşlem ikamesi, bir komutun girişinin veya çıkışının bir dosya olarak görünmesini sağlayan bir süreçler arası iletişim biçimidir (örneğin: `` (cmd) `veya`> (cmd) `)).

5
Proses ikamesi ve boru
Aşağıdakileri nasıl anlayacağımı merak ediyordum: Bir komutun stdout'unu diğerinin stdinine sokmak güçlü bir tekniktir. Ancak, çoklu komutların stdout'unu aktarmanız gerekirse? Proses ikamesi burada devreye giriyor. Başka bir deyişle, işlem ikame işlemi borunun yapabileceği her şeyi yapabilir mi? İşlem ikamesi ne yapabilir, fakat boru olamaz?

2
Neden işlem değişikliği / pip / dev / fd / 63 adlı bir dosyayla sonuçlanır?
Bu belirli örnek bağlamında adlandırılmış yöneltmeler anlamaya çalışıyorum. Yazarken <(ls -l), benim terminalde gibi çıktı almak bash: /dev/fd/63: Permission denied. Eğer cat <(ls -l)yazarsam, dizin içeriğini görebilirdim. Ben değiştirirseniz catile echo, ben terminali adını almak düşünüyorum (ya öyle?). echo <(ls -l)çıktıyı olarak verir /dev/fd/63. Ayrıca, bu örnek çıktı bana açık …


1
BASH işlemindeki ikame neden bazı komutlarla çalışmıyor?
Bazı durumlarda işlem değişikliği beklendiği gibi çalışmayacaktır. İşte bir örnek: Giriş: gcc <(echo 'int main(){return 0;}') Çıktı: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status Giriş: Ancak farklı bir komutla kullanıldığında beklendiği gibi çalışır: grep main <(echo 'int main(){return 0;}') Çıktı: int main(){return 0;} Diğer …

2
Proses ikamesi elde etmenin portatif (POSIX) yolu nedir?
Bazı kabuklar, işlem çıktısını bir dosya gibi sunmanın bir yolu olan İşlem Değiştirme'yibash destekler : $ diff <(sort file1) <(sort file2) Bununla birlikte, bu yapı POSIX değildir ve bu nedenle taşınabilir değildir. Proses ikamesi POSIX dostu bir şekilde nasıl yapılır (yani hangisinde çalışır /bin/sh) ? not: soru iki sıralı dosyanın …

4
bash: süreç ikamesinde hatalar nasıl yayılır?
Onlarla yürütülen bir komut başarısız olduğunda kabuk komut dosyalarımın başarısız olmasını istiyorum. Genellikle ben ile yapmak: set -e set -o pipefail (genellikle ekliyorum set -u) Mesele, yukarıdakilerin hiçbirinin süreç ikamesi ile çalışmadığıdır. Bu kod "Tamam" yazdırır ve başarısız olmasını istiyorum iken, dönüş kodu = 0 ile çıkmak: #!/bin/bash -e set …

1
In zsh, cat <(cat) vs cat arasındaki fark | kedi vs kedi = (kedi)?
Beklediğim cat &lt;(cat)ve cat | cataynı şeyi yapmak: stdin stdout satırları kopyalayın. Anladığım kadarıyla, her ikisi de catbir alt kabukta a yürütecek , alt kabuğun stdout'unu catgeçici bir adlandırılmış boruya yönlendirecek ve daha sonra catmevcut kabukta başka bir parçayı boruya yönlendirilmiş olacaktı. Bunun yerine, cat &lt;(cat)terminalime yazmama izin verin, ancak …

4
Dash'te Süreç Değişimi nasıl taklit edilir?
İçinde bash, süreç değiştirme kullanın ve bir diske kaydedilmiş bir dosya gibi bir işlem çıktısını tedavi: $ echo &lt;(ls) /dev/fd/63 $ ls -lAhF &lt;(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -&gt; pipe:[1652825] maalesef, Süreç Yedeği desteklenmiyor dash. Kısa sürede taklit etmenin en iyi yolu ne olurdu Process …

2
İşlem ikame çıktısı bozuk
echo one; echo two &gt; &gt;(cat); echo three; komutu beklenmedik çıktılar veriyor. Bunu okudum: İşlem ikamesi bash'da nasıl uygulanır? ve internette süreç ikamesi ile ilgili diğer birçok makale, ancak neden bu şekilde davrandığını anlamıyorum. Beklenen çıktı: one two three Gerçek çıktı: prompt$ echo one; echo two &gt; &gt;(cat); echo three; …

5
listeden grep dosyaları
Birkaç yüz dosya listesini karşı grep çalıştırmak çalışıyorum: $ head -n 3 &lt;(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Ancak, dosyalarda bulunduğunu bildiğim bir dize için selamlıyorum bile, aşağıdaki dosyaları aramaz: $ grep -i 'foo' &lt;(cat files.txt) $ grep -i 'foo' admin.php The foo was found Bir dosyadaki kalıpları-f okuyan bayrağa aşinayım …


2
Bash: proses ikamesi ve stdin
Aşağıdaki satır açıktır: echo "bla" | foo | bar Ama aşağıdaki olanlar da aynı şeyi yapıyor mu? echo "bla" | bar &lt;(foo) echo "bla" | bar &lt; &lt;(foo) Hangi stdin gelen foove barokunan "bla" ve neden? Yani, elbette, sadece kodlayabilir ve kontrol edebilirim, ancak tanımlanmış davranış olup olmadığından emin değilim …

4
İşlem değiştirmeyi kullanırken çıkış kodu / tanıtıcı hatalarını nasıl doğru şekilde yakalayabilirim?
SO üzerinde Q &amp; A alınan aşağıdaki yöntemi kullanarak dosya adlarını bir diziye ayrıştırır bir komut dosyası var : unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done &lt; &lt;(find "$@" -type f -name '*.txt' -print0) Bu harika çalışır ve her türlü dosya adı varyasyonunu mükemmel …

3
Grep'e yönlendirmek için tee'yi nasıl kullanırım
Tee kullanma konusunda fazla deneyimim yok, bu yüzden umarım bu çok basit değildir. Bu sorunun cevaplarından birini görüntüledikten sonra garip bir beheviour ile karşılaştım tee. İlk satırı ve bulunan bir satırı çıkarmam için bunu kullanabilirim: ps aux | tee &gt;(head -n1) | grep syslog USER PID %CPU %MEM VSZ RSS …


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.