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

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

20
วิธีการรวมชื่อไฟล์หลายบรรทัดเป็นหนึ่งเดียวด้วยตัวคั่นที่กำหนดเองได้อย่างไร
ฉันต้องการที่จะเข้าร่วมผลลัพธ์ของการls -1เป็นหนึ่งบรรทัดและคั่นด้วยสิ่งที่ฉันต้องการ มีคำสั่ง Linux มาตรฐานที่ฉันสามารถใช้เพื่อให้บรรลุนี้
441 linux  bash  shell  parsing  merge 

10
ค้นหาไฟล์ที่มีนามสกุลเฉพาะซ้ำ ๆ
ฉันพยายามค้นหาไฟล์ทั้งหมดที่มีนามสกุลเฉพาะในไดเรกทอรีและไดเรกทอรีย่อยด้วยทุบตีของฉัน (ล่าสุด Ubuntu LTS Release) นี่คือสิ่งที่เขียนในไฟล์สคริปต์: #!/bin/bash directory="/home/flip/Desktop" suffix="in" browsefolders () for i in "$1"/*; do echo "dir :$directory" echo "filename: $i" # echo ${i#*.} extension=`echo "$i" | cut -d'.' -f2` echo "Erweiterung $extension" if [ -f "$i" ]; then if [ $extension == $suffix ]; then echo "$i ends …
437 linux  bash  recursion 

9
การยกเลิกเชลล์สคริปต์หากคำสั่งใดส่งคืนค่าที่ไม่ใช่ศูนย์
ฉันมีสคริปต์เชลล์ Bash ที่เรียกใช้คำสั่งจำนวนมาก ฉันต้องการให้เชลล์สคริปต์ออกโดยอัตโนมัติด้วยค่าส่งคืน 1 หากคำสั่งใด ๆ ส่งคืนค่าที่ไม่เป็นศูนย์ เป็นไปได้โดยไม่ตรวจสอบผลลัพธ์ของแต่ละคำสั่งอย่างชัดเจนหรือไม่ เช่น dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi
437 linux  bash  unix  shell 

23
Git Bash ช้ามากใน Windows 7 x64
ฉันใช้ Git ทั้ง Windows และ Ubuntu ในระหว่างการพัฒนาโครงการขนาดเล็กพลิกกลับไปกลับมาระหว่างสองโครงการบ่อยครั้ง ปัญหาคือGit Bashช้าลงเรื่อย ๆ เมื่อฉันพูดช้าฉันหมายความว่าการวิ่งcdจะใช้เวลาจาก 8-25 วินาทีการรันgitคำสั่งนั้นใช้เวลา 5-20 วินาทีและlsบางครั้งอาจใช้เวลาสูงสุด 30 วินาที ไม่จำเป็นต้องพูดแบบนี้ไม่สนุกไม่ต้องพูดถึงไม่ก่อผล ฉันรู้ว่า Git ช้าลงใน Windows แต่นี่มันไร้สาระ วิธีแก้ปัญหาเดียวที่ใช้งานได้ชั่วคราวสำหรับฉันคือปิดการเชื่อมต่อเครือข่ายของฉัน (ตามที่แนะนำในคำตอบนี้ ) เริ่ม Git Bash แล้วเชื่อมต่อใหม่ บางครั้งมันยังคงทำงานได้อย่างรวดเร็วเป็นเวลาหลายวันหลังจากทำเช่นนั้น แต่ประสิทธิภาพจะลดลงในที่สุด ฉันสืบค้นผ่านกลุ่มสนทนา msysgit, Stack Overflow, รายการปัญหา msysgit และอื่น ๆ เป็นเวลานานหลายสัปดาห์ แต่ฉันไม่สามารถเปิดโซลูชันที่ใช้งานได้ จนถึงตอนนี้ฉันได้ลองแล้ว: การเพิ่มโฟลเดอร์ Git & โครงการในรายการยกเว้นของโปรแกรมสแกนไวรัส ปิดการใช้งานโปรแกรมสแกนไวรัสของฉันอย่างสมบูรณ์ (Kaspersky IS …
435 git  bash  windows-7  msysgit  mingw32 

11
ค้นหา -exec ที่มีหลายคำสั่ง
ฉันกำลังพยายามใช้ find -exec ที่มีหลายคำสั่งโดยไม่ประสบความสำเร็จ ใครบ้างรู้ว่าคำสั่งดังต่อไปนี้เป็นไปได้? find *.txt -exec echo "$(tail -1 '{}'),$(ls '{}')" \; โดยทั่วไปฉันพยายามพิมพ์บรรทัดสุดท้ายของแต่ละไฟล์ txt ในไดเรกทอรีปัจจุบันและพิมพ์ที่ท้ายบรรทัดชื่อคอมม่าตามด้วยชื่อไฟล์
429 bash  find 


8
ความยาวของสตริงเป็นทุบตี
คุณจะรับความยาวของสตริงที่เก็บไว้ในตัวแปรและกำหนดให้กับตัวแปรอื่นได้อย่างไร myvar="some string" echo ${#myvar} # 11 คุณจะตั้งค่าตัวแปรอื่นเป็นเอาต์พุตได้11อย่างไร

13
วิธีการเรียงลำดับเลขจำนวนเต็มเป็นศูนย์ใน bash เพื่อให้ทุกคนมีความกว้างเท่ากัน?
ฉันต้องวนค่าบางอย่าง for i in $(seq $first $last) do does something here done สำหรับ$firstและ$lastฉันต้องการให้เป็นความยาวคงที่ 5 ดังนั้นถ้าใส่เป็นฉันจำเป็นต้องเพิ่มศูนย์ในหน้าดังกล่าวว่ามันจะกลายเป็น1 00001มันวน99999ซ้ำจนกระทั่งตัวอย่าง แต่ความยาวต้องเท่ากับ 5 ตัวอย่าง: 00002, 00042, 00212, 012312และอื่น ๆ มีความคิดเกี่ยวกับวิธีที่ฉันจะทำเช่นนั้น?
426 bash  numbers  padding 

10
วิธีรับรหัสผ่านจากเชลล์สคริปต์โดยไม่ต้องสะท้อน
ฉันมีสคริปต์ที่ทำให้กระบวนการที่ต้องการเข้าถึงระบบป้องกันด้วยรหัสผ่านโดยอัตโนมัติ ระบบสามารถเข้าถึงได้ผ่านโปรแกรมบรรทัดคำสั่งที่ยอมรับรหัสผ่านผู้ใช้เป็นอาร์กิวเมนต์ ฉันต้องการให้ผู้ใช้พิมพ์รหัสผ่านกำหนดให้กับตัวแปร shell จากนั้นใช้ตัวแปรนั้นเพื่อสร้างบรรทัดคำสั่งของโปรแกรมที่เข้าถึง (ซึ่งแน่นอนจะสร้างเอาต์พุตสตรีมที่ฉันจะประมวลผล) ฉันเป็นโปรแกรมเมอร์เชลล์ที่มีความสามารถพอสมควรใน Bourne / Bash แต่ฉันไม่รู้วิธีรับอินพุตของผู้ใช้โดยไม่ต้องสะท้อนไปยังเทอร์มินัล มีใครช่วยได้บ้าง
424 bash  shell  scripting  sh 

15
ไพพ์เอาต์พุตและสถานะการดักจับใน Bash
ฉันต้องการรันคำสั่งที่รันเป็นเวลานานใน Bash และทั้งคู่ก็จับสถานะทางออกของมันและเอาท์พุทของมันที ดังนั้นฉันทำสิ่งนี้: command | tee out.txt ST=$? ปัญหาคือตัวแปร ST รวบรวมสถานะการออกของteeและไม่ใช่คำสั่ง ฉันจะแก้ปัญหานี้ได้อย่างไร โปรดทราบว่าคำสั่งนั้นใช้เวลานานและการเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์เพื่อดูในภายหลังไม่ใช่วิธีแก้ปัญหาที่ดีสำหรับฉัน


30
จะเพิ่มแถบความคืบหน้าลงในเชลล์สคริปต์ได้อย่างไร?
เมื่อสคริปต์ใน bash หรือเชลล์อื่น ๆ ใน * NIX ในขณะที่รันคำสั่งที่จะใช้เวลานานกว่าสองสามวินาทีแถบความคืบหน้าเป็นสิ่งจำเป็น ตัวอย่างเช่นการคัดลอกไฟล์ขนาดใหญ่เปิดไฟล์ tar ขนาดใหญ่ คุณแนะนำวิธีการเพิ่มแถบความคืบหน้าให้กับเชลล์สคริปต์?
413 bash  shell  zsh 

30
การใช้ getopts เพื่อประมวลผลตัวเลือกบรรทัดคำสั่งแบบยาวและแบบสั้น
ฉันต้องการที่จะเรียกใช้ตัวเลือกบรรทัดคำสั่งแบบยาวและสั้นโดยใช้เชลล์สคริปต์ของฉัน ฉันรู้ว่าgetoptsสามารถใช้ได้ แต่เหมือนใน Perl ฉันไม่สามารถทำเช่นเดียวกันกับเชลล์ได้ ความคิดเห็นใด ๆ เกี่ยวกับวิธีการทำสิ่งนี้เพื่อให้ฉันสามารถใช้ตัวเลือกเช่น: ./shell.sh --copyfile abc.pl /tmp/ ./shell.sh -c abc.pl /tmp/ ในข้างต้นคำสั่งทั้งสองมีความหมายเหมือนกับเชลล์ของฉัน แต่การใช้getoptsฉันไม่สามารถใช้สิ่งเหล่านี้ได้หรือไม่

9
สตริงหลายบรรทัดพร้อมพื้นที่เพิ่มเติม (เยื้องที่สงวนไว้)
ฉันต้องการที่จะเขียนข้อความที่กำหนดไว้ล่วงหน้าบางส่วนลงในไฟล์ที่มีต่อไปนี้: text="this is line one\n this is line two\n this is line three" echo -e $text > filename ฉันคาดหวังอะไรแบบนี้: this is line one this is line two this is line three แต่ได้สิ่งนี้: this is line one this is line two this is line three ฉันคิดว่าไม่มีที่ว่างหลังจากแต่ละ\nอัน แต่พื้นที่พิเศษจะออกมาได้อย่างไร
409 string  bash  shell  echo 

10
รับเวลาดำเนินการโปรแกรมในเชลล์
ฉันต้องการดำเนินการบางอย่างใน linux shell ภายใต้เงื่อนไขที่แตกต่างกันเล็กน้อยและสามารถส่งออกเวลาดำเนินการของการดำเนินการแต่ละครั้ง ฉันรู้ว่าฉันสามารถเขียนสคริปต์ Perl หรือหลามที่จะทำเช่นนี้ แต่มีวิธีที่ฉันสามารถทำได้ในเปลือก? (ซึ่งเกิดขึ้นจะทุบตี)
407 linux  bash  shell 

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