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

คำถามเกี่ยวกับเชลล์สคริปต์ไฟล์เรียกทำงานที่ตีความโดยเชลล์ (bash, zsh ฯลฯ )

7
วิธีการสร้าง testcolor.sh เหมือนภาพหน้าจอต่อไปนี้?
ฉันพบภาพนี้บนอินเทอร์เน็ต แต่ไม่ทราบว่ามันเกิดขึ้นได้อย่างไร ทุกคนสามารถให้ตัวอย่างกับสิ่งนั้นได้หรือไม่? ฉันแค่ต้องการมีตารางสีเช่นกัน

2
เหตุใดจึงต้องหลีกเลี่ยงอักขระตัวเล็กในเชลล์สคริปต์
ฉันเพิ่งเปิดเชลล์สคริปต์ดั้งเดิม (เขียนด้วย ksh88 เก่าบน Solaris) และพบสิ่งต่อไปนี้ซ้ำแล้วซ้ำอีกตลอดทั้งรหัส: [ -f $myfile ] && \rm -f $myfile แบ็กสแลชที่หนีออกมาจะทำให้ฉันประหลาด ฉันรู้ว่ามันเป็นการจงใจเนื่องจากการหลบหนี (ไร้ประโยชน์แบบนี้) ซ้ำแล้วซ้ำอีกตลอดทั้งรหัส ผู้เขียนดั้งเดิมหายไปนานฉันไม่สามารถติดต่อกับเขาเพื่อขอให้เขา นี่เป็นเพียงนิสัยแปลก ๆ ตลก ๆ ของผู้แต่งหรือเป็นแนวปฏิบัติที่ดีที่เลิกใช้แล้วซึ่งทำให้เข้าใจได้ในบางเวลา หรืออาจเป็นวิธีที่แนะนำในการทำสิ่งต่าง ๆ และฉันก็ขาดอะไรไปบ้าง?

7
ทุบตีถ้าไม่ได้หลายเงื่อนไขโดยไม่ต้อง subshell?
ฉันต้องการรวมหลายเงื่อนไขในเชลล์ถ้าคำสั่งและปฏิเสธการรวมกัน ฉันมีรหัสการทำงานต่อไปนี้สำหรับการรวมกันของเงื่อนไขง่าย ๆ : if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then # do stuff with the files fi มันใช้งานได้ดี ถ้าฉันต้องการที่จะปฏิเสธฉันสามารถใช้รหัสการทำงานต่อไปนี้: if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then …


3
สคริปต์นี้ทำให้แน่ใจได้อย่างไรว่ามีเพียงตัวเดียวเท่านั้นที่กำลังทำงานอยู่
ในวันที่ 19 ส.ค. 2556 Randal L. Schwartzโพสต์สคริปต์เชลล์นี้ซึ่งมีจุดประสงค์เพื่อให้แน่ใจว่าบน Linux "ว่ามีเพียงหนึ่งตัวอย่างของสคริปต์ [the] ที่กำลังทำงานโดยไม่มีเงื่อนไขการแข่งขันหรือต้องล้างไฟล์ล็อค": #!/bin/sh # randal_l_schwartz_001.sh ( if ! flock -n -x 0 then echo "$$ cannot get flock" exit 0 fi echo "$$ start" sleep 10 # for testing. put the real task here echo "$$ end" ) < $0 ดูเหมือนว่าจะทำงานตามที่โฆษณาไว้: …

2
คำสั่งใด ๆ ในเทอร์มินัลของฉันที่ออกด้วยรหัสที่ไม่ใช่ศูนย์จะปิดหน้าต่างเทอร์มินัลของฉัน
ตอนแรกมันค่อนข้างตลกเหมือนเล่น "Bash Roulette" ... แต่ตอนนี้มันเก่าขึ้นแล้ว คำสั่งใด ๆ ในเทอร์มินัลของฉันที่ออกด้วยรหัสที่ไม่ใช่ศูนย์จะปิดหน้าต่างเทอร์มินัลของฉัน ฉันได้รับการบอกว่าบางทีฉันอาจset -eตั้งค่าสคริปต์ทุบตีไว้ที่ใดที่หนึ่งที่สถานีปลายทางของฉัน ฉันได้ตรวจสอบ.bash_profile/ .bashrc/ .profileแล้วและดูเหมือนว่าจะไม่set -eอยู่ในนั้น จะมีผู้ร้ายคนอื่น ๆ อีกหรือไม่?

1
คำสั่ง unix 'เลือก' ทำอะไร?
ฉันได้รับคำสั่งที่เรียกว่า 'เลือก' ในหนังสือ Unix บางเล่ม แต่ไม่เข้าใจว่ามันทำอะไร ด้านล่างเป็นคำสั่งเลือกตัวอย่าง: pick abc.*

3
เปรียบเทียบสองสตริงใน Bash
ฉันมีifบล็อกต่อไปนี้ในสคริปต์ทุบตีของฉัน: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi การดำเนินการสคริปต์ไม่ได้เข้ามาของฉันifบล็อกแม้ว่าจะมีค่าเท่ากับ$PACKAGENAME kakadu-v6_4-00902Cผมทำอะไรผิดหรือเปล่า?

4
Linux จัดการกับเชลล์สคริปต์ได้อย่างไร?
สำหรับคำถามนี้ให้พิจารณาสคริปต์เปลือก bash แม้ว่าคำถามนี้จะต้องเกี่ยวข้องกับสคริปต์เชลล์ทุกประเภท เมื่อมีคนเรียกใช้งานเชลล์สคริปต์ลินุกซ์จะโหลดสคริปต์ทั้งหมดในคราวเดียว (อาจเป็นหน่วยความจำ) หรือมันอ่านคำสั่งสคริปต์ทีละคำ (บรรทัดต่อบรรทัด) หรือไม่? กล่าวอีกนัยหนึ่งถ้าฉันเรียกใช้งานเชลล์สคริปต์และลบออกก่อนที่การดำเนินการจะเสร็จสิ้นการดำเนินการจะถูกยกเลิกหรือจะดำเนินการต่อไปตามที่เป็นอยู่หรือไม่

1
ส้อมระเบิดทำงานอย่างไร
คำเตือนอย่าพยายามเรียกใช้สิ่งนี้บนเครื่องผลิต ในการอ่านหน้า Wikipedia ในหัวข้อฉันมักจะติดตามสิ่งที่เกิดขึ้นด้วยรหัสต่อไปนี้: :(){ :|:& };: ตัดตอนมาจากคำอธิบาย ระเบิดส้อมต่อไปนี้ถูกนำเสนอเป็นศิลปะในปี 2002;56 แหล่งกำเนิดที่แน่นอนของมันไม่เป็นที่รู้จัก แต่มันอยู่บน Usenet ปี 2002 ก่อนที่จะระเบิดจะถูกดำเนินการโดยการวางต่อไปนี้ 13 ตัวเป็น UNIXเปลือกเช่นทุบตีหรือzsh มันทำงานโดยการกำหนดฟังก์ชั่นที่เรียกว่า ':' ซึ่งเรียกตัวเองว่าสองครั้งหนึ่งครั้งในเบื้องหน้าและอีกครั้งในพื้นหลัง อย่างไรก็ตามบิตสุดท้ายไม่ชัดเจนสำหรับฉัน ฉันเห็นนิยามของฟังก์ชัน: :(){ ... } แต่จะเกิดอะไรขึ้น นอกจากนี้ยังทำหอยอื่น ๆ เช่นksh, cshและtcshยังประสบชะตากรรมเดียวกันของความสามารถที่จะสร้างบางสิ่งบางอย่างที่คล้ายกัน?
22 bash  shell-script  zsh  fork 

9
รักษาโครงสร้างไดเรกทอรีเมื่อย้ายไฟล์โดยใช้การค้นหา
ฉันสร้างสคริปต์ต่อไปนี้ซึ่งย้ายไฟล์วันเก่าตามที่กำหนดจากไดเรกทอรีต้นทางไปยังไดเรกทอรีปลายทาง มันทำงานได้อย่างสมบูรณ์แบบ #!/bin/bash echo "Enter Your Source Directory" read soure echo "Enter Your Destination Directory" read destination echo "Enter Days" read days find "$soure" -type f -mtime "-$days" -exec mv {} "$destination" \; echo "Files which were $days Days old moved from $soure to $destination" สคริปต์นี้ย้ายไฟล์ได้อย่างยอดเยี่ยมนอกจากนี้ยังย้ายไฟล์ของไดเรกทอรีย่อยต้นทาง แต่ไม่สร้างไดเรกทอรีย่อยลงในไดเรกทอรีปลายทาง ฉันต้องการใช้คุณสมบัติเพิ่มเติมนี้ในนั้น ด้วยตัวอย่าง /home/ketan …

5
วิธีแสดงรายการไฟล์และไดเรกทอรีด้วยไดเรกทอรีก่อน
ฉันมีสองคำถาม ก่อนคำสั่งใดรายการไฟล์และไดเรกทอรี แต่รายการไดเรกทอรีก่อน? คำถามที่สอง: ฉันต้องการคัดลอกรายการไฟล์ไปยังไดเรกทอรีเดียว แต่ทำให้ไดเรกทอรีเป้าหมายเป็นชื่อไฟล์แรกในคำสั่ง


2
รหัสจบการทำงานท้ายสคริปต์ทุบตี
ฉันสับสนเกี่ยวกับความหมายของรหัสออกในตอนท้ายของสคริปต์ทุบตี: ฉันรู้ว่ารหัสออก 0 หมายความว่าเสร็จสมบูรณ์และมีหมายเลขรหัสทางออกอื่นอีกมากมาย (127 ถ้าฉันไม่เข้าใจผิด?) คำถามของฉันเกี่ยวกับเมื่อเห็นรหัสออก 0 ที่ท้ายสคริปต์มันบังคับให้รหัสออกเป็น 0 แม้ว่าสคริปต์จะล้มเหลวหรือมีความหมายอื่นหรือไม่

5
ฉันจะสร้างบริการสำหรับเชลล์สคริปต์ได้อย่างไรเพื่อให้ฉันสามารถเริ่มต้นและหยุดเหมือน daemon ได้?
ฉันใช้ CentOS 7 เป้าหมายของฉันคือการสร้าง cron ทุก ๆ ห้าวินาที แต่ในขณะที่ฉันวิจัยเราสามารถใช้ cron เพียงหนึ่งนาทีดังนั้นสิ่งที่ฉันทำตอนนี้คือฉันได้สร้างเชลล์ไฟล์ hit.sh while sleep 5; do curl http://localhost/test.php; done แต่ฉันกดมันเองด้วยการคลิกขวา สิ่งที่ฉันต้องการคือการสร้างบริการสำหรับไฟล์นั้นเพื่อให้ฉันสามารถเริ่มและหยุดโดยอัตโนมัติ ฉันพบสคริปต์เพื่อสร้างบริการ #!/bin/bash # chkconfig: 2345 20 80 # description: Description comes here.... # Source function library. . /etc/init.d/functions start() { # code to start app comes here # example: …

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