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

เชลล์เป็นอินเตอร์เฟสบรรทัดคำสั่งของ Unix คุณสามารถพิมพ์คำสั่งในเชลล์แบบโต้ตอบหรือเขียนสคริปต์เพื่อทำงานอัตโนมัติ ใช้แท็กนี้สำหรับคำถามที่ใช้กับ / bin / sh และเชลล์ที่เข้ากันได้มากที่สุด (ash, bash, ksh, zsh, …) สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาดโปรดตรวจสอบใน http://shellcheck.net ก่อนโพสต์ที่นี่

1
ctrl c เทียบกับ ctrl z ด้วยเบื้องหน้างาน
Ctrl+ Zหยุดงานขณะที่Ctrl+ Cฆ่างาน ทำไมถึงเป็นอย่างนั้น? วิธีอื่นจะไม่เข้าท่ามากกว่านี้หรือ z@z-lap:~$ sleep 100& [1] 4458 z@z-lap:~$ sleep 200& [2] 4459 z@z-lap:~$ jobs [1]- Running sleep 100 & [2]+ Running sleep 200 & z@z-lap:~$ fg %1 sleep 100 ^Z [1]+ Stopped sleep 100 z@z-lap:~$ jobs [1]+ Stopped sleep 100 [2]- Running sleep 200 & z@z-lap:~$ fg …

4
ln -s พร้อมกับพา ธ ที่สัมพันธ์กับ pwd
ฉันพยายามสร้างลิงก์สัญลักษณ์มากมาย แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงใช้งานได้ ln -s /Users/niels/something/foo ~/bin/foo_link ในขณะนี้ cd /Users/niels/something ln -s foo ~/bin/foo_link ไม่ใช่. ฉันเชื่อว่ามีบางอย่างเกี่ยวข้องกับการfoo_linkเชื่อมโยงไปยัง foo /Users/niels/binแทน/Users/niels/something ดังนั้นคำถามคือฉันจะสร้างลิงก์สัญลักษณ์ที่ชี้ไปยังเส้นทางที่แน่นอนได้โดยไม่ต้องพิมพ์ได้อย่างไร สำหรับการอ้างอิงฉันใช้ Mac OS X 10.9 และ Zsh
26 bash  shell  symlink  ln 

5
เรียกใช้สคริปต์ในเชลล์ปัจจุบันโดยไม่ต้อง ก่อนคำสั่ง
หากสคริปต์ควรถูกดำเนินการในเชลล์ปัจจุบันสามารถทำได้โดยการเพิ่มจุดก่อนคำสั่ง: . ./somescript.sh มีวิธีทำเช่นนี้โดยไม่ต้องพิมพ์จุดทุกครั้งหรือไม่ ตัวอย่างเช่นคำสั่งเปลี่ยนเป็น parent parent จากสคริปต์เอง?
26 shell 

3
ลบไฟล์ทั้งหมดที่สร้างขึ้นก่อนวันที่กำหนด
ฉันมีไดเรกทอรีที่มีไฟล์จำนวนมาก (เช่นบันทึกสำหรับทุกวันของปี) ฉันต้องการลบไฟล์ทั้งหมดที่สร้างขึ้นก่อนหน้านี้ว่า 22/11 ฉันจะบรรลุสิ่งนั้นได้อย่างไร ฉันจะต้องใช้findexec แล้ว-rmหรือไม่ ฉันใช้ ksh
26 shell  files  find  ksh 


1
ดำเนินการฟังก์ชั่น readline โดยไม่ต้องผูกปุ่ม?
ฉันแค่อ่าน readline man-page และค้นพบคำสั่งมากมายที่ฉันไม่รู้ อย่างไรก็ตามหลายคนไม่มีการเชื่อมโยงคีย์เริ่มต้น มีวิธีรันคำสั่ง unbound จากเชลล์หรือไม่? ฉันไม่ได้ถามว่าจะผูกคำสั่งใน ~ / .inputrc ได้อย่างไร แต่จะรันมันเป็น "one off" จาก shell หรือใน bash script ได้ ตัวอย่างเช่นคำสั่ง "dump-variables" มีคำสั่งที่ฉันสามารถฟีด "ตัวแปรตัวแปร" เพื่อเป็นอาร์กิวเมนต์เพื่อให้ได้ดำเนินการ?
26 bash  shell  readline  inputrc 

3
คุณต้องการ 'nohup' เมื่อใดหากคุณใช้ '&' ไปแล้ว?
ครั้งแรกคำถามนี้เกี่ยวข้อง แต่ไม่เหมือนคำถามนี้ดีมาก: ความแตกต่างระหว่าง nohup, บอกเลิกและ & ฉันต้องการที่จะเข้าใจบางสิ่งบางอย่าง: เมื่อฉันทำ '&' ฉันกำลังฟาดฟันใช่มั้ย มีประโยชน์ไหมที่จะทำ "nohup ... &" หรือเพียงแค่ & เพียงพอ มีคนแสดงกรณีที่คุณใช้ '&' และยังต้องการใช้ 'nohup' หรือไม่
26 shell  nohup  fork 



8
ใช้ไฟล์ config สำหรับเชลล์สคริปต์ของฉัน
ฉันต้องการสร้างไฟล์ปรับแต่งสำหรับสคริปต์ของตัวเอง: นี่เป็นตัวอย่าง: สคริปต์: #!/bin/bash source /home/myuser/test/config echo "Name=$nam" >&2 echo "Surname=$sur" >&2 เนื้อหาของ/home/myuser/test/config: nam="Mark" sur="Brown" นั่นเป็นผลงาน! คำถามของฉัน: นี่เป็นวิธีที่ถูกต้องในการทำเช่นนี้หรือมีวิธีอื่นหรือไม่?

4
อาร์เรย์ใน Unix Bourne Shell
ฉันพยายามใช้อาร์เรย์ใน Bourne shell ( /bin/sh) ฉันพบว่าวิธีการเริ่มต้นองค์ประกอบอาร์เรย์คือ: arr=(1 2 3) แต่พบข้อผิดพลาด: syntax error at line 8: `arr=' unexpected ตอนนี้โพสต์ที่ฉันพบไวยากรณ์นี้บอกว่ามันมีไว้สำหรับbashแต่ฉันไม่สามารถหาไวยากรณ์ที่แยกต่างหากสำหรับเชลล์เป้าหมาย ไวยากรณ์มีความเหมือน/bin/shกันหรือไม่


6
วิธีเพิ่มตัวแปรทางคณิตศาสตร์ในสคริปต์
ฉันต้องการสะสมขนาดบรรทัดของไฟล์จำนวนหนึ่งที่มีอยู่ในโฟลเดอร์ ฉันได้เขียนสคริปต์ต่อไปนี้: let a=0 let num=0 for i in folder/* do num=`cat $i | wc -l` a=$a+$num done echo $a สิ่งที่ฉันได้รับในตอนท้ายของสคริปต์คือ 123 + 234 + 432 + ... และไม่ใช่ผลลัพธ์ของการดำเนินการทางคณิตศาสตร์ของการเพิ่ม

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

5
ทำไมฉันต้องอ้างตัวแปรสำหรับถ้า แต่ไม่ใช่เพื่อ echo
ฉันได้อ่านแล้วว่าคุณต้องการอัญประกาศคู่เพื่อขยายตัวแปรเช่น if [ -n "$test" ]; then echo '$test ok'; else echo '$test null'; fi จะทำงานตามที่คาดไว้ในขณะที่ if [ -n $test ]; then echo '$test ok'; else echo '$test null'; fi จะพูดเสมอ$test okแม้ว่า$testจะเป็นโมฆะ แต่ทำไมเราไม่ต้องการคำพูดecho $test?
26 shell  quoting 

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