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

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

10
วิธีการต่อผลลัพธ์หลายบรรทัดเข้าด้วยกันเป็นหนึ่งบรรทัด?
ถ้าฉันรันคำสั่งcat file | grep patternฉันจะได้ผลลัพธ์หลายบรรทัด คุณต่อแถวทั้งหมดเป็นหนึ่งบรรทัดได้อย่างไรโดยแทนที่แต่ละบรรทัด"\n"ด้วย"\" "(ลงท้ายด้วย"ช่องว่าง) cat file | grep pattern | xargs sed s/\n/ /g ไม่ทำงานสำหรับฉัน
158 linux  bash  unix  grep  tr 

15
วิธีวนลูปผ่านไดเรคทอรีแบบวนซ้ำเพื่อลบไฟล์ที่มีนามสกุลบางอย่าง
ฉันต้องห่วงผ่านไดเรกทอรีซ้ำและลบไฟล์ทั้งหมดที่มีนามสกุลและ.pdf .docฉันจัดการวนลูปผ่านไดเรกทอรีซ้ำ แต่ไม่ได้จัดการเพื่อกรองไฟล์ด้วยนามสกุลไฟล์ที่กล่าวถึงข้างต้น รหัสของฉันจนถึงตอนนี้ #/bin/sh SEARCH_FOLDER="/tmp/*" for f in $SEARCH_FOLDER do if [ -d "$f" ] then for ff in $f/* do echo "Processing $ff" done else echo "Processing file $f" fi done ฉันต้องการความช่วยเหลือในการกรอกรหัสเนื่องจากฉันไม่ได้รับทุกที่
157 bash 

16
ลบทั้งหมดยกเว้นไฟล์ X ล่าสุดใน bash
มีวิธีที่ง่ายในสภาพแวดล้อมระบบปฏิบัติการยูนิกซ์สวยกับมาตรฐานทุบตีเพื่อเรียกใช้คำสั่งลบทั้งหมด แต่ส่วนใหญ่ไฟล์ X ล่าสุดจากไดเรกทอรีหรือไม่? หากต้องการยกตัวอย่างที่เป็นรูปธรรมมากขึ้นลองจินตนาการถึงงาน cron ที่เขียนไฟล์ (เช่นไฟล์บันทึกหรือการสำรองข้อมูล tar-ed up) ไปยังไดเรกทอรีทุกชั่วโมง ฉันต้องการวิธีที่จะให้งาน cron อื่นทำงานซึ่งจะลบไฟล์ที่เก่าที่สุดในไดเรกทอรีนั้นจนกว่าจะมีค่าน้อยกว่า 5 และเพียงแค่ต้องมีความชัดเจนมีเพียงหนึ่งแฟ้มปัจจุบันก็ไม่ควรจะถูกลบออก
157 bash  unix  scripting 

30
อะไรคือเคล็ดลับบรรทัดคำสั่งเดียวที่คุณโปรดปรานมากที่สุดโดยใช้ Bash [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน9 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เราทุกคนรู้วิธีใช้<ctrl>-Rเพื่อย้อนกลับการค้นหาผ่านประวัติ แต่คุณรู้หรือไม่ว่าคุณสามารถใช้<ctrl>-Sเพื่อส่งต่อการค้นหาถ้าคุณตั้งค่าstty stop ""? นอกจากนี้คุณเคยลองใช้การผูก -p เพื่อดูแป้นพิมพ์ลัดทั้งหมดในรายการหรือไม่ มีมากกว่า 455 สำหรับ Mac OS X โดยค่าเริ่มต้น อะไรคือเคล็ดลับที่คลุมเครือที่สุดที่คุณโปรดปรานแป้นพิมพ์ลัดหรือการกำหนดค่า shopt โดยใช้ bash?
156 bash  command-line 

17
ผู้ใช้รูท / เทียบเท่า sudo ใน Cygwin?
ฉันพยายามเรียกใช้สคริปต์ทุบตีใน Cygwin ฉันได้รับMust run as root, i.e. sudo ./scriptnameข้อผิดพลาด chmod 777 scriptname ไม่ทำอะไรเลยที่จะช่วย ฉันได้ค้นหาวิธีเลียนแบบ sudo บน Cygwin เพื่อเพิ่มผู้ใช้รูทตั้งแต่การเรียก "su" ทำให้เกิดข้อผิดพลาดsu: user root does not existสิ่งที่มีประโยชน์และไม่พบอะไรเลย ใครมีข้อเสนอแนะ?
156 bash  cygwin  root  sudo 

14
วิธีที่เร็วที่สุดในการย้ายเคอร์เซอร์บนบรรทัดคำสั่งปลายทาง?
เป็นวิธีที่ดีที่สุดในการย้ายไปรอบ ๆ ในบรรทัดคำสั่งยาวมากใน terminal คืออะไร? ว่าฉันใช้ปุ่มลูกศรหรือCtrl- Rเพื่อรับบรรทัดคำสั่งยาวนี้: ./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 …
156 bash  terminal  window 

2
ท่อทั้ง stdout และ stderr ในทุบตี?
ดูเหมือนว่าเวอร์ชั่นใหม่ของ bash จะมี&>โอเปอเรเตอร์ซึ่ง (ถ้าฉันเข้าใจถูกต้อง) ให้เปลี่ยนเส้นทางทั้ง stdout และ stderr ไปที่ไฟล์ (ต่อ&>>ท้ายไฟล์แทนเช่นเอเดรียนชี้แจง) อะไรคือวิธีที่ง่ายที่สุดในการบรรลุสิ่งเดียวกัน แต่แทนที่จะส่งไปยังคำสั่งอื่น ตัวอย่างเช่นในบรรทัดนี้: cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError ฉันต้องการให้ grep จับคู่กับเนื้อหาทั้งใน stdout และ stderr (มีประสิทธิภาพรวมเข้ากับสตรีมเดียว) หมายเหตุ : คำถามนี้ถามเกี่ยวกับการวางท่อไม่ใช่การเปลี่ยนเส้นทาง - ดังนั้นจึงไม่ใช่คำถามที่ซ้ำกันซึ่งปัจจุบันถูกทำเครื่องหมายว่าซ้ำซ้อน
156 bash  stdout  stderr  piping 

9
ตรวจสอบว่าผ่านการโต้แย้งเป็นไฟล์หรือไดเรกทอรีใน Bash
ฉันพยายามเขียนสคริปต์อย่างง่าย ๆ ใน Ubuntu ซึ่งจะทำให้ฉันสามารถส่งผ่านชื่อไฟล์หรือไดเรกทอรีและสามารถทำสิ่งที่เฉพาะเจาะจงเมื่อเป็นไฟล์และอย่างอื่นเมื่อเป็นไดเรกทอรี ปัญหาที่ฉันมีคือเมื่อชื่อไดเรกทอรีหรือไฟล์อาจมีช่องว่างหรือตัวอักษรที่สามารถหลีกเลี่ยงได้อยู่ในชื่อ นี่คือรหัสพื้นฐานของฉันด้านล่างและการทดสอบสองสามข้อ #!/bin/bash PASSED=$1 if [ -d "${PASSED}" ] ; then echo "$PASSED is a directory"; else if [ -f "${PASSED}" ]; then echo "${PASSED} is a file"; else echo "${PASSED} is not valid"; exit 1 fi fi และนี่คือผลลัพธ์: andy@server~ $ ./scripts/testmove.sh /home/andy/ /home/andy/ is …
156 bash  shell 

17
จะเปรียบเทียบตัวเลขทศนิยมสองตัวใน Bash ได้อย่างไร
ฉันพยายามอย่างหนักเพื่อเปรียบเทียบตัวเลขทศนิยมสองจำนวนภายในสคริปต์ทุบตี ฉันต้องเปลี่ยนตัวแปรเช่น let num1=3.17648e-22 let num2=1.5 ตอนนี้ฉันแค่ต้องการเปรียบเทียบตัวเลขสองตัวนี้ง่ายๆ: st=`echo "$num1 < $num2" | bc` if [ $st -eq 1]; then echo -e "$num1 < $num2" else echo -e "$num1 >= $num2" fi น่าเสียดายที่ฉันมีปัญหากับการใช้ num1 ที่เหมาะสมซึ่งอาจเป็น "รูปแบบ e" :( ความช่วยเหลือใด ๆ คำแนะนำยินดีต้อนรับ!

6
วิธีการป้องกัน rm จากการรายงานว่าไม่พบไฟล์?
ฉันใช้rmสคริปต์ BASH เพื่อลบไฟล์จำนวนมาก บางครั้งไฟล์ไม่มีอยู่ดังนั้นจึงรายงานข้อผิดพลาดมากมาย ฉันไม่ต้องการข้อความนี้ ฉันค้นหาหน้าคนเพื่อหาคำสั่งให้rmเงียบ แต่มีเพียงตัวเลือกเดียวที่ฉันพบคือ-fจากคำอธิบายว่า "ไม่ต้องสนใจไฟล์ที่ไม่มีอยู่ไม่พร้อมรับคำ" ดูเหมือนจะเป็นตัวเลือกที่ถูกต้อง แต่ชื่อดูเหมือนจะไม่พอดี ดังนั้นฉันกังวลว่าอาจมีผลกระทบที่ไม่ตั้งใจ เป็น-fตัวเลือกวิธีที่ถูกต้องที่จะเงียบrm? ทำไมไม่ได้เรียกว่า-q? ตัวเลือกนี้จะทำอะไรอีกหรือไม่
155 bash  rm 

14
ย้ายไฟล์ทั้งหมดยกเว้นหนึ่งไฟล์
ฉันจะย้ายไฟล์ทั้งหมดยกเว้นหนึ่งไฟล์ได้อย่างไร ฉันกำลังมองหาบางสิ่งที่ชอบ: 'mv ~/Linux/Old/!Tux.png ~/Linux/New/' ที่ผมย้ายสิ่งเก่าที่จะ -folder Tux.pngสิ่งใหม่ยกเว้น ! -sign แสดงถึงการปฏิเสธ มีเครื่องมือสำหรับงานบ้างไหม?
155 linux  bash  glob 

4
ปัญหา shell init เมื่อคลิกที่แท็บมีอะไรผิดพลาดกับ getcwd?
เมื่อฉันคลิก Tab ที่ bash ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นเกิดอะไรขึ้น symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success symlink-hook: error retrieving current directory: getcwd: cannot access …
153 linux  bash  shell  pwd  getcwd 

6
ค้นหาไฟล์ที่มีข้อความที่กำหนด
ใน bash ฉันต้องการส่งคืนชื่อไฟล์ (และพา ธ ไปยังไฟล์) สำหรับไฟล์ทุกประเภท.php|.html|.jsที่มีสตริงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่"document.cookie" | "setcookie" ฉันจะทำอย่างไร
153 bash  find 

11
แสดงรายการไฟล์ที่มีนามสกุลเฉพาะด้วย ls และ grep
ฉันต้องการรับไฟล์จาก dir ปัจจุบันและส่งออกเฉพาะ. mp4 ไฟล์. mp3.mp3 เท่านั้น ดังนั้นฉันคิดว่าฉันสามารถทำได้: ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$ แต่ไม่เพราะ grep ตัวแรกจะออกมาเพียงแค่ mp4 เท่านั้นส่วนอีก 2 grep จะไม่ถูกใช้งาน ความคิดใด ๆ PS, รันสคริปต์นี้บน Slow Leopard
153 bash  shell  macos  grep 

11
เหตุใดข้อผิดพลาดของ cURL ส่งคืนข้อผิดพลาด“ (23) เนื้อความการเขียนล้มเหลว”
มันทำงานได้ดีเป็นเครื่องมือเดียว: curl "someURL" curl -o - "someURL" แต่มันไม่ทำงานในขั้นตอน: curl "someURL" | tr -d '\n' curl -o - "someURL" | tr -d '\n' มันกลับมา: (23) Failed writing body ปัญหาในการไพพ์เอาต์พุต cURL คืออะไร วิธีบัฟเฟอร์เอาต์พุต cURL ทั้งหมดจากนั้นจัดการ?
153 macos  bash  curl  osx-lion  pipe 

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