คำถามติดแท็ก shell

เชลล์คือซอฟต์แวร์ที่ช่วยให้ผู้ใช้โต้ตอบกับระบบปฏิบัติการโดยปกติแล้วพิมพ์ที่บรรทัดคำสั่ง

6
ฉันจะสร้างเครื่อง“ หน้าจอว่างเปล่า” ได้อย่างไรในช่วงระยะเวลาหนึ่ง (เป็นค่าปรับ) หากระดับเสียงดังถึงระดับหนึ่ง
ลูก ๆ ของฉัน (4 และ 5) ตะโกนมากเมื่อเล่นเกมบนคอมพิวเตอร์ ฉันพบวิธีรักษาที่มีประสิทธิภาพสำหรับสิ่งนี้ เมื่อฉันได้ยินเสียงดังฉันก็เข้าคอมพิวเตอร์และทำสิ่งต่อไปนี้ chvt 3; sleep 15; chvt 7 สิ่งนี้จะปิดหน้าจอเป็นเวลา 15 วินาทีบน Linux ฉันบอกพวกเขาว่าคอมพิวเตอร์ไม่ชอบเสียงดัง พวกเขาเชื่ออย่างนี้และขอคอมพิวเตอร์ยกโทษให้ พวกเขาเงียบกว่าเดิม แต่ไม่ถึงระดับที่ฉันจะมีความสุขและดังนั้นฉันจึงต้องดำเนินการศึกษาต่อไป อย่างไรก็ตามฉันไม่ได้อยู่ที่นี่ด้วยตนเอง เป็นไปได้ไหมที่จะทำสิ่งนี้โดยอัตโนมัติ ติดไมโครโฟนเข้ากับกล่อง หากระดับความดังผ่านเกณฑ์บางอย่างแล้วฉันต้องการเรียกใช้คำสั่ง


11
'แหล่งที่มา' ทำอะไร
$ whatis source source: nothing appropriate. $ man source No manual entry for source $ source bash: source: filename argument required source: usage: source filename [arguments] มันมีอยู่และสามารถรันได้ ทำไมไม่มีเอกสารเกี่ยวกับเรื่องนี้ใน Ubuntu มันทำอะไร? ฉันจะติดตั้งเอกสารเกี่ยวกับมันได้อย่างไร

30
วิธีรันคำสั่งเมื่อใดก็ตามที่ไฟล์มีการเปลี่ยนแปลง
ฉันต้องการวิธีที่ง่ายและรวดเร็วในการรันคำสั่งเมื่อใดก็ตามที่ไฟล์มีการเปลี่ยนแปลง ฉันต้องการบางอย่างที่เรียบง่ายสิ่งที่ฉันจะปล่อยให้ทำงานบนเทอร์มินัลและปิดเมื่อใดก็ตามที่ฉันทำงานกับไฟล์นั้นเสร็จ ขณะนี้ฉันใช้สิ่งนี้: while read; do ./myfile.py ; done จากนั้นฉันต้องไปที่เทอร์มินัลนั้นแล้วกดEnterเมื่อใดก็ตามที่ฉันบันทึกไฟล์นั้นไว้ในเครื่องมือแก้ไข สิ่งที่ฉันต้องการคือสิ่งนี้: while sleep_until_file_has_changed myfile.py ; do ./myfile.py ; done หรือวิธีแก้ปัญหาอื่น ๆ ได้ง่ายอย่างที่คิด BTW: ฉันใช้ Vim และฉันรู้ว่าฉันสามารถเพิ่ม autocommand เพื่อใช้งานบางอย่างใน BufWrite แต่นี่ไม่ใช่วิธีการแก้ปัญหาที่ฉันต้องการในตอนนี้ อัปเดต:ฉันต้องการอะไรที่เรียบง่ายละทิ้งได้ถ้าเป็นไปได้ ยิ่งไปกว่านั้นฉันต้องการให้บางสิ่งบางอย่างทำงานใน terminal เพราะฉันต้องการที่จะเห็นผลลัพธ์ของโปรแกรม (ฉันต้องการที่จะเห็นข้อความผิดพลาด) เกี่ยวกับคำตอบ:ขอบคุณสำหรับคำตอบทั้งหมดของคุณ! พวกเขาทั้งหมดดีมากและแต่ละคนก็ใช้วิธีที่แตกต่างจากคนอื่นมาก เนื่องจากฉันต้องยอมรับเพียงคนเดียวฉันจึงยอมรับสิ่งที่ฉันใช้จริง ๆ (มันง่ายรวดเร็วและง่ายต่อการจดจำ) แม้ว่าฉันจะรู้ว่ามันไม่ได้สง่างามที่สุด
434 linux  unix  shell  script 

11
โหลดการมอบหมายกลุ่มของผู้ใช้ Linux อีกครั้งโดยไม่ออกจากระบบ
เมื่อกำหนดรายชื่อกลุ่มรองของผู้ใช้โดยใช้: # usermod -G <grouplist> <user> เป็นไปได้ไหมที่จะบังคับให้การมอบหมายกลุ่มนี้มีผลโดยไม่ต้องออกจากเซสชันที่กำลังทำงานอยู่ทั้งหมด? สิ่งนี้จะมีประโยชน์มากในสถานการณ์ที่มีเซสชันของหน้าจออยู่กับเชลล์ที่รันอยู่จำนวนมากเนื่องจากเซสชั่นทั้งหมดจะต้องถูกทำลายเพื่อให้การมอบหมายกลุ่มมีผล ฉันคิดว่าฉันสามารถเปลี่ยนกลุ่มหลักของผู้ใช้ในเชลล์ที่กำลังทำงานโดยใช้newgrpคำสั่ง - มีทางเลือกอื่นที่จะใช้ได้กับกลุ่มรองหรือไม่? ตามหลักแล้วฉันต้องการบางสิ่งที่จะมีผลในแต่ละเชลล์โดยไม่ต้องเรียกใช้ด้วยตนเองในทุก ๆ อัน แต่ก็ล้มเหลวซึ่งอาจเป็นวิธีบังคับให้ Screen สั่งรันคำสั่งเดียวกันในแต่ละเชลล์

12
ฉันจะทำให้ rm ไม่ให้ข้อผิดพลาดได้อย่างไรหากไม่มีไฟล์อยู่?
ฉันกำลังเขียน makefile ที่จะล้างไฟล์ที่ไม่มีประโยชน์เมื่อสิ้นสุดการคอมไพล์ หากเป้าหมายได้ถูกสร้างขึ้นแล้วแน่นอนว่ามันจะข้ามเป้าหมายนั้นและไฟล์ที่ไร้ประโยชน์อาจไม่อยู่ที่นั่น ดังนั้นถ้าฉันทำสิ่งนี้: rm lexer.ml interpparse.ml interpparse.mli ฉันอาจได้รับข้อผิดพลาดเนื่องจากไม่มีไฟล์ใดไฟล์หนึ่งอยู่ มีวิธีบอกrmให้เพิกเฉยกับไฟล์เหล่านี้หรือไม่? ในการอ่าน man page ฉันเห็นตัวเลือกต่อไปนี้: -f Attempt to remove the files without prompting for confirma- tion, regardless of the file's permissions. If the file does not exist, do not display a diagnostic message or modify the exit status to reflect …
329 shell  makefile  rm 

9
chown ไม่ได้เปลี่ยนลิงค์สัญลักษณ์
ฉันพยายามเปลี่ยนผู้ใช้ / กลุ่มของลิงก์สัญลักษณ์ด้วยคำสั่ง: $ chown -h myuser:mygroup mysymbolic/ แต่มันไม่เปลี่ยนแปลง ฉันเข้าสู่ระบบในฐานะ root ผู้ใช้ปัจจุบัน / กลุ่มถูกตั้งค่าเป็นรูท: รูท เกิดอะไรขึ้น

19
ฉันจะแยกกระบวนการออกจากเทอร์มินัลได้อย่างไร
ฉันใช้ Tilda (เทอร์มินัลแบบหล่นลง) บน Ubuntu เป็น "ศูนย์กลางคำสั่ง" ของฉัน - เป็นวิธีที่คนอื่น ๆ อาจใช้ GNOME Do, Quicksilver หรือ Launchy อย่างไรก็ตามฉันกำลังดิ้นรนกับวิธีแยกกระบวนการ (เช่น Firefox) ออกจากเทอร์มินัลอย่างสมบูรณ์ซึ่งเปิดตัวจาก - นั่นคือป้องกันกระบวนการลูก (ไม่ใช่ -) ดังกล่าว ถูกยกเลิกเมื่อปิดเทอร์มินัลต้นทาง "ก่อให้เกิดมลพิษ" ขั้วต้นทางผ่าน STDOUT / STDERR ตัวอย่างเช่นในการเริ่ม Vim ในหน้าต่างเทอร์มินัล "เหมาะสม" ฉันได้ลองใช้สคริปต์อย่างง่ายดังต่อไปนี้: exec gnome-terminal -e "vim $@" &> /dev/null & อย่างไรก็ตามยังคงทำให้เกิดมลภาวะ (เช่นกันการส่งชื่อไฟล์ไม่สามารถใช้งานได้)
304 linux  bash  shell  ubuntu  terminal 

10
ถ้าฉันรู้หมายเลข PID ของกระบวนการฉันจะได้รับชื่อได้อย่างไร
หากฉันมีหมายเลข PID สำหรับกระบวนการ (บนเครื่อง UNIX) ฉันจะทราบชื่อกระบวนการที่เกี่ยวข้องได้อย่างไร ฉันต้องทำอะไร?
263 linux  unix  shell  process  pid 

10
เลื่อนเอาต์พุตเชลล์ด้วยเมาส์ใน tmux
การเลื่อนเมาส์ไม่ทำงานในtmuxวิธีการทำงานเมื่อฉันเรียกใช้เชลล์โดยไม่ต้อง tmux (ใน Terminal Gnome) ดูเหมือนว่า tmux จะส่งเหตุการณ์การเลื่อนเมาส์ราวกับว่าฉันกดปุ่มขึ้น / ลง แต่ฉันต้องการเลื่อนดูแม้ว่าประวัติเอาต์พุตของเชลล์ มีวิธีทำให้ tmux ทำงานเช่นนี้หรือไม่? หมายเหตุ:ฉันรู้วิธีเลื่อนด้วยแป้นพิมพ์ (ขอบคุณคำถามอื่นที่นี่) ฉันพยายามเลื่อนเมาส์ใน tmux สองเวอร์ชัน: 0.8-5hardy1 (บนUbuntu 8.04 (Hardy Heron)) 1.3-1 (บนUbuntu 10.10 ( Maerkick Meerkat))
256 shell  tmux 

15
จะเปิดอุโมงค์ SSH อย่างน่าเชื่อถือได้อย่างไร
ฉันใช้อุโมงค์ SSH จากที่ทำงานเพื่อไปรอบ ๆ ไฟร์วอลล์ที่แปลกใหม่ (มันโอเคกับเจ้านายของฉัน :)) ปัญหาคือหลังจากที่ในขณะที่การเชื่อมต่อ ssh มักจะแขวนและอุโมงค์เสีย หากอย่างน้อยฉันสามารถตรวจสอบอุโมงค์โดยอัตโนมัติฉันสามารถเริ่มอุโมงค์ใหม่ได้เมื่อแฮงค์ แต่ฉันไม่ได้คิดวิธีการทำเช่นนั้น คะแนนโบนัสสำหรับผู้ที่สามารถบอกวิธีป้องกันการเชื่อมต่อ ssh ของฉันไม่ได้แน่นอน!

12
ฉันจะเปลี่ยนเป็นไดเรกทอรีก่อนหน้าแทนที่จะขึ้นไปได้อย่างไร
ขณะนี้ฉันใช้เวลาทำงานจำนวนมากย้ายไปมาระหว่างสองเส้นทางซึ่งอยู่ไกลจากต้นไม้มากและเบี่ยงเบนจากกันและกัน มันทำให้ฉันรู้สึกว่าชีวิตของฉันจะง่ายขึ้นมากถ้ามีข้อโต้แย้งcdว่าจะนำผู้ใช้ไปยังไดเรกทอรีสุดท้ายที่พวกเขาอยู่ นั่นคือถ้าฉันอยู่ใน: /etc/foo/bar/baz/moo จากนั้นพิมพ์: cd /var/lib/fubarred_app/blargh/logs ฉันต้องการกลับไปยังไดเรกทอรีแรกโดยไม่ต้องพิมพ์เส้นทางทั้งหมดอีกครั้ง คีย์หน่วยความจำไม่ตัดเนื่องจากฉันใช้คำสั่งเพียงพอในแต่ละสถานที่ซึ่งมันยากพอที่จะย้อนกลับไปและค้นหาเส้นทางที่ฉันต้องการเพราะมันคือการพิมพ์ด้วยตัวเอง มีคำสั่งสั้น ๆ ที่จะให้ฉันไปที่ไดเรกทอรีก่อนหน้าหรือไม่
214 unix  shell 

12
ฉันจะเลือกข้อความทั้งหมดใน Vi / Vim ได้อย่างไร
การใช้เครื่องมือ VI เพื่อแก้ไขไฟล์กำหนดค่า ฉันจะเลือกข้อความทั้งหมดในไฟล์ (ประมาณ 1,000 บรรทัด) คัดลอกแล้ววางลงใน Google เอกสารได้อย่างไร
193 shell  vi 


9
จะทำอย่างไรเมื่อ Ctrl + C ไม่สามารถฆ่ากระบวนการได้
Ctrl+ Cไม่ทำงานเพื่อฆ่ากระบวนการปัจจุบันเสมอ (ตัวอย่างเช่นหากกระบวนการนั้นไม่ว่างในการดำเนินงานเครือข่ายบางอย่าง) ในกรณีนี้คุณเพิ่งเห็น "^ C" โดยเคอร์เซอร์ของคุณและไม่สามารถทำอะไรได้อีกมาก อะไรคือวิธีที่ง่ายที่สุดในการบังคับให้กระบวนการนั้นตายในตอนนี้โดยไม่สูญเสียเครื่อง? สรุปคำตอบ: โดยปกติคุณสามารถCtrl+ Zเพื่อทำให้กระบวนการเข้าสู่โหมดสลีปแล้วทำkill -9 _process-pid_ที่ซึ่งคุณพบ pid ของกระบวนการด้วยpsและเครื่องมืออื่น ๆ บนBash (และเปลือกหอยอื่น ๆ ) คุณสามารถทำkill -9 %1(หรือ '% N' โดยทั่วไป) ซึ่งทำได้ง่ายกว่า หากCtrl+ Zใช้งานไม่ได้คุณจะต้องเปิดเทอร์มินัลอื่นและฆ่าจากที่นั่น
171 linux  bash  shell 

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