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

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

6
ลบโฟลเดอร์ node_modules แบบวนซ้ำจากเส้นทางที่ระบุโดยใช้บรรทัดคำสั่ง
ฉันมีโปรเจ็กต์ npm หลายโปรเจ็กต์ที่บันทึกไว้ในไดเร็กทอรีภายในเครื่อง ตอนนี้ผมต้องการที่จะใช้การสำรองข้อมูลของโครงการของฉันโดยไม่ต้องโฟลเดอร์ราวกับว่ามันคือการใช้พื้นที่มากและยังสามารถเรียกดูได้ตลอดเวลาโดยใช้node_modulesnpm install ดังนั้นฉันต้องการวิธีแก้ไขเพื่อลบโฟลเดอร์ node_modules ทั้งหมดแบบวนซ้ำจากเส้นทางที่ระบุโดยใช้อินเทอร์เฟซบรรทัดคำสั่ง ข้อเสนอแนะ / ความช่วยเหลือใด ๆ ขอขอบคุณ

7
Bash: ส่งผ่านฟังก์ชันเป็นพารามิเตอร์
ฉันต้องส่งฟังก์ชันเป็นพารามิเตอร์ใน Bash ตัวอย่างเช่นรหัสต่อไปนี้: function x() { echo "Hello world" } function around() { echo "before" eval $1 echo "after" } around x ควรส่งออก: before Hello world after ฉันรู้ว่าevalไม่ถูกต้องในบริบทนั้น แต่นั่นเป็นเพียงตัวอย่าง :) ความคิดใด ๆ ?

5
เครื่องมืออะไรที่จะใช้ในการวาดแผนผังไฟล์ทรี [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามให้ตรงประเด็นสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ให้แผนผังไฟล์ - ไดเร็กทอรีที่มีไดเร็กทอรีอยู่เป็นต้นคุณจะเขียนสคริปต์เพื่อสร้างไดอะแกรมของไฟล์ทรีเป็นไฟล์กราฟิกที่ฉันสามารถฝังในเอกสารโปรแกรมประมวลผลคำได้อย่างไร ฉันชอบไฟล์เวกเตอร์ (SVG, EPS, EMF ... ) มากกว่า เครื่องมือต้องทำงานบน Windows แต่ควรใช้ข้ามแพลตฟอร์ม เครื่องมือนี้อาจใช้ในเชิงพาณิชย์ แต่ควรให้บริการฟรี ปรับปรุง 2012-02-20. คำถามเกี่ยวข้องกับโครงการย่อยด้านเอกสาร ฉันต้องอธิบายว่าไฟล์ (โดยเฉพาะทรัพยากรและไฟล์คอนฟิกูเรชัน) อยู่ที่ใด ฉันลงเอยด้วยการใช้คำสั่ง dos tree ฉันทั้งสองหน้าจอคว้าผลลัพธ์ (สำหรับโฟลเดอร์สั้น ๆ ) และสำหรับโฟลเดอร์ที่ยาวกว่าฉันเปลี่ยนเส้นทางไปยังไฟล์ข้อความซึ่งฉันแก้ไขแล้ว ตัวอย่างเช่นหากโฟลเดอร์ย่อยมีไฟล์ที่พิมพ์คล้ายกัน 20 ไฟล์ซึ่งทีละไฟล์ไม่มีความสำคัญต่อจุดที่ฉันสร้างฉันเหลือแค่สองไฟล์และแทนที่ส่วนที่เหลือด้วยหนึ่ง ... บรรทัด จากนั้นฉันก็พิมพ์ไฟล์ไปที่คอนโซลอีกครั้งและจับหน้าจอ ก่อนที่จะจับหน้าจอฉันต้องปรับเปลี่ยนสีพื้นหน้าเป็นสีดำและสีพื้นหลังเป็นสีขาวเพื่อให้ดูดีขึ้นและประหยัดหมึกในเอกสารที่ควรพิมพ์ เป็นเรื่องที่น่าแปลกใจมากที่ไม่มีเครื่องมือที่ดีกว่านี้ ถ้าฉันมีเวลาฉันจะเขียน Visio Extension …

9
วิธีดำเนินการเอาต์พุตของคำสั่งภายในเชลล์ปัจจุบัน
ฉันทราบดีถึงยูทิลิตี้source(aka .) ซึ่งจะนำเนื้อหาจากไฟล์และเรียกใช้งานภายในเชลล์ปัจจุบัน ตอนนี้ฉันกำลังเปลี่ยนข้อความบางส่วนเป็นคำสั่งเชลล์แล้วเรียกใช้งานดังต่อไปนี้: $ ls | sed ... | sh lsเป็นเพียงตัวอย่างแบบสุ่มข้อความต้นฉบับอาจเป็นอะไรก็ได้ sedเช่นกันเป็นเพียงตัวอย่างสำหรับการแปลงข้อความ shบิตที่น่าสนใจคือ ฉันไปป์ทุกอย่างที่ฉันไปถึงshแล้วมันก็วิ่งไป ปัญหาของฉันคือนั่นหมายถึงการเริ่มต้นเชลล์ย่อยใหม่ ฉันอยากให้คำสั่งทำงานภายในเชลล์ปัจจุบันของฉัน เช่นเดียวกับที่ฉันสามารถทำได้source some-fileถ้าฉันมีคำสั่งในไฟล์ข้อความ ฉันไม่ต้องการสร้างไฟล์ชั่วคราวเพราะรู้สึกว่าสกปรก หรือฉันต้องการเริ่มเชลล์ย่อยของฉันด้วยลักษณะเดียวกับเชลล์ปัจจุบันของฉัน อัพเดต โอเควิธีแก้ปัญหาโดยใช้ backtick ใช้งานได้ดี แต่ฉันมักจะต้องทำสิ่งนี้ในขณะที่ฉันกำลังตรวจสอบและเปลี่ยนผลลัพธ์ดังนั้นฉันชอบมากถ้ามีวิธีที่จะทำให้ผลลัพธ์เป็นบางสิ่งในตอนท้าย อัปเดตที่น่าเศร้า อ่า/dev/stdinสิ่งนี้ดูสวยมาก แต่ในกรณีที่ซับซ้อนกว่านั้นมันไม่ได้ผล ฉันมีสิ่งนี้: find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source …
92 bash  shell  unix  pipe 

7
วิธีที่ง่ายที่สุดในการตรวจสอบดัชนีหรือคีย์ในอาร์เรย์
ใช้: set -o nounset มีอาร์เรย์ที่จัดทำดัชนีเช่น: myArray=( "red" "black" "blue" ) วิธีที่สั้นที่สุดในการตรวจสอบว่าองค์ประกอบ 1 ถูกตั้งค่าไว้หรือไม่ บางครั้งฉันใช้สิ่งต่อไปนี้: test "${#myArray[@]}" -gt "1" && echo "1 exists" || echo "1 doesn't exist" ฉันต้องการทราบว่ามีที่ต้องการหรือไม่ จะจัดการกับดัชนีที่ไม่ต่อเนื่องได้อย่างไร? myArray=() myArray[12]="red" myArray[51]="black" myArray[129]="blue" วิธีการตรวจสอบด่วนที่51กำหนดไว้แล้วเช่น? จะจัดการกับ Associative Arrays ได้อย่างไร? declare -A myArray myArray["key1"]="red" myArray["key2"]="black" myArray["key3"]="blue" วิธีการตรวจสอบด่วนที่key2ใช้อยู่แล้วเช่น?
92 arrays  bash  indexing  key 

18
นอนหลับจนถึงเวลา / วันที่ที่กำหนด
ฉันต้องการให้สคริปต์ทุบตีของฉันเข้าสู่โหมดสลีปจนกว่าจะถึงเวลาที่กำหนด ดังนั้นฉันต้องการคำสั่งเช่น "sleep" ซึ่งไม่มีช่วงเวลาใด ๆ แต่มีเวลาสิ้นสุดและหลับไปจนถึงตอนนั้น "at" -daemon ไม่ใช่วิธีแก้ปัญหาเนื่องจากฉันต้องบล็อกสคริปต์ที่กำลังทำงานอยู่จนกว่าจะถึงวันที่ / เวลาที่แน่นอน มีคำสั่งดังกล่าวหรือไม่?
92 bash  sleep  wait 

5
จะทำให้สองโฟลเดอร์ซิงโครไนซ์โดยอัตโนมัติได้อย่างไร?
ฉันต้องการสำเนาที่ซิงโครไนซ์ของโฟลเดอร์เดียวกับแผนผังย่อยทั้งหมด ควรทำงานโดยอัตโนมัติในลักษณะนี้: เมื่อใดก็ตามที่ฉันสร้างแก้ไขหรือลบข้อมูลจากโฟลเดอร์เดิมการเปลี่ยนแปลงเหล่านั้นควรนำไปใช้กับโฟลเดอร์ซิงค์โดยอัตโนมัติ แนวทางใดดีที่สุดสำหรับงานนี้ BTW: ฉันใช้ Ubuntu 12.04 เป้าหมายสุดท้ายคือการมีสำเนาสำรองแบบเรียลไทม์ที่แยกจากกันโดยไม่ต้องใช้ symlinks หรือ mount ฉันใช้ Ubuntu One เพื่อซิงโครไนซ์ข้อมูลระหว่างคอมพิวเตอร์ของฉันและหลังจากนั้นไม่นานก็เกิดข้อผิดพลาดและข้อมูลทั้งหมดของฉันหายไประหว่างการซิงโครไนซ์ ดังนั้นฉันจึงคิดที่จะเพิ่มขั้นตอนต่อไปเพื่อเก็บสำเนาสำรองข้อมูลของฉัน: ฉันเก็บข้อมูลของฉันไว้ใน "โฟลเดอร์ A" ฉันต้องการคำตอบสำหรับคำถามปัจจุบันของฉันเพื่อสร้างการซิงค์ทางเดียวของ "โฟลเดอร์ A" กับ "โฟลเดอร์ B" ( cronสคริปต์ที่มีrsync? อาจเป็น?) ฉันต้องการให้มันเป็นแบบทางเดียวเท่านั้นจาก A ถึง B การเปลี่ยนแปลงใด ๆ กับ B จะต้องไม่ใช้กับ A ฉันเพียงแค่ให้ "โฟลเดอร์ B" ที่ซิงโครไนซ์กับ Ubuntu One ในลักษณะนี้การเปลี่ยนแปลงใด ๆ ใน A จะถูกนำไปใช้กับ …

4
ใน bash ฉันจะผูกฟังก์ชันคีย์กับคำสั่งได้อย่างไร?
ตัวอย่าง: ฉันต้องการผูกF12คีย์เข้ากับคำสั่งecho "foobar"ทุกครั้งที่กดF12ข้อความ "foobar" จะถูกพิมพ์ขึ้นหน้าจอ ตามหลักการแล้วอาจเป็นคำสั่งเชลล์ใด ๆ ก็ได้ไม่ใช่แค่บิวด์อิน จะไปเกี่ยวกับเรื่องนี้ได้อย่างไร?
92 bash  shell  binding 

6
เหตุใดฉันจึงไม่สามารถระบุตัวแปรสภาพแวดล้อมและสะท้อนในบรรทัดคำสั่งเดียวกันได้
พิจารณาตัวอย่างนี้: $ SOMEVAR=AAA $ echo zzz $SOMEVAR zzz zzz AAA zzz นี่ฉันได้ตั้ง$SOMEVARไปAAAในบรรทัดแรก - และเมื่อฉันสะท้อนมันในบรรทัดที่สองผมได้รับAAAเนื้อหาตามที่คาดไว้ แต่ถ้าฉันพยายามระบุตัวแปรในบรรทัดคำสั่งเดียวกันกับecho: $ SOMEVAR=BBB echo zzz $SOMEVAR zzz zzz AAA zzz ... ฉันไม่ได้BBBตามที่ฉันคาดไว้ - ฉันได้รับค่าเก่า ( AAA) นี่คือสิ่งที่ควรจะเป็น? ถ้าเป็นเช่นนั้นคุณสามารถระบุตัวแปรที่ชอบLD_PRELOAD=/... program args ...และใช้งานได้อย่างไร? ฉันขาดอะไรไป?

16
tar: เพิ่มไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีปัจจุบันซึ่งรวมถึง. svn และอื่น ๆ
ฉันพยายาม tar.gz ไดเรกทอรีและใช้ tar -czf workspace.tar.gz * tar ที่ได้จะมี.svnไดเร็กทอรีในไดเร็กทอรีย่อย แต่ไม่อยู่ในไดเร็กทอรีปัจจุบัน (เนื่องจาก*ขยายเป็นไฟล์ 'มองเห็นได้' เท่านั้นก่อนที่จะถูกส่งไปยัง tar ฉันพยายามที่จะ tar -czf workspace.tar.gz .แต่แล้วฉันก็ได้รับข้อผิดพลาดเนื่องจาก "." มีการเปลี่ยนแปลงขณะอ่าน: tar: ./workspace.tar.gz: file changed as we read it มีเคล็ดลับในการ*จับคู่ไฟล์ทั้งหมด (รวมถึงจุดที่นำหน้า) ในไดเรกทอรีหรือไม่ (ใช้ bash บน Linux SLES-11 (2.6.27.19)

3
บรรทัดคำสั่ง Bash และขีด จำกัด อินพุต
มีการ จำกัด จำนวนอักขระที่กำหนดไว้ใน bash (หรือเชลล์อื่น ๆ ) สำหรับระยะเวลาในการป้อนข้อมูลหรือไม่? ถ้าเป็นเช่นนั้นจำนวนอักขระสูงสุดคืออะไร? คือเป็นไปได้ไหมที่จะเขียนคำสั่งใน bash ที่ยาวเกินกว่าที่บรรทัดคำสั่งจะดำเนินการได้? หากไม่มีขีด จำกัด ที่กำหนดมีข้อ จำกัด ที่แนะนำหรือไม่?

13
ฉันจะเรียกใช้คำสั่งเทอร์มินัลในสคริปต์ Swift ได้อย่างไร (เช่น xcodebuild)
ฉันต้องการแทนที่สคริปต์ทุบตี CI ของฉันด้วยความรวดเร็ว ฉันไม่สามารถหาวิธีเรียกใช้คำสั่งเทอร์มินัลปกติเช่นlsหรือxcodebuild #!/usr/bin/env xcrun swift import Foundation // Works println("Test") // Works ls // Fails xcodebuild -workspace myApp.xcworkspace // Fails $ ./script.swift ./script.swift:5:1: error: use of unresolved identifier 'ls' ls // Fails ^ ... etc ....
91 swift  bash  shell  xcodebuild 

4
หยุดการขยายอักขระตัวแทนเชลล์หรือไม่
มีวิธีใดบ้างที่โปรแกรมบรรทัดคำสั่งคอมไพล์จะบอก bash หรือ csh ว่าไม่ต้องการให้อักขระตัวแทนใด ๆ ในพารามิเตอร์ขยาย ตัวอย่างเช่นอาจต้องการคำสั่งเชลล์เช่น: foo * เพื่อส่งคืนค่า ASCII ที่เป็นตัวเลขของอักขระนั้น
91 bash  wildcard 

5
ฉันจะอ่าน sed จากอินพุตมาตรฐานได้อย่างไร [ซ้ำ]
คำถามนี้มีคำตอบอยู่แล้วที่นี่ : ตัวเลือกที่ไม่รู้จักเพื่อ `s 'ใน bash script [ซ้ำกัน] (4 คำตอบ) ปิดเมื่อ4 เดือนที่แล้ว . ฉันกำลังพยายาม grep searchterm myfile.csv | sed 's/replaceme/withthis/g' และได้รับ unknown option to `s' ผมทำอะไรผิดหรือเปล่า? แก้ไข: ตามความคิดเห็นรหัสถูกต้องจริง รหัสเต็มของฉันมีลักษณะดังต่อไปนี้ grep searchterm myfile.csv | sed 's/replaceme/withthis/g' # my comment และดูเหมือนว่าด้วยเหตุผลบางประการความคิดเห็นของฉันจึงถูกป้อนเข้าสู่ sed ที่แปลกมาก.
91 linux  bash  shell 

8
การลบไฟล์ temp ที่สร้างขึ้นใน bash exit ที่ไม่คาดคิด
ฉันกำลังสร้างไฟล์ชั่วคราวจากสคริปต์ทุบตี ฉันกำลังลบออกเมื่อสิ้นสุดการประมวลผล แต่เนื่องจากสคริปต์ทำงานเป็นเวลานานถ้าฉันฆ่ามันหรือเพียงแค่ CTRL-C ในระหว่างการรันไฟล์ชั่วคราวจะไม่ถูกลบ มีวิธีใดบ้างที่ฉันสามารถจับเหตุการณ์เหล่านั้นและล้างไฟล์ก่อนที่การดำเนินการจะสิ้นสุดลง นอกจากนี้ยังมีแนวทางปฏิบัติที่ดีที่สุดสำหรับการตั้งชื่อและตำแหน่งของไฟล์ชั่วคราวเหล่านั้นหรือไม่? ตอนนี้ฉันไม่แน่ใจระหว่างใช้: TMP1=`mktemp -p /tmp` TMP2=`mktemp -p /tmp` ... และ TMP1=/tmp/`basename $0`1.$$ TMP2=/tmp/`basename $0`2.$$ ... หรืออาจจะมีทางออกที่ดีกว่านี้?

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