यह क्या करता है “… | 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.