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

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

2
การเขียนสคริปต์แบบพกพามีความสำคัญเมื่อใด
รหัสส่วนใหญ่ฉันเขียนอยู่ใน PHP ฉันเพิ่งเริ่มเรียนรู้การเขียนสคริปต์เชลล์ ทรัพยากรและแบบฝึกหัดส่วนใหญ่ที่ฉันเจอนั้นเฉพาะเจาะจงกับ Bash บางคนเตือนเกี่ยวกับ bashisms และบางคนไม่ทำ ฉันอ่านมากที่นี่และ Stack Overflow เมื่อใดก็ตามที่คำตอบใช้bashismsบางคนย่อมแสดงความคิดเห็นว่า: คุณไม่ควรใช้ <insert bashism ที่นี่> มันไม่ได้พกพา bashนี้เกิดขึ้นแม้ในขณะที่คำถามที่ได้รับการติดแท็กด้วย สำหรับฉันแล้วมันเหมือนกับบอกโปรแกรมเมอร์ PHP ว่าพวกเขาไม่ควรใช้รหัสที่ใหม่ใน PHP 5 เพราะมันไม่สามารถใช้กับ PHP 4 หรือบอกคนที่พวกเขาไม่ควรเขียนอะไรบางอย่างสำหรับ Mac เพราะมันไม่สามารถใช้ บน Windows เมื่อผมเขียนใน PHP, ฉันได้รับความต้องการขั้นต่ำและที่ผมเขียนไปข้างหน้ารหัสใช้ได้กับระบบปฏิบัติการ ฉันไม่ต้องกังวลกับการทำให้ย้อนกลับ -เข้ากันได้ ถ้าฉันใช้#!/bin/bashเป็นสาวเธอทำไมฉันไม่ควรใช้วิธีการทุบตี? ฉันเริ่มที่จะได้รับความประทับใจที่บางคนชอบทุบตี bashisms (ปุนตั้งใจ) เพียงเพื่อประโยชน์ของมัน ผู้คนมักจะใช้bashและใช้shellแทนกันได้ - อาจเป็นเพราะการทุบตีเป็นเชลล์เริ่มต้นในหลาย ๆ ระบบ ดังนั้นฉันสามารถเข้าใจการเพิ่มความคิดเห็นเพื่อเตือนว่ารหัสใช้ bashisms แต่ฉันไม่เข้าใจความหมายที่ผิดที่จะใช้พวกเขา เห็นได้ชัดว่าถ้าฉันเขียนสคริปต์อย่างเคร่งครัดเพื่อใช้ส่วนตัวฉันสามารถเขียนเป็นภาษาใดก็ได้ที่ฉันต้องการ …

6
การใช้ขนานเพื่อประมวลผลไฟล์อินพุตเฉพาะไปยังไฟล์เอาต์พุตที่ไม่ซ้ำกัน
ฉันมีปัญหาการเขียนสคริปต์เชลล์ซึ่งฉันได้รับไดเรกทอรีที่เต็มไปด้วยไฟล์อินพุต (ไฟล์แต่ละไฟล์มีหลายบรรทัดอินพุต) และฉันจำเป็นต้องประมวลผลเป็นรายบุคคลโดยเปลี่ยนเส้นทางผลลัพธ์แต่ละไฟล์ไปเป็นไฟล์ที่ไม่ซ้ำกัน (aka, file_1.input ที่จะถูกจับใน file_1.output และอื่น ๆ ) พรีขนานฉันจะทำซ้ำแต่ละไฟล์ในไดเรกทอรีและดำเนินการคำสั่งของฉันในขณะที่ทำเทคนิคการจับเวลา / การเรียงลำดับบางอย่างเพื่อไม่เอาชนะโปรเซสเซอร์ (สมมติว่าแต่ละกระบวนการมีรันไทม์คงที่) อย่างไรก็ตามฉันรู้ว่ามันไม่ได้เป็นอย่างนั้นเสมอไปดังนั้นการใช้ "แบบขนาน" อย่างโซลูชันดูเหมือนจะเป็นวิธีที่ดีที่สุดในการรับเชลล์สคริปต์แบบมัลติเธรดโดยไม่ต้องเขียนโค้ดที่กำหนดเอง ในขณะที่ฉันคิดว่าจะใช้วิธีใดวิธีหนึ่งในการจัดการไฟล์เหล่านี้ (และทำให้ฉันสามารถจัดการคอร์ได้อย่างมีประสิทธิภาพ) พวกเขาทั้งหมดดูเหมือนแฮ็ค ฉันมีสิ่งที่ฉันคิดว่าเป็นกรณีการใช้งานที่ค่อนข้างง่ายดังนั้นฉันต้องการให้มันสะอาดที่สุดเท่าที่จะเป็นไปได้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม! ตัวอย่างไดเรกทอรีอินพุต: > ls -l input_files/ total 13355 location1.txt location2.txt location3.txt location4.txt location5.txt สคริปต์: > cat proces_script.sh #!/bin/sh customScript -c 33 -I -file [inputFile] -a -v 55 …


2
ถามรหัสผ่านในเชลล์ที่สอดคล้องกับ POSIX หรือไม่
เมื่อฉันต้องการขอรหัสผ่านในbashสคริปต์ฉันทำอย่างนั้น: read -s ... แต่เมื่อผมทำงานbashในโหมด POSIX กับshที่-sตัวเลือกที่ถูกปฏิเสธ: $ read -s sh: 1: read: Illegal option -s ฉันจะขออินพุตอย่างปลอดภัยด้วยคำสั่ง POSIX ได้อย่างไร

4
วิธีการดึงที่อยู่ IP ของผู้โจมตีที่เป็นไปได้ ssh?
ฉันเพิ่งcat /var/log/auth.logเข้าสู่ระบบและดูว่ามีหลาย| grep "Failed password for"ระเบียน อย่างไรก็ตามมีสองประเภทบันทึกที่เป็นไปได้ - สำหรับผู้ใช้ที่ถูกต้อง / ไม่ถูกต้อง มันทำให้ความพยายามของฉันยากขึ้นสำหรับ| cutพวกเขา ฉันต้องการจะดูสร้างรายการ (ไฟล์ข้อความ) พร้อมที่อยู่ IP ของผู้โจมตีที่เป็นไปได้และจำนวนครั้งสำหรับแต่ละที่อยู่ IP มีวิธีง่าย ๆ ในการสร้างหรือไม่ นอกจากนี้เกี่ยวกับssh: /var/log/auth.logฉันควรพิจารณาบันทึกทั้งหมดของรายการใดบ้างเมื่อทำรายการผู้โจมตีที่เป็นไปได้ ตัวอย่างของ 'auth.log' ของฉันด้วยตัวเลขที่ซ่อนอยู่: cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail ผลลัพธ์: Mar 11 11:11:11 vm11111 sshd[111]: Failed password …

4
ฉันควรเขียนโฟลเดอร์ใดให้กับไฟล์ระดับกลางของฉันในฐานะนักพัฒนา
ฉันเริ่มเขียนสคริปต์ทุบตีบางอย่างสำหรับโครงการของฉันและพวกเขาต้องการไฟล์กลางหรือตัวแปรที่จะเขียน ฉันต้องการทราบว่าโฟลเดอร์ใดที่ฉันสามารถมั่นใจได้ว่ามีสิทธิ์เข้าถึงเมื่อมีคนรันสคริปต์ของฉัน เป็นการใช้งานทั่วไป/tmp/หรือไม่? หรือฉันควรใช้อย่างอื่น?

4
วิธีรันกระบวนการแบบขนานและรวมเอาต์พุตเมื่อทั้งคู่เสร็จสิ้น
ฉันมีสคริปต์ทุบตีเปลือกที่ฉันท่อข้อมูลบางอย่างผ่านประมาณ 5 หรือ 6 โปรแกรมที่แตกต่างกันแล้วผลสุดท้ายเป็นไฟล์ที่คั่นด้วยแท็บ ฉันจะทำเช่นเดียวกันอีกครั้งสำหรับชุดข้อมูลที่คล้ายกันและส่งออกไปยังไฟล์ที่สอง จากนั้นไฟล์ทั้งสองจะถูกป้อนเข้าสู่โปรแกรมอื่นสำหรับการวิเคราะห์เปรียบเทียบ เช่นเพื่อลดความซับซ้อน Data1 | this | that |theother | grep |sed | awk |whatever > Data1Res.csv Data2 | this | that |theother | grep |sed | awk |whatever > Data2Res.csv AnalysisProg -i Data1res.csv Data2res.csv คำถามของฉันคือฉันจะทำให้ขั้นตอนที่ 1 และขั้นที่ 2 ในเวลาเดียวกัน (เช่นการใช้ &) แต่เปิดตัวเพียงขั้นตอนที่ 3 (AnalysisProg) …

4
สิ้นสุดการบันทึก sox เมื่อตรวจพบความเงียบ
ฉันกำลังเขียนสคริปต์ที่ใช้ sox เพื่อบันทึกการพูดของฉัน ตอนนี้ฉันต้องการทีมเพื่อรอจนกว่าจะตรวจจับเสียงก่อนที่จะเริ่มการบันทึกและฉันได้คิดออกว่า แต่ฉันยังต้องใช้ sox เพื่อออกเมื่อมีความเงียบอย่างน้อย 3 วินาที ตามที่เป็นอยู่ตอนนี้ฉันต้องฆ่า sox ด้วยตนเองเมื่อฉันพูดจบมิฉะนั้น sox จะรออีกครั้งจนกว่าฉันจะพูดเพิ่มอีกต่อท้ายไฟล์เอาต์พุต (นั่นไม่ใช่สิ่งที่ฉันต้องการ) นี่คือคำสั่งสำหรับการบันทึกที่ฉันใช้อยู่ตอนนี้: rec /tmp/recording.flac rate 32k silence 1 0.1 3% -1 3.0 3% อีกครั้งเพื่อให้ชัดเจน Sox ควรรอจนกว่าฉันจะเริ่มพูดคุยแล้วบันทึกจนกว่าฉันจะหยุดพูดจากนั้นโปรแกรม sox ควรจะออกจาก
16 scripting  audio  sox 

1
การสร้างแถบความคืบหน้าด้วย“ กล่องโต้ตอบ” จากเอาต์พุต rsync
ฉันกำลังมองหาวิธีในการกรอง / เปลี่ยนเส้นทาง rsync ในลักษณะที่สามารถป้อนไปยังคำสั่ง "dialog --gauge" ดังนั้นฉันสามารถดูแถบความคืบหน้าที่ดีในระหว่างการซิงค์ไฟล์ ขณะนี้ฉันเพิ่งทดสอบโดยตรงที่พร้อมท์ แต่ฉันวางแผนที่จะทำในเชลล์สคริปต์ (ทุบตี) ฉันดูรอบ ๆ อินเทอร์เน็ตและพบบิตและชิ้นส่วน แต่ฉันก็ยังขาดอะไรบางอย่างที่จะทำให้มันใช้งานได้ (ข้อจำกัดความรับผิดชอบ: นี่อาจเป็นวิธีที่ผิดโดยสิ้นเชิงและเป็นการเปลี่ยนเส้นทาง / การวางท่อที่น่าตกใจ) สิ่งที่ฉันได้รวบรวม: rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data | awk -f /home/user/rsync.awk | sed 's/\([0-9]*\).*/\1/' | dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70 ก่อนอื่นฉันมีคำสั่ง rsync …
16 linux  bash  scripting  awk  rsync 

6
ทรัพยากรออนไลน์ที่ดีสำหรับการเรียนรู้การเขียนสคริปต์เชลล์คืออะไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันสนใจที่จะเรียนรู้เชลล์สคริปต์อย่างสมบูรณ์ ใครสามารถแนะนำแหล่งข้อมูลออนไลน์ที่ดีได้บ้าง?


5
ฉันจะมีความเป็นไปได้มากกว่าหนึ่งรายการในกลุ่ม Shebang ของสคริปต์ได้อย่างไร
ฉันอยู่ในสถานการณ์ที่น่าสนใจเล็กน้อยซึ่งฉันมีสคริปต์ Python ที่สามารถเรียกใช้โดยผู้ใช้หลายคนที่มีสภาพแวดล้อมหลากหลาย (และ PATH) และในระบบ Linux ที่หลากหลาย ฉันต้องการให้สคริปต์นี้สามารถใช้งานได้กับสิ่งเหล่านี้ให้มากที่สุดโดยไม่มีข้อ จำกัด นี่คือการตั้งค่าที่รู้จักบางส่วน: Python 2.6 เป็นรุ่น Python ของระบบดังนั้น python, python2 และ python2.6 มีอยู่ใน / usr / bin (และเทียบเท่า) Python 2.6 เป็นรุ่น Python ของระบบดังกล่าวข้างต้น แต่ Python 2.7 ได้รับการติดตั้งไว้ข้างๆเป็น python2.7 Python 2.4 เป็นรุ่น Python ของระบบซึ่งสคริปต์ของฉันไม่รองรับ ใน / usr / bin เรามี python, python2 และ …
16 bash  scripting  python 

4
กำลังประมวลผลตัวแปร bash ด้วย sed
ตัวแปร bash LATLNG มีค่าละติจูดและลองจิจูดในวงเล็บเหลี่ยมเช่นนั้น (53.3096,-6.28396) ฉันต้องการแยกคำเหล่านี้เป็นตัวแปรที่เรียกว่า LAT และ LON ซึ่งฉันกำลังพยายามทำผ่านทาง sed เช่นนั้น LAT=$(sed "s/(\(.*\),\(.*\))/\1/g" "$LATLNG") LON=$(sed "s/(\(.*\),\(.*\))/\2/g" "$LATLNG") อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้: sed: can't read (53.3096,-6.28396): No such file or directory

8
Linux shell script: รันโปรแกรมเฉพาะในกรณีที่มีอยู่ให้เพิกเฉยหากไม่มีอยู่
ฉันกำลังเขียนโปรแกรมเชลล์สคริปต์ Linuxที่จะพิมพ์แบนเนอร์สถานะในระหว่างการดำเนินการเฉพาะเมื่อfigletมีการติดตั้งเครื่องมือที่เหมาะสม(นี่คือ: เข้าถึงได้บนเส้นทางของระบบ) ตัวอย่าง: #!/usr/bin/env bash echo "foo" figlet "Starting" echo "moo" figlet "Working" echo "foo moo" figlet "Finished" ฉันต้องการสำหรับสคริปต์ของฉันในการทำงานไม่มีข้อผิดพลาดแม้เมื่อfigletจะไม่ได้ติดตั้ง สิ่งที่อาจเป็นวิธีการปฏิบัติ ?

3
โทร Linux syscall จากภาษาสคริปต์
ฉันต้องการเรียก Linux syscall (หรืออย่างน้อย libc wrapper) โดยตรงจากภาษาสคริปต์ ฉันไม่สนใจภาษาสคริปต์ใด - เป็นสิ่งสำคัญที่จะไม่รวบรวม (เหตุผลโดยทั่วไปเกี่ยวกับการไม่ต้องการคอมไพเลอร์ในเส้นทางการพึ่งพา แต่นั่นไม่ใช่ที่นี่หรือที่นั่น) มีภาษาสคริปต์ (เชลล์, Python, Ruby, etc) ที่อนุญาตสิ่งนี้หรือไม่? โดยเฉพาะอย่างยิ่งมันเป็นsyscall สุ่ม

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