เปลี่ยนเส้นทางของการออกคำสั่งที่ดูเหมือนว่าจะไม่เกี่ยวข้องเพราะการแจ้งเตือนจะถูกส่งโดยเปลือกเมื่องานจะเริ่มถ่ายทอดสด แม่นยำมากขึ้นก็เป็นคุณลักษณะที่มีเปลือก (fonctionality) ที่เกี่ยวข้องกับการควบคุมงาน
ที่นี่คำพูดที่มาจาก "คู่มืออ้างอิง Bash" บทที่ "การควบคุมงาน" ส่วนที่หนึ่ง
เชลล์เชื่อมโยง JOB กับแต่ละไพพ์ไลน์ มันเก็บตารางของการดำเนินงานในปัจจุบันซึ่งอาจแสดงรายการด้วยjobs
คำสั่ง เมื่อ Bash เริ่มงานแบบอะซิงโครนัสมันจะพิมพ์บรรทัดที่มีลักษณะดังนี้:
[1] 25647
ระบุว่างานนี้เป็นงานหมายเลข 1 และ ID กระบวนการของกระบวนการสุดท้ายในไปป์ไลน์ที่เชื่อมโยงกับงานนี้คือ 25647 กระบวนการทั้งหมดในขั้นตอนเดียวเป็นสมาชิกของงานเดียวกัน Bash ใช้นามธรรม JOB เป็นพื้นฐานสำหรับการควบคุมงาน
โปรดทราบว่าเชลล์สคริปต์ไม่แสดงการแจ้งเตือนนี้
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
ในข้อเท็จจริง
zsh
เอกสาร Zsh ให้ข้อบ่งชี้ที่คล้ายคลึงกันเกี่ยวกับการแจ้งเตือนเหล่านี้ดูman 1 zshmisc
หัวข้อ "งาน" การแจ้งเตือนเหล่านี้จะไม่ปรากฏเมื่อปิดการควบคุมงาน
หน้าจอ ( -m , ksh: -m )
อนุญาตการควบคุมงาน ตั้งค่าเริ่มต้นในเปลือกโต้ตอบ
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
ทุบตี
[1] 25647
มันดูเหมือนว่าทุบตีเสมอแสดงเช่น "การแจ้งเตือนครั้งสุดท้าย" เช่น[1]+ Done true
ไม่ปรากฏขึ้นเมื่อปิดการควบคุมงาน
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
ปิดใช้งานการควบคุมงาน
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
ข้อสรุป
ฉันไม่ทราบว่าปิดการใช้งานการควบคุมงานเพื่อซ่อนการแจ้งเตือนเป็นสิ่งที่ดี?
ทรัพยากร