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

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

6
ฉันจะใช้คีย์ vi ใน ipython ภายใต้ * nix ได้อย่างไร
ขณะนี้อยู่ใน Bash ฉันใช้set -o viเพื่อเปิดใช้งานโหมด vi ใน bash prompt ของฉัน ฉันจะทำสิ่งนี้ใน ipython ได้อย่างไร หมายเหตุ:หากคำตอบใช้ได้กับ * nix ทั้งหมดฉันจะลบ OS X ออกจากชื่อเรื่อง :)
97 python  bash  vi  ipython  readline 

8
ในขณะที่วนซ้ำเพื่อทดสอบว่ามีไฟล์อยู่ใน bash หรือไม่
ฉันกำลังทำงานกับเชลล์สคริปต์ที่ทำการเปลี่ยนแปลงบางอย่างในไฟล์ txt เฉพาะในกรณีที่มีอยู่อย่างไรก็ตามลูปทดสอบนี้ใช้ไม่ได้ฉันสงสัยว่าทำไม? ขอบคุณ! while [ ! -f /tmp/list.txt ] ; do sleep 2 done
97 bash  shell 

4
อ้างถึงไฟล์ที่สัมพันธ์กับการเรียกใช้สคริปต์
ในสคริปต์ทุบตีที่ฉันเขียนฉันใช้sourceเพื่อรวมตัวแปรที่กำหนดไว้ในไฟล์คอนฟิกูเรชัน สคริปต์ที่จะดำเนินการคือact.shในขณะที่สคริปต์ที่จะsourced เป็นact.conf.shดังนั้นในact.shฉันมี: source act.conf.sh อย่างไรก็ตามสิ่งนี้ใช้ได้เฉพาะเมื่อทำงานact.shในไดเร็กทอรีที่มีอยู่เนื่องจากact.conf.shมีการอ้างถึงไฟล์ที่อยู่ภายใต้ไดเร็กทอรีการทำงาน มีวิธีแก้ไขให้อ้างถึงไฟล์ที่สัมพันธ์กับสคริปต์การเรียกใช้งานโดยไม่ต้องเรียกใช้cdหรือไม่? ขอบคุณ.
97 bash  shell 

3
ฉันจะกำหนดผลลัพธ์ของฟังก์ชันให้กับตัวแปรโดยใช้ bash ได้อย่างไร
ฉันมีฟังก์ชันทุบตีที่ให้ผลลัพธ์บางอย่าง: function scan { echo "output" } ฉันจะกำหนดผลลัพธ์นี้ให้กับตัวแปรได้อย่างไร กล่าวคือ. VAR = scan (แน่นอนว่าไม่ได้ผล - ทำให้ VAR เท่ากับสตริง "scan")

10
การตรวจสอบพารามิเตอร์กับสคริปต์ Bash
ฉันคิดขั้นพื้นฐานเพื่อช่วยให้กระบวนการลบโฟลเดอร์จำนวนหนึ่งเป็นไปโดยอัตโนมัติเมื่อไม่จำเป็น #!/bin/bash rm -rf ~/myfolder1/$1/anotherfolder rm -rf ~/myfolder2/$1/yetanotherfolder rm -rf ~/myfolder3/$1/thisisafolder สิ่งนี้เกิดขึ้นเช่นนี้: ./myscript.sh <{id-number}> ปัญหาคือถ้าคุณลืมพิมพ์id-number (อย่างที่เคยทำไปแล้ว)มันอาจจะลบหลาย ๆ อย่างที่คุณไม่ต้องการให้ลบออกไป มีวิธีเพิ่มการตรวจสอบความถูกต้องให้กับพารามิเตอร์บรรทัดคำสั่งหรือไม่? ในกรณีของฉันควรตรวจสอบว่า a) มีพารามิเตอร์หนึ่งตัว b) เป็นตัวเลขและ c) มีโฟลเดอร์นั้นอยู่ ก่อนดำเนินการต่อด้วยสคริปต์
97 validation  bash  shell 

5
วิธีดำเนินการ bash script ทีละบรรทัด?
ถ้าฉันป้อนตัวเลือกbash -xมันจะแสดงทุกบรรทัด แต่สคริปต์จะดำเนินการตามปกติ ฉันจะดำเนินการทีละบรรทัดได้อย่างไร? กว่าฉันจะเห็นว่ามันทำถูกต้องหรือฉันยกเลิกและแก้ไข ใส่เอฟเฟกต์เดียวกันreadในทุกบรรทัด
97 bash 

13
Bash script เป็น cd ไปยังไดเร็กทอรีที่มีช่องว่างในชื่อพา ธ
ฉันใช้ Bash บน macOS X และฉันต้องการสร้างไฟล์สคริปต์ปฏิบัติการง่ายๆที่จะเปลี่ยนเป็นไดเร็กทอรีอื่นเมื่อเรียกใช้ อย่างไรก็ตามเส้นทางไปยังไดเร็กทอรีนั้นมีช่องว่างอยู่ คุณทำสิ่งนี้ได้อย่างไร? นี่คือสิ่งที่ฉันมี ... ชื่อไฟล์: cdcode เนื้อหาไฟล์: cd ~/My Code ตอนนี้ได้รับแล้วนี่ไม่ใช่ชื่อพา ธ ที่ยาว แต่ชื่อพา ธ จริงของฉันคือห้าไดเร็กทอรีลึกและสี่ไดเร็กทอรีเหล่านั้นมีช่องว่างในพา ธ BTW ฉันได้ลองcd "~/My Code"แล้วcd "~/My\ Code"และไม่ได้ผล
96 bash  escaping 

7
ฉันจะป้องกันไม่ให้คำสั่งปรากฏในประวัติ Bash ได้อย่างไร
บางครั้งเมื่อผมใช้คำสั่งเช่นผมไม่อยากให้เรื่องนี้ได้รับการบันทึกไว้ในประวัติศาสตร์ทุบตีเพราะผมตั้งใจจะเรียกใช้คำสั่งเดียวกันอีกครั้งโดยrm -rf XYZ reverse-i-searchมีวิธีที่ดีในการป้องกันไม่ให้เกิดเหตุการณ์นี้หรือไม่?
96 bash 

4
ออกจาก zsh แต่เปิดงานที่ทำอยู่ทิ้งไว้หรือไม่
เพิ่งเปลี่ยนจาก bash เป็น zsh ใน bash งานเบื้องหลังจะทำงานต่อไปเมื่อเชลล์ออก ตัวอย่างเช่นที่นี่dolphinยังคงทำงานต่อไปหลังจากexit: $ dolphin . ^Z [1]+ Stopped dolphin . $ bg [1]+ dolphin . & $ exit นี่คือสิ่งที่ฉันต้องการเป็นพฤติกรรมเริ่มต้น ในทางตรงกันข้ามพฤติกรรมของ zsh คือการเตือนเกี่ยวกับการรันงานexitจากนั้นปิดหากคุณexitอีกครั้ง ตัวอย่างเช่นที่นี่dolphinถูกปิดเมื่อexitคำสั่งที่สองออกจากเชลล์: % dolphin . ^Z zsh: suspended dolphin . % bg [1] + continued dolphin . % exit zsh: you have running …
96 bash  zsh  jobs 

2
รับบรรทัดแรกของผลลัพธ์ของคำสั่งเชลล์
ในขณะที่พยายามอ่านหมายเลขเวอร์ชันvimฉันได้รับบรรทัดเพิ่มเติมมากมายที่ฉันต้องเพิกเฉย ฉันพยายามอ่านคู่มือheadและลองใช้คำสั่งต่อไปนี้: vim --version | head -n 1 ฉันต้องการทราบว่านี่เป็นแนวทางที่ถูกต้องหรือไม่?
96 linux  bash  shell 


5
Bash set + x โดยไม่ต้องพิมพ์
มีใครรู้บ้างว่าเราสามารถพูดได้set +xโดยไม่ต้องพิมพ์: set -x command set +x ร่องรอย + command + set +x แต่ควรพิมพ์ + command Bash คือเวอร์ชัน 4.1.10 (4) นี่เป็นปัญหาของฉันมาระยะหนึ่งแล้ว - เอาต์พุตเต็มไปด้วยset +xเส้นที่ไร้ประโยชน์ทำให้เครื่องมือติดตามไม่เป็นประโยชน์เท่าที่ควร
96 bash  shell 

7
วิธีเชื่อมสองสตริงเข้าด้วยกันเพื่อสร้างเส้นทางที่สมบูรณ์
ฉันกำลังพยายามเขียนสคริปต์ทุบตี ในสคริปต์นี้ฉันต้องการให้ผู้ใช้ป้อนเส้นทางของไดเร็กทอรี จากนั้นฉันต้องการต่อท้ายสตริงบางส่วนที่ส่วนท้ายของสตริงนี้และสร้างเส้นทางไปยังไดเร็กทอรีย่อย ตัวอย่างเช่นสมมติว่าผู้ใช้ป้อนสตริงดังนี้: /home/user1/MyFolder ตอนนี้ฉันต้องการสร้างไดเร็กทอรีย่อย 2 ไดเร็กทอรีนี้และคัดลอกไฟล์บางไฟล์ที่นั่น /home/user1/MyFolder/subFold1 /home/user1/MyFolder/subFold2 ฉันจะทำเช่นนี้ได้อย่างไร?
95 linux  bash 

8
ตรวจสอบว่าไดเร็กทอรีติดตั้งด้วย bash หรือไม่
ฉันใช้ mount -o bind /some/directory/here /foo/bar ฉันต้องการตรวจสอบ /foo/barด้วยสคริปต์ทุบตีและดูว่าถูกเมาท์หรือไม่? ถ้าไม่เช่นนั้นให้เรียกใช้คำสั่ง mount ด้านบนทำอย่างอื่น ฉันจะทำเช่นนี้ได้อย่างไร? CentOS คือระบบปฏิบัติการ
95 linux  bash  centos  mount 

5
วิธีใช้ตัวแปรสภาพแวดล้อมภายในสตริงที่ยกมาใน Bash
ฉันได้ลองใช้รูปแบบต่างๆต่อไปนี้ใน bash script: #!/bin/bash svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w -p -W $COLUMNS" แต่ฉันไม่สามารถรับไวยากรณ์เพื่อขยายCOLUMNSตัวแปรสภาพแวดล้อมได้อย่างถูกต้อง ฉันได้ลองใช้รูปแบบต่างๆดังต่อไปนี้: svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W $COLUMNS' และ svn diff $@ --diff-cmd /usr/bin/diff -x '-y -w -p -W ${COLUMNS}' และ eval svn diff $@ --diff-cmd /usr/bin/diff -x "-y -w …

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