ฉันจะรันคำสั่ง Linux ในขณะที่ใช้คำสั่งน้อยลงหรือภายในหน้าคู่มือได้อย่างไร


9

โดยทั่วไปแล้วฉันจะไพพ์คำสั่งlsด้วยlessและต้องการที่จะรันคำสั่งในขณะที่มันเป็นเพจจิ้งเช่นฉันเจอไฟล์ที่ฉันต้องการลบดังนั้นฉันต้องการที่จะรันคำสั่งrm {filename}ในขณะที่ยังเพจจิ้ง ฉันอยากจะหวังว่าฉันสามารถใช้วิธีการเดียวกันในขณะที่อ่านหน้าคน ถ้าไม่แตกต่างกันอย่างไร

คำตอบ:


8

คุณสามารถเข้าถึงบรรทัดคำสั่งโดยใช้ bang ( !) น้อยกว่า

ตัวอย่างเช่นหากคุณพิมพ์:

touch temp.txt
ls | less
!rm temp.txt

และ temp.txt ควรจะหายไป

แก้ไข:โดยค่าเริ่มต้นดูเหมือนว่าตอนนี้มนุษย์ใช้หน้าน้อยลง (ด้วยเหตุผลบางอย่างที่ฉันคิดว่าใช้moreไปแล้ว คุณสามารถใช้เคล็ดลับเดียวกัน แต่ต้องใช้เส้นทางแบบเต็ม (เช่น. / home / user / ... ) เพื่อให้มันทำงาน

นี่เป็นเพราะมนุษย์ที่เรียกใช้เปลี่ยนไดเรกทอรีทำงานปัจจุบัน ในเครื่องของฉัน (Xubuntu ใช้xfce-terminal) /usr/share/manมันจะไป หากคอนโซลของคุณแสดง CWD คุณสามารถเห็นมันเปลี่ยนแปลงหรือคุณสามารถเห็นมันได้จากภายในmanโดยป้อน:

!pwd

ผู้ชายเปลี่ยน CWD จริง ๆ แล้วคุณจะต้องใช้เส้นทางแบบเต็ม
Rob

@Rob - คุณหมายความว่าman actually changes CWDอย่างไร
PeanutsMonkey

ฉันได้ตั้งค่า tmux เพื่อแสดง CWD ของฉันในแถบสถานะของฉัน การทำman man(หรืออะไรก็ตาม) จะเปลี่ยน CWD ของฉันในขณะที่มนุษย์เปิดอยู่ เครื่อง linux ของฉันไม่สามารถใช้งานได้ในขณะนี้และฉันไม่แน่ใจว่าจะตรวจสอบ CWD วิธีอื่น แต่สำหรับฉันดูเหมือนว่านั่นคือสิ่งที่มันทำ
Rob

@Rob - ดังนั้นคุณต้องบอกว่าเพียงเพราะคุณใช้ tmux มันจะเปลี่ยนไดเรกทอรีการทำงานปัจจุบันเมื่อคุณเรียกใช้คำสั่งman {command}จากพูด/home/{user}เป็นตำแหน่งของคำสั่งmanหรือไม่
PeanutsMonkey

นั่นจะอธิบายพฤติกรรมที่ฉันเห็น ตอนนี้ทำไมมันเปลี่ยน CWD ว่าเป็นคำถามอื่น ...
แอช

4

วิธีทั่วไปในการทำเช่นนี้คือการหยุดงานปัจจุบันเรียกใช้งานคำสั่งและดำเนินการงานเดิมต่อ

ls | less (อ่านข้อความแจ้งให้ทราบชื่อไฟล์)
Control-zเพื่อระงับคำสั่งที่ใช้งานในปัจจุบัน

คุณควรได้รับบรรทัดที่คล้ายกับสิ่งนี้: [1]+ Stopped ls | less
([1] คือหมายเลขงาน)

rm testfile

fgหรือfg %1 (1 คือหมายเลขงาน)

คุณสามารถระงับหลายกระบวนการพร้อมกันได้ เช่น
ls | less
Control-z (output: [1]+ Stopped ls | less)
man rm
Control-z (output: [2]+ Stopped man rm)
rm -i testfile*

fg %1เพื่อกลับมาทำงาน 1 (ปล่อยให้หน้าคนเปิดอยู่ในพื้นหลัง) หรือ
fg %2เพื่อกลับมาทำงาน 2 (man rm)

หากคุณมีกระบวนการที่ถูกระงับหลายรายการคุณสามารถแสดงรายการกระบวนการเหล่านั้นjobsได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.