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

สคริปต์คือลำดับของคำสั่งหรือคำสั่งที่ดำเนินการโดยโปรแกรมล่ามแทนที่จะรวบรวมเป็นโปรแกรมปฏิบัติการแบบสแตนด์อโลน

2
สร้างใบรับรอง SSL แบบไม่โต้ตอบ [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันต้องการสร้างใบรับรอง SSL แบบไม่โต้ตอบ คือไม่ได้รับพร้อมท์สำหรับข้อมูลใด ๆ วิธีปกติที่ฉันสร้างใบรับรองจะเป็น: openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \ -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem ฉันพยายามต่อไปนี้: openssl genrsa -out server.key 2048 touch openssl.cnf cat >> openssl.cnf <<EOF [ req ] prompt = no distinguished_name = req_distinguished_name [ req_distinguished_name ] …
28 scripting  ssl 

2
พฤติกรรมที่ถูกต้องของกับดัก EXIT และ ERR เมื่อใช้ `set -eu`
ฉันสังเกตเห็นพฤติกรรมแปลก ๆ บางอย่างเมื่อใช้set -e( errexit), set -u( nounset) พร้อมกับดัก ERR และ EXIT ดูเหมือนว่าพวกเขาเกี่ยวข้องกันดังนั้นการใส่คำถามเหล่านั้นลงในคำถามเดียวก็สมเหตุสมผล 1) set -uไม่เรียกใช้กับดัก ERR รหัส: #!/bin/bash trap 'echo "ERR (rc: $?)"' ERR set -u echo ${UNSET_VAR} คาดว่า: มีการเรียกใช้กับดัก ERR, RC! = 0 จริง: ไม่ได้เรียกกับแทร็บ ERR , RC == 1 หมายเหตุ: set -eไม่เปลี่ยนผลลัพธ์ 2) การใช้set -euรหัสออกในกับดักของ EXIT คือ …

1
การค้นหาไฟล์ที่คำสั่งล้มเหลว
ฉันต้องการค้นหาไฟล์ทั้งหมดซ้ำที่สคริปต์ซึ่งยอมรับไฟล์เนื่องจากอาร์กิวเมนต์ส่งคืนค่าที่ไม่เป็นศูนย์ มีความคิดวิธีการทำเช่นนี้โดยใช้ 'ค้นหา' หรือเครื่องมือที่คล้ายกัน?

1
ที่สัญญาณหลังจาก shebang?
ในสคริปต์ "support / apxs.in" ของ Apache httpdข้อความที่ล้อมรอบด้วย@เครื่องหมายจะปรากฏขึ้นหลังจาก#!นั้น นั่นคือบรรทัดแรกของสคริปต์คือ: #!@perlbin@ -w นี่คือสิ่ง Perl หรือสิ่งเคอร์เนล UNIX? กล่าวอีกนัยหนึ่งเป็นไปได้ไหมที่จะเรียกใช้สคริปต์นี้โดยใช้path/to/script/script_name.in? ถ้าไม่เช่นนั้นมีเหตุผลอะไรที่จะเริ่มสคริปต์ด้วย#!?

6
ฉันจะเผยแพร่คีย์ SSH ของฉันไปยังรายการเซิร์ฟเวอร์ได้อย่างไรโดยไม่ต้องพิมพ์รหัสผ่านซ้ำแล้วซ้ำอีก?
เมื่อเร็ว ๆ นี้ฉันได้รับชื่อผู้ใช้ / รหัสผ่านเพื่อเข้าถึงรายการเซิร์ฟเวอร์และต้องการเผยแพร่รหัสสาธารณะ SSH ของฉันไปยังเซิร์ฟเวอร์เหล่านี้เพื่อให้ฉันสามารถเข้าสู่ระบบได้ง่ายขึ้น เพื่อให้ชัดเจน: ไม่มีคีย์สาธารณะที่มีอยู่แล้วบนเซิร์ฟเวอร์ระยะไกลที่ฉันสามารถใช้เพื่อทำสิ่งนี้โดยอัตโนมัติ นี่ถือเป็นครั้งแรกที่ฉันเข้าสู่เซิร์ฟเวอร์เหล่านี้และฉันไม่ต้องการพิมพ์ข้อมูลประจำตัวของฉันในการเข้าถึงพวกเขา ฉันไม่ต้องการพิมพ์รหัสผ่านของฉันซ้ำแล้วซ้ำอีกโดยใช้ssh-copy-idใน for for loop


7
สลับตัวแปรบูลีน
ฉันต้องการลองใช้สคริปต์อย่างง่าย flag=false while !$flag do read x if [ "$x" -eq "true" ] then flag=true fi echo "${x} : ${flag}" done แต่เมื่อฉันเรียกใช้ถ้าฉันพิมพ์trueฉันจะเห็นว่าx="true"และflag="true"แต่รอบไม่สิ้นสุด เกิดอะไรขึ้นกับสคริปต์ ฉันจะสลับตัวแปรบูลีนอย่างถูกต้องได้อย่างไร
26 bash  scripting 

6
ฉันจะแยกเนื้อหาของสตริงที่ยกมาจากผลลัพธ์ของคำสั่งได้อย่างไร
ฉันมีผลลัพธ์จากVBoxManage list vmsที่มีลักษณะเช่นนี้: "arch" {de1a1db2-86c5-43e7-a8de-a0031835f7a7} "arch2" {92d8513c-f13e-41b5-97e2-2a6b17d47b67} ฉันต้องการที่จะคว้าชื่อarchและarch2และบันทึกไว้ในตัวแปร

10
หนึ่งซับ VS สคริปต์
ฉันสังเกตเห็นคำถามและคำตอบจำนวนมากและความคิดเห็นที่แสดงความรังเกียจ (และบางครั้งก็กลัว) การเขียนสคริปต์แทนการใช้ liners คนเดียว ดังนั้นฉันต้องการทราบ: ฉันควรเขียนสคริปต์แบบสแตนด์อโลนเมื่อใดและเพราะเหตุใดแทนที่จะเป็น "หนึ่งซับ" หรือในทางกลับกัน? ข้อดีและข้อเสียของการใช้ทั้งสองกรณีคืออะไร บางภาษา (เช่น awk หรือ perl) เหมาะกับ liners หนึ่งมากกว่าภาษาอื่น ๆ (เช่น python) หรือไม่ ถ้าเป็นเช่นนั้นทำไม มันเป็นเพียงเรื่องของการตั้งค่าส่วนตัวหรือมีเหตุผลที่ดี (เช่นวัตถุประสงค์) ในการเขียนหนึ่งหรืออื่น ๆ ในสถานการณ์พิเศษหรือไม่ อะไรคือเหตุผลเหล่านั้น คำนิยาม one-liner: ลำดับของคำสั่งใด ๆ ที่พิมพ์หรือวางโดยตรงลงในเปลือกบรรทัดคำสั่ง มักเกี่ยวข้องกับท่อและ / หรือการใช้ภาษาเช่นsed, awk, perlและ / หรือเครื่องมือเช่นgrepหรือหรือcutsort มันเป็นการดำเนินการโดยตรงบนบรรทัดคำสั่งที่เป็นลักษณะการกำหนด - ความยาวและการจัดรูปแบบไม่เกี่ยวข้อง "หนึ่งซับ" อาจอยู่ในหนึ่งบรรทัดหรืออาจมีหลายบรรทัด (เช่น sh สำหรับลูปหรือฝัง awk …

3
เรียกใช้สคริปต์ในหน้าจอ
ฉันต้องการรันสคริปต์ทุบตีในหน้าจอเดี่ยว สคริปต์เรียกโปรแกรมสองสามครั้งแต่ละอันใช้เวลาในการรอนานเกินไป ความคิดแรกของฉันคือเพียงเปิดหน้าจอจากนั้นเรียกสคริปต์ แต่ดูเหมือนว่าฉันจะแยกออกไม่ได้ (โดยctrl-a d) ในขณะที่สคริปต์ทำงานอยู่ ดังนั้นฉันจึงทำการวิจัยและพบคำแนะนำนี้เพื่อแทนที่ shebang ด้วยต่อไปนี้: #!/usr/bin/screen -d -m -S screenName /bin/bash แต่นั่นไม่ได้ผลเช่นกัน (ตัวเลือกไม่ได้รับการยอมรับ) ข้อเสนอแนะใด ๆ ป.ล. เกิดขึ้นกับฉันในตอนนี้ซึ่งscreen -dmS name ./script.shอาจเป็นไปได้สำหรับวัตถุประสงค์ของฉัน แต่ฉันก็ยังสงสัยว่าจะรวมสิ่งนี้เข้ากับสคริปต์อย่างไร ขอขอบคุณ.

4
การพิมพ์ข้อความสีโดยใช้เสียงสะท้อน
ฉันรู้ว่าสำหรับการพิมพ์ข้อความสีโดยใช้ echo เช่นสีแดงรหัสคือ: echo -e "\e[1;31m This is red text \e[0m" และฉันรู้ว่าในตัวอย่างนี้ 31 คือรหัสของสีแดงและจำนวนสีอื่น ๆ คือ: Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 …

5
ฉันจะใช้วิธีทุบตีถ้าทดสอบและค้นหาคำสั่งด้วยกันได้อย่างไร
ฉันมีไดเรกทอรีที่มีบันทึกข้อผิดพลาดและฉันต้องการใช้คำสั่งแบบมีเงื่อนไขในสคริปต์ทุบตีตามคำสั่งค้นหา ไฟล์บันทึกจะถูกจัดเก็บในรูปแบบนี้: /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log ฉันต้องการให้คำสั่ง if ส่งคืนจริงถ้ามีบันทึกการทำงานล้มเหลวสำหรับแอปเฉพาะซึ่งได้รับการแก้ไขใน 5 นาทีที่ผ่าน findคำสั่งที่ผมจะใช้เป็น: find /var/log/crashes -name app-\*\.log -mmin -5 ฉันไม่แน่ใจว่าจะรวมเข้ากับifคำสั่งได้อย่างถูกต้อง ฉันคิดว่านี่อาจใช้งานได้: if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi มีบางพื้นที่ที่ฉันไม่ชัดเจน: ฉันดูที่ธง ifแต่ฉันไม่แน่ใจว่าควรใช้อันไหนถ้ามี ฉันต้องการtestคำสั่งหรือฉันควรประมวลผลผลลัพธ์ของคำสั่ง find โดยตรงหรืออาจใช้find... | wc -lเพื่อรับจำนวนบรรทัดแทน ไม่จำเป็น 100% ที่จะตอบคำถามนี้ แต่testสำหรับการทดสอบกับโค้ดส่งคืนที่คำสั่งส่งคืน? และพวกมันมองไม่เห็น - ด้านนอกของstdout/ stderr? …

6
วิธีใช้ `/ usr / bin / env sed -f 'ใน shebang?
การพิมพ์/usr/bin/env sed -fงานเทอร์มินัล แต่ถ้าใช้เป็น Shebang #!/usr/bin/env sed -f s/a/b/ สคริปต์จะล้มเหลวในการดำเนินการ: /usr/bin/env: sed -f: No such file or directory ฉันเชื่อว่ามันเกี่ยวข้องกับ -f แต่จะแก้ไขได้อย่างไร?

4
ฉันจะแทนที่ AND (&&) ในวง for ได้อย่างไร
ฉันต้องการหาสิ่งที่เทียบเท่า cmd 1 && cmd 2 && ... && cmd 20 แต่มีคำสั่งแสดงอยู่ภายในforลูปเช่น for i in {1..20} do cmd $i done คุณอยากแนะนำอะไรให้เปลี่ยนในนิพจน์ที่สองเพื่อหาค่าที่เท่ากัน

8
ภาษาสคริปต์สากลสำหรับ Linux คืออะไร?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 7 ปีที่ผ่านมา เรากำลังเขียนสคริปต์สำหรับระบบ Linux มีการถกเถียงกันว่าภาษาสคริปต์ Linux ที่ใช้กันทั่วไปจะเป็นภาษาใด Bash, SH, Posix? อะไร?

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