Bu ne yapar…… | ps `cat`" komutu mu yapıyorsunuz?


10

İnternet araştırmamda, pencerenin işlem adını bulmak için aşağıdaki komutu çözüm olarak buldum:

xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`

İlkinden sonra burada ne olduğunu anlamıyorum |.

xprop _NET_WM_PIDÇıktıların 1000süreç kimliği olarak olduğunu varsayalım . Sonra ne olur? Neden bir var catsonra ps? Biraz kafam karıştı.

Yanıtlar:


15

xprop ... | sed ...önce yürütülür, ardından catçıktısını okur. Geri iğne kullanımı nedeniyle, kedinin çıktısı ps `cat`, komut haline gelecek şekilde ikame edilir ps 1000.

Aynı sonuca götüren alternatif bir komut:

ps $(xprop _NET_WM_PID | cut -d= -f2)

Bu şu şekilde çalışır:

  1. xprop _NET_WM_PIDBir pencerenin işlem kimliğini almak için yürütün . Bir pencereye tıkladıktan sonra şöyle görünür:

    _NET_WM_PID(CARDINAL) = 12345
    
  2. Konumunda bölün =ve ikinci alanı alın. cut -d= -f2sürer _NET_WM_PID(CARDINAL) = 12345standart girdiden dizesi ve yazar 12345standart çıkışa.
  3. Son olarak çalıştırmak pskomutu $(...)çıkış için ikame edilmiş ...olduğu işletilirse komutu ps 12345. (yan not: bazı farklılıklar olsa da,`...` bunun yerine kullanılabilir )$(...)

4
İlginç "ten", bu | command 'cat'(yorumlarda backtick gömülü olamaz?) ... her zamanki gibi: | xargs command(xargs için ek parametrelerle, örneğin 1 veya n argüman, vb sınırlamak için)
Olivier Dulac
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.