यह क्या करता है “… | ps `बिल्ली`” कमांड करते हैं?


10

मेरे इंटरनेट अनुसंधान पर, मुझे विंडो के प्रोसेस नाम को खोजने के लिए निम्न कमांड के रूप में समाधान मिला:

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

मुझे समझ में नहीं आ रहा है कि पहले के बाद यहां क्या होता है |

मान xprop _NET_WM_PIDलेते हैं कि आउटपुट 1000आईडी के रूप में है। आगे क्या होगा? क्यों हम एक की क्या ज़रूरत है catके बाद ps? मैं थोड़ा असमंजस में हूँ।

जवाबों:


15

xprop ... | sed ...पहले निष्पादित किया जाता है, फिर catउसका आउटपुट पढ़ता है। बैकटिक्स के उपयोग के कारण, बिल्ली का आउटपुट ps `cat`इस तरह से प्रतिस्थापित किया जाता है कि कमांड बन जाता है ps 1000

एक वैकल्पिक आदेश जो उसी परिणाम की ओर ले जाता है:

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

यह निम्नानुसार काम करता है:

  1. xprop _NET_WM_PIDएक विंडो की प्रक्रिया आईडी को पुनर्प्राप्त करने के लिए निष्पादित करें। एक विंडो क्लिक करने के बाद, यह कुछ इस तरह से आउटपुट करता है:

    _NET_WM_PID(CARDINAL) = 12345
    
  2. पर विभाजित करें =और दूसरा फ़ील्ड लें। मानक इनपुट से स्ट्रिंग cut -d= -f2लेता है _NET_WM_PID(CARDINAL) = 12345और 12345मानक आउटपुट को लिखता है।
  3. अंत में आउटपुट के लिए प्रतिस्थापित की गई psकमांड को रन करें , जो कमांड निष्पादित होती है । (साइड नोट: इसके बजाय भी इस्तेमाल किया जा सकता है , हालांकि कुछ अंतर हैं )$(...)...ps 12345`...`$(...)

4
दिलचस्प "कॉम्प्लेक्शन", यह | command 'cat'(मैं टिप्पणियों में बैकटिक में एम्बेड नहीं कर सकता?) ... सामान्य तरीका है: | xargs command(अतिरिक्त मापदंडों के साथ xargs, उदाहरण के लिए 1 या n तर्क तक सीमित करने के लिए, आदि)
ओलिवियर जुलाक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.