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

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

9
Bash การเติมข้อความอัตโนมัติในโหมดเชลล์ Emacs
ใน GNOME Terminal Bash จะทำการเติมข้อความอัตโนมัติอย่างชาญฉลาด ตัวอย่างเช่น apt-get in<TAB> กลายเป็น apt-get install ในโหมดเชลล์ Emacs การเติมอัตโนมัตินี้จะไม่ทำงานแม้ว่าฉันจะระบุแหล่งที่มาอย่างชัดเจน/etc/bash_completionก็ตาม ตัวอย่างด้านบนยึดเป็นinหรือเติมข้อความอัตโนมัติด้วยชื่อไฟล์ในไดเร็กทอรีปัจจุบันแทนที่จะเป็นapt-getตัวเลือกคำสั่งที่ถูกต้อง สันนิษฐานว่าเป็นเพราะ Emacs ขัดขวางการกดแป้น Tab ฉันจะเปิดใช้งานการเติมข้อความอัตโนมัติอย่างชาญฉลาดได้shell-modeอย่างไร?

14
ฉันจะรับค่าเฉพาะจากอาร์เรย์ใน Bash ได้อย่างไร
ฉันมีเกือบคำถามเดียวกับที่นี่ ฉันมีอาร์เรย์ที่มีaa ab aa ac aa adฯลฯ ตอนนี้ฉันต้องการเลือกองค์ประกอบเฉพาะทั้งหมดจากอาร์เรย์นี้ คิดว่านี่จะเป็นเรื่องง่ายโดยมีsort | uniqหรือsort -uที่พวกเขากล่าวถึงในคำถามอื่น ๆ นั้น แต่ไม่มีอะไรเปลี่ยนแปลงในอาร์เรย์ ... รหัสคือ: echo `echo "${ids[@]}" | sort | uniq` ผมทำอะไรผิดหรือเปล่า?
93 linux  arrays  bash  unique 

9
คุณจะค้นหาผู้ใช้ดั้งเดิมผ่านคำสั่ง sudo และ su หลายคำสั่งได้อย่างไร
เมื่อเรียกใช้สคริปต์ผ่าน sudo หรือ su ฉันต้องการรับผู้ใช้ดั้งเดิม นี้ควรจะเกิดขึ้นโดยไม่คำนึงถึงหลาย ๆsudoหรือsuทำงานภายในของแต่ละอื่น ๆ sudo su -และโดยเฉพาะ
93 linux  bash  unix  sudo  su 

5
จะใช้ AWS S3 CLI เพื่อถ่ายโอนไฟล์ไปยัง stdout ใน BASH ได้อย่างไร
ฉันเริ่มสคริปต์ทุบตีซึ่งจะใช้เส้นทางใน S3 (ตามที่ระบุไปยังคำสั่ง lsคำสั่ง) stdoutและการถ่ายโอนเนื้อหาของทั้งหมดของวัตถุไฟล์เพื่อ โดยเฉพาะอย่างยิ่งผมอยากที่จะทำซ้ำcat /path/to/files/*ยกเว้น S3 s3cat '/bucket/path/to/files/*'เช่น ความชอบแรกของฉันมองไปที่ตัวเลือกคือการใช้cpคำสั่งไปยังแฟ้มชั่วคราวแล้วcatว่า มีใครลองสิ่งนี้หรือคล้ายกันหรือมีคำสั่งที่ฉันไม่พบคำสั่งใดบ้าง

3
เทียบเท่า rm และ mv ใน windows .cmd
ฉันมีสิ่งต่อไปนี้ในเชลล์สคริปต์ฉันต้องการแปลงบรรทัดต่อไปนี้เป็นไฟล์ windows cmd .. ใครก็ได้ให้อินพุตว่าอะไรเทียบเท่าสำหรับ "rm" และ "mv" ในไฟล์ windows cmd rm -f ${BUILD_ID}/${BUILD_ASIC}*rampatch* mv ${BUILD_ID}/${BUILD_ASIC}*rampatch* ${BUILD_ID}/emul/
93 bash  shell  cmd 

8
ฉันจะเก็บผลลัพธ์คำสั่ง“ find” เป็นอาร์เรย์ใน Bash ได้อย่างไร
ฉันพยายามบันทึกผลลัพธ์จากfindas arrays นี่คือรหัสของฉัน: #!/bin/bash echo "input : " read input echo "searching file with this pattern '${input}' under present directory" array=`find . -name ${input}` len=${#array[*]} echo "found : ${len}" i=0 while [ $i -lt $len ] do echo ${array[$i]} let i++ done ฉันได้รับ 2 ไฟล์. txt ภายใต้ไดเร็กทอรีปัจจุบัน ดังนั้นผมจึงคาดหวังที่ '2' ${len}เป็นผลมาจาก …
93 arrays  bash  variables  find 


3
วิธีดูไฟล์และโครงสร้างไฟล์ในแอพ Heroku ที่ปรับใช้
แอปไคลเอนต์ของฉันที่ติดตั้งบน Heroku อนุญาตให้ผู้ใช้อัปโหลดภาพไปยัง Heroku ฉันต้องการทดสอบการเปลี่ยนแปลงที่ฉันทำเพื่อลบภาพดังนั้นฉันจึงต้องการวิธีดูสถานะของโครงสร้างโฟลเดอร์บน Heroku เพื่อให้แน่ใจว่าภาพถูกลบออกจากระบบไฟล์เรียบร้อยแล้ว ฉันเหนื่อย - $ heroku run bash --app <appName> ~$ pwd ~$ cd <path to images folder> แต่ฉันเห็นเฉพาะภาพที่ฉันอัปโหลดพร้อมกับแอปที่นี่ไม่ใช่สิ่งที่อัปโหลดผ่านแอปไคลเอ็นต์ ผมทำอะไรผิดหรือเปล่า?
93 bash  heroku 

12
การค้นหาไดเรกทอรีว่าง UNIX
ฉันต้องการค้นหาไดเร็กทอรีว่างสำหรับรายการไดเร็กทอรีที่กำหนด บางไดเร็กทอรีมีไดเร็กทอรีอยู่ภายใน หากไดเรกทอรีภายในว่างเปล่าฉันสามารถพูดได้ว่าไดเรกทอรีหลักว่างเปล่ามิฉะนั้นจะไม่ว่างเปล่า ฉันจะทดสอบสิ่งนี้ได้อย่างไร? ตัวอย่างเช่น: A>A1(file1),A2 this is not empty beacuse of file1 B>B1(no file) this is empty C>C1,C2 this is empty
92 bash  unix  directory 

5
จำลอง Bash 'source' ใน Python
ฉันมีสคริปต์ที่มีลักษณะดังนี้: export foo=/tmp/foo export bar=/tmp/bar ทุกครั้งที่สร้างฉันจะเรียกใช้ 'source init_env' (โดยที่ init_env เป็นสคริปต์ด้านบน) เพื่อตั้งค่าตัวแปรบางตัว เพื่อให้บรรลุสิ่งเดียวกันใน Python ฉันมีรหัสนี้ทำงานอยู่ reg = re.compile('export (?P<name>\w+)(\=(?P<value>.+))*') for line in open(file): m = reg.match(line) if m: name = m.group('name') value = '' if m.group('value'): value = m.group('value') os.putenv(name, value) แต่แล้วมีคนตัดสินใจว่าจะเป็นการดีที่จะเพิ่มบรรทัดต่อไปนี้ลงในinit_envไฟล์: export PATH="/foo/bar:/bar/foo:$PATH" เห็นได้ชัดว่าสคริปต์ Python ของฉันพังทลาย ฉันสามารถแก้ไขสคริปต์ Python เพื่อจัดการกับบรรทัดนี้ …
92 python  bash 

2
วิธีที่ง่ายที่สุดในการแทนที่ช่องว่างสีขาวด้วย (ขีดล่าง) _ ใน bash [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน11 ปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันต้องเขียนสคริปต์เล็กน้อยที่แยกวิเคราะห์ VM ใน XenServer และเนื่องจากชื่อของ VM ส่วนใหญ่มีช่องว่างสีขาวเช่น Windows XP หรือ Windows Server 2008 ฉันจึงต้องตัดช่องว่างสีขาวเหล่านั้นและแทนที่ด้วยเครื่องหมายขีดล่าง _ ฉันพบวิธีง่ายๆในการทำสิ่งนี้โดยใช้ sed ซึ่งเป็นเครื่องมือที่ยอดเยี่ยมเมื่อพูดถึงการจัดการสตริง echo "This is just a test" | sed -e 's/ /_/g' ผลตอบแทน This_is_just_a_test มีวิธีอื่นในการทำให้สำเร็จหรือไม่?
92 bash  sed 

5
อะไรขยายไปยังไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันแบบวนซ้ำ
ฉันรู้ว่า**/*.extขยายไปยังไฟล์ทั้งหมดในไดเร็กทอรีย่อยทั้งหมดที่ตรงกัน*.extแต่ส่วนขยายที่คล้ายกันที่รวมไฟล์ดังกล่าวทั้งหมดในไดเร็กทอรีปัจจุบันด้วยคืออะไร
92 bash  shell  wildcard  glob  shopt 

5
envsubst: ไม่พบคำสั่งบน Mac OS X 10.8
เมื่อฉันพยายามเรียกใช้สคริปต์ที่มีคำสั่ง envsubst ฉันได้รับข้อผิดพลาดนี้ เมื่อดูทางออนไลน์ดูเหมือนว่าจะเป็นคำสั่ง bash มาตรฐานดังนั้นฉันไม่แน่ใจว่าจะติดตั้งอะไรเพื่อให้มันใช้งานได้

10
เรียกใช้คำสั่งในหน้าต่างเทอร์มินัล Mac OS X ใหม่
ฉันพยายามหาวิธีเรียกใช้คำสั่ง bash ในหน้าต่าง Max OS X Terminal.app ใหม่ ดังตัวอย่างนี่คือวิธีที่ฉันจะเรียกใช้คำสั่งของฉันในกระบวนการทุบตีใหม่: bash -c "my command here" แต่จะใช้หน้าต่างเทอร์มินัลที่มีอยู่ซ้ำแทนการสร้างหน้าต่างใหม่ ฉันต้องการสิ่งที่ชอบ: Terminal.app -c "my command here" แต่แน่นอนว่าไม่ได้ผล ฉันทราบคำสั่ง "open -a Terminal.app" แต่ฉันไม่เห็นวิธีส่งต่ออาร์กิวเมนต์ไปยังเทอร์มินัลหรือแม้ว่าฉันจะใช้อาร์กิวเมนต์อะไรก็ตาม
92 macos  bash  terminal 


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