เครื่องหมายเปอร์เซ็นต์ (%) หน้าคำสั่งเชลล์


9

ฉันเพิ่งวางโค้ดจำนวนมากลงในเชลล์ แต่ลืมลบส่วนนำออก%ก่อนรันคำสั่ง ดูเหมือนว่าจะไม่ได้ทำอะไรเลย ทำไมนี้ไม่ทำอะไรในเปลือกของฉัน ( zsh )?

> % echo foo

ในทุบตีฉันได้รับดังต่อไปนี้

> % echo foo
bash: fg: %: no such job

ฉันแค่ต้องการให้แน่ใจว่าการใช้คำสั่งของฉันไม่มีผลข้างเคียง

คำตอบ:


9

%อ้างถึง 'jobid' ซึ่งใช้เป็นส่วนหนึ่งของคุณสมบัติ "การควบคุมงานและการควบคุมกระบวนการ" ของ zsh อ้างจากคู่มือผู้ใช้:

'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.

ตัวอย่าง:

$> man zshall &
[1]  + 31392 suspended (tty output)  man zshall
$> jobs
[1]  + suspended (tty output)  man zshall
$> %
<manpage-opens-for-zshall>

อ่านเพิ่มเติมได้ที่นี่: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

หากต้องการตอบคำถามจริงของคุณ: หาก zsh ของคุณไม่ได้แจ้งเตือนที่นั่น ("fg: ไม่มีงานปัจจุบัน" หรือสิ่งที่คล้ายกัน) แสดงว่ามีงาน / เป็นงาน ตัวอย่าง:

$> sleep 60 &
$> % echo foo
[1]  + 411 running    sleep 60
fg: job not found: echo

%เพิ่งกลับกระบวนการพื้นหลังและวิ่งมัน หลังจาก 60 วินาทีมันจะได้รับ 'jobid' ครั้งต่อไปซึ่งไม่พบ

ดังนั้น: พฤติกรรมที่คุณพบนั้นค่อนข้างแปลก หากคุณไม่ได้ zshrc แบบเต็มคุณก็ยากที่จะบอกได้ว่าเกิดอะไรขึ้น ดูเหมือนว่าคุณจัดการเพื่อบอก zsh ของคุณว่าถ่าน '%' กำลังเริ่มแสดงความคิดเห็น ฉันจะตรวจสอบ histcharsพารามิเตอร์ว่าเป็นค่าที่ 3:

$> echo $histchars

ยอดเยี่ยมขอบคุณ %ฉันก็สามารถที่จะทำซ้ำการทดสอบของคุณและเบื้องหน้างานที่ทำงานด้วย จับได้ดี$histcharsเช่นกัน แต่ของฉันเป็นสัญญาณแฮช ( !^#) ฉันคาดเดาคำตอบสำหรับกรณีเฉพาะของฉันแล้วก็คือว่ามีกระบวนการพื้นหลังบางอย่างมีพฤติกรรมแปลกใน zsh ขอบคุณอีกครั้งสำหรับบทเรียนเชลล์!
เดฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.