คำตอบของฉันคือรูปแบบของคำตอบทั่วไปสำหรับการค้นหา "foobar" ในpsรายชื่อ เหตุผลของการ"-A" "ps"พกพานั้นดีกว่า"aux"ฉันเชื่อ แต่การเปลี่ยนแปลงนี้ไม่เกี่ยวข้องกับคำตอบ คำตอบทั่วไปมีลักษณะดังนี้:
$ ps -A -ww | grep [f]oobar
ฉันใช้รูปแบบนี้แทน:
$ ps -A -ww | grep [^]]foobar
ข้อได้เปรียบหลักคือมันง่ายกว่าในการเขียนสคริปต์ตามรูปแบบนี้เพราะคุณเพียงแค่เชื่อมสตริงคงที่[^]]กับรูปแบบใดก็ตามที่คุณกำลังมองหา คุณไม่จำเป็นต้องถอดอักษรตัวแรกของสตริงออกจากนั้นใส่ระหว่างเครื่องหมายวงเล็บเหลี่ยมแล้วต่อกลับเข้าด้วยกันอีกครั้ง เมื่อสคริปต์ในเชลล์มันง่ายกว่าที่จะ[^]]ต่อหน้ารูปแบบที่คุณมองหาเพื่อหา การหั่นสตริงใน Bash เป็นสิ่งที่น่าเกลียดดังนั้นความแปรปรวนของฉันจึงหลีกเลี่ยง ชุดรูปแบบนี้บอกว่าแสดงบรรทัดที่รูปแบบตรงกันโดยไม่มีวงเล็บปีกกาขวานำ] เนื่องจากรูปแบบการค้นหาเพื่อแยกวงเล็บเหลี่ยมเพิ่มจริงวงเล็บเหลี่ยมสี่เหลี่ยมให้กับรูปแบบแล้วมันจะไม่ตรงกับตัวเอง
ดังนั้นคุณสามารถเขียนpsgrepคำสั่งแบบพกพาได้ดังนี้ ที่นี่ฉันให้ค่าเผื่อความแตกต่างระหว่าง Linux, OS X BSD และอื่น ๆ สิ่งนี้จะเพิ่มส่วนหัวของคอลัมน์จากpsให้ข้อมูลเพิ่มเติมที่กำหนดเองpsรูปแบบที่เหมาะสมกับความต้องการของฉันนักพนันและแสดงกระบวนการที่แสดงรายการกว้างพิเศษเพื่อไม่ให้มีการขัดแย้งในบรรทัดคำสั่ง ส่วนใหญ่ไม่ควรพลาด Java เป็น Java มันมักจะทำสิ่งต่าง ๆ ในวิธีที่แย่ที่สุดดังนั้นคุณจะต้องให้บริการ java บางอย่างผ่านความยาวสูงสุดของอาร์กิวเมนต์ที่ตารางกระบวนการจะติดตาม ฉันเชื่อว่านี่คือ 1024 ตัวอักษร ความยาวคำสั่ง - โลนที่ได้รับอนุญาตให้เริ่มกระบวนการมีความยาวมากขึ้น แต่ตารางกระบวนการเคอร์เนลไม่สนใจที่จะติดตามสิ่งใดที่มีความยาวเกิน 1K เมื่อคำสั่งเริ่มต้นแล้วคำสั่งชื่อและรายการอาร์กิวเมนต์ไม่จำเป็นต้องใช้ดังนั้นสิ่งที่ได้รับการจัดเก็บในตารางกระบวนการเป็นเพียงการให้ข้อมูล
psgrep ()
{
    pattern=[^]]${1};
    case "$(uname -s)" in
        Darwin)
            ps -A -ww -o pid,ppid,nice,pri,pcpu,pmem,etime,user,wchan,stat,command | grep -i -e "^[[:space:]]*PID" -e ${pattern}
        ;;
        Linux)
            ps -A -ww -o pid,ppid,tid,nice,pri,pcpu,pmem,etime,user,wchan:20,stat,command | grep -i -e "^[[:space:]]*PID" -e ${pattern}
        ;;
        *)  # other UNIX flavors get a minimalist version.
            ps -A -ww | grep -i -e ${pattern}
        ;;
    esac
}
               
              
grep --colourและสามารถเป็นบิตทำให้เข้าใจผิดเมื่อใช้กับ