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

สำหรับคำถามเกี่ยวกับสคริปต์ที่เขียนขึ้นสำหรับเชลล์คำสั่ง Bash สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาด / ข้อผิดพลาดทางไวยากรณ์โปรดตรวจสอบด้วยโปรแกรม shellcheck (หรือในเซิร์ฟเวอร์ shellcheck เว็บที่ https://shellcheck.net) ก่อนโพสต์ที่นี่ คำถามเกี่ยวกับการใช้งานอินเทอร์แอคทีฟของ Bash นั้นมีแนวโน้มที่จะอยู่ในหัวข้อของผู้ใช้ขั้นสูงมากกว่าในสแต็คโอเวอร์โฟลว์


10
find: อาร์กิวเมนต์ที่ขาดหายไปถึง -exec
ฉันได้รับความช่วยเหลือในวันนี้ด้วยคำสั่ง แต่ดูเหมือนจะไม่ทำงาน นี่คือคำสั่ง: find /home/me/download/ -type f -name "*.rm" -exec ffmpeg -i {} -sameq {}.mp3 && rm {}\; เชลล์ส่งคืน find: missing argument to `-exec' สิ่งที่ฉันพยายามทำโดยทั่วไปคือไปที่ไดเรกทอรีซ้ำ (ถ้ามีไดเรกทอรีอื่น) และเรียกใช้คำสั่ง ffmpeg กับ.rmประเภทไฟล์และแปลงเป็น.mp3ประเภทไฟล์ เมื่อเสร็จแล้วให้ลบ.rmไฟล์ที่เพิ่งถูกแปลง ฉันขอขอบคุณความช่วยเหลือในเรื่องนี้
206 bash  shell  find  arguments  exec 

18
คำสั่ง unix ด่วนเพื่อแสดงบรรทัดเฉพาะกลางไฟล์?
การพยายามแก้ไขข้อบกพร่องของเซิร์ฟเวอร์และไฟล์บันทึกของฉันเพียงไฟล์เดียวคือไฟล์บันทึก 20GB (โดยไม่มีการประทับเวลาแม้แต่คนใช้System.out.println()การบันทึกในการผลิตทำไม?) เมื่อใช้ grep ฉันพบพื้นที่ของไฟล์ที่ฉันต้องการดูบรรทัด 347340107 นอกเหนือจากการทำสิ่งที่ชอบ head -<$LINENUM + 10> filename | tail -20 ... ซึ่งจะต้องheadอ่าน 347 ล้านบรรทัดแรกของไฟล์บันทึกมีคำสั่งที่ง่ายและรวดเร็วที่จะถ่ายโอนข้อมูลบรรทัด 347340100 - 347340200 (ตัวอย่าง) ไปยังคอนโซลหรือไม่ อัปเดตฉันลืมไปเลยว่า grep สามารถพิมพ์บริบทรอบ ๆ การแข่งขัน ... ได้ผลดี ขอบคุณ!
206 linux  bash  unix  text 

5
การอ่านสตริงที่มีการคั่นลงในอาร์เรย์ใน Bash
ฉันมีตัวแปรที่มีสตริงคั่นด้วยช่องว่าง: line="1 1.50 string" ฉันต้องการแยกสตริงนั้นด้วยช่องว่างเป็นตัวคั่นและเก็บผลลัพธ์ไว้ในอาร์เรย์ดังนั้นต่อไปนี้: echo ${arr[0]} echo ${arr[1]} echo ${arr[2]} เอาท์พุท 1 1.50 string บางแห่งฉันพบวิธีแก้ปัญหาที่ใช้งานไม่ได้: arr=$(echo ${line}) ถ้าฉันใช้คำสั่ง echo ข้างต้นหลังจากนี้ฉันจะได้รับ: 1 1.50 string [empty line] [empty line] ฉันก็ลอง IFS=" " arr=$(echo ${line}) ด้วยผลลัพธ์เดียวกัน มีคนช่วยได้ไหม
206 arrays  string  bash  shell 

3
Ubuntu บอกว่า“ bash: ./program ปฏิเสธการอนุญาต” [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ผมใช้ Ubuntu บนเครื่องคอมพิวเตอร์ 1 เครื่องและคอมพิวเตอร์ 2. ฉันรวบรวมโปรแกรม C ++ ได้บนเครื่องคอมพิวเตอร์ 1 ./program_nameและฉันสามารถดำเนินการได้จากท่าเรือโดยใช้ มันทำงานได้ดี อย่างไรก็ตามเมื่อฉันพยายามทำสิ่งนี้บนคอมพิวเตอร์ 2 มันบอกว่า: bash: ./program_name: permission denied มีอะไรผิดปกติและฉันควรทำอย่างไร
206 bash  shell  sh 

7
ต้องใช้อักขระใดบ้างเมื่อใช้ Bash
มีรายการที่ครอบคลุมของตัวละครที่ต้องหลบหนีใน Bash หรือไม่? สามารถตรวจสอบได้ด้วยsedหรือไม่ โดยเฉพาะอย่างยิ่งฉันกำลังตรวจสอบว่า%จำเป็นต้องหลบหนีหรือไม่ ฉันเหนื่อย echo "h%h" | sed 's/%/i/g' %และทำงานได้ดีโดยไม่ต้องหลบหนี มันหมายความว่า%ไม่จำเป็นต้องหลบหนี? นี่เป็นวิธีที่ดีในการตรวจสอบความจำเป็นหรือไม่? และอื่น ๆ โดยทั่วไป: พวกเขาเป็นตัวละครเดียวที่จะหลบหนีในshellและbash?

15
อ่านค่าลงในตัวแปรเชลล์จากไพพ์
ฉันพยายามรับทุบตีเพื่อประมวลผลข้อมูลจาก stdin ที่ได้รับการประปา แต่ไม่โชคดี สิ่งที่ฉันหมายถึงคือไม่มีงานต่อไปนี้: echo "hello world" | test=($(< /dev/stdin)); echo test=$test test= echo "hello world" | read test; echo test=$test test= echo "hello world" | test=`cat`; echo test=$test test= test=hello worldที่ฉันต้องการที่จะออก ฉันได้ลองใส่เครื่องหมายคำพูดรอบ ๆ"$test"ที่ไม่ได้ผล
205 linux  bash  pipe 

3
วิธีการเลิกทำผลของ "set -e" ซึ่งทำให้ bash exit ทันทีหากคำสั่งใดล้มเหลว
หลังจากป้อนset -eในเชลล์ทุบตีแบบโต้ตอบแล้วทุบตีจะออกทันทีถ้าคำสั่งใด ๆ ออกโดยไม่มีศูนย์ ฉันจะยกเลิกผลกระทบนี้ได้อย่างไร
205 bash  exit 




5
ตรวจสอบว่าสตริงตรงกับ regex ใน Bash script หรือไม่
หนึ่งในข้อโต้แย้งที่สคริปต์ของฉันได้รับคือวันที่ในรูปแบบต่อไปนี้: yyyymmddหนึ่งของการขัดแย้งที่สคริปต์ของฉันได้รับคือวันในรูปแบบต่อไปนี้: ฉันต้องการตรวจสอบว่าฉันได้รับวันที่ถูกต้องเป็นอินพุตหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันพยายามใช้ regex เช่น:[0-9]\{\8}
204 regex  bash  shell  scripting 

10
จะรับรหัสกระบวนการเพื่อฆ่ากระบวนการ nohup ได้อย่างไร
ฉันกำลังเรียกใช้กระบวนการ nohup บนเซิร์ฟเวอร์ เมื่อฉันพยายามที่จะฆ่ามันคอนโซล putty ของฉันจะปิดแทน นี่คือวิธีที่ฉันพยายามค้นหา ID กระบวนการ: ps -ef |grep nohup นี่คือคำสั่งให้ฆ่า kill -9 1787 787
204 linux  bash  grep  nohup 

5
Bash: คำสั่ง If / Else ในหนึ่งบรรทัด
ฉันพยายามตรวจสอบว่ากระบวนการ (สมมติว่าเรียกว่าsome_process) กำลังทำงานบนเซิร์ฟเวอร์หรือไม่ ถ้าเป็นเช่นนั้นสะท้อน 1 หรือมิฉะนั้นสะท้อน 0 นี่คือคำสั่งที่ฉันใช้ แต่ใช้งานได้เพียงบางส่วนเท่านั้น (ข้อมูลเพิ่มเติมด้านล่าง) โปรดทราบว่าฉันต้องเขียนสคริปต์ในหนึ่งบรรทัด ps aux | grep some_proces[s] > /tmp/test.txt && if [ $? -eq 0 ]; then echo 1; else echo 0; fi หมายเหตุ:การ[s]ในsome_proces[s]คือการป้องกันไม่ให้grepกลับมาเอง หากsome_processกำลังทำงานอยู่"1"จะได้รับเสียงสะท้อนซึ่งไม่เป็นไร อย่างไรก็ตามหากsome_processไม่ได้ใช้งานจะไม่มีสิ่งใดสะท้อนกลับมา
204 bash 


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