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

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

5
วิธีทำรัง Bash backticks อย่างถูกต้อง
ไม่ว่าฉันจะพลาดฟันเฟืองหรือแบ็กแลชบางอย่างก็ดูเหมือนจะไม่ได้ผลกับการวนซ้ำของโปรแกรมเมอร์ - ใบเสนอราคามากเกินไป $ echo "hello1-`echo hello2-\`echo hello3-\`echo hello4\`\``" hello1-hello2-hello3-echo hello4 ต้องการ hello1-hello2-hello3-hello4-hello5-hello6-...
95 bash  shell  unix  quoting 


10
จะสร้าง "นามแฝง" สำหรับเส้นทางที่ยาวได้อย่างไร?
ฉันพยายามสร้าง "นามแฝง" สำหรับเส้นทางที่ฉันใช้บ่อยในขณะที่ใช้เชลล์สคริปต์ ฉันลองทำบางอย่างแล้ว แต่ล้มเหลว: myFold="~/Files/Scripts/Main" cd myFold bash: cd: myFold: No such file or directory ฉันจะทำให้มันทำงานได้อย่างไร? อย่างไรก็ตามการcd ~/Files/Scripts/Mainทำงาน
95 linux  bash  unix  scripting 

8
'cd -' ย่อมาจากอะไร?
ใน bash shell script วันนี้ฉันสังเกตเห็นคำสั่งด้านล่างที่ส่วนท้ายของสคริปต์ ฉันรู้ว่าอะไรคืออะไรcdแต่ฉันไม่รู้ถึงความสำคัญของเส้นประหลังมัน cd - สิ่งนี้หมายความว่า? Google ตัดทอนอย่างไร้เดียงสา-ดังนั้นฉันจึงไม่สามารถหาคำตอบได้
95 linux  bash  shell 

6
จะให้รูปแบบสำหรับบรรทัดใหม่ใน grep ได้อย่างไร?
จะให้รูปแบบสำหรับบรรทัดใหม่ใน grep ได้อย่างไร? บรรทัดใหม่ที่จุดเริ่มต้นบรรทัดใหม่ในตอนท้าย ไม่ใช่วิธีการแสดงออกปกติ บางอย่างเช่น \ n.
95 bash  grep  newline 

4
Bash สามารถรันคำสั่งในบริบทไดเร็กทอรีอื่นได้อย่างไร?
ฉันมีคำสั่งทั่วไปที่เรียกจากภายในไดเร็กทอรีเฉพาะ มีเพียงไฟล์ปฏิบัติการเดียวที่อยู่ใน / bin สำหรับโปรแกรมนี้และไดเร็กทอรีการทำงานปัจจุบันมีความสำคัญมากสำหรับการรันอย่างถูกต้อง สคริปต์มีผลต่อไฟล์ที่อยู่ภายในไดเร็กทอรีที่รันอยู่ ตอนนี้ฉันยังมีเชลล์สคริปต์แบบกำหนดเองที่ทำบางสิ่งในไดเร็กทอรีเดียว แต่ฉันต้องเรียกคำสั่งนั้นที่กล่าวถึงข้างต้นราวกับว่าอยู่ในไดเร็กทอรีอื่น คุณทำสิ่งนี้ในเชลล์สคริปต์ได้อย่างไร

4
ฉันจะดูค่าปัจจุบันของตัวแปร $ PATH บน OS X ได้อย่างไร
$ $ PATH ผลตอบแทน: - แบช: /usr/local/share/npm/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/local/sbin:~/bin:/Library/ เฟรมเวิร์ก / Python.framework / เวอร์ชัน / ปัจจุบัน / bin: / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / opt / X11 / bin: / usr / local / git / bin : ไม่พบไฟล์หรือโฟลเดอร์ที่คุณค้นหา …

8
เรียกสคริปต์ Python จาก bash พร้อมอาร์กิวเมนต์
ฉันรู้ว่าฉันสามารถเรียกใช้สคริปต์ python จากสคริปต์ทุบตีของฉันโดยใช้สิ่งต่อไปนี้: python python_script.py แต่ถ้าฉันต้องการส่งผ่านตัวแปร / อาร์กิวเมนต์ไปยังสคริปต์ python จากสคริปต์ทุบตีของฉัน ฉันจะทำเช่นนั้นได้อย่างไร? โดยทั่วไป bash จะใช้ชื่อไฟล์จากนั้น python จะอัปโหลด แต่ฉันต้องส่งชื่อไฟล์จาก bash เป็น python เมื่อฉันเรียกมัน
95 python  linux  bash  shell  debian 

1
การส่งผ่านอาร์กิวเมนต์ด้วยช่องว่างระหว่างสคริปต์ (bash)
ฉันมี bash สองสคริปต์ต่อไปนี้ เถ้า: #!/bin/bash ./b.sh 'My Argument' b.sh: #!/bin/bash someApp $* ไบนารี someApp รับ$*เป็น 2 อาร์กิวเมนต์ ('My' และ 'Argument') แทนที่จะเป็น 1 ฉันได้ทดสอบหลายสิ่ง: การเรียกใช้ someApp ผ่านการb.shทำงานตามที่คาดไว้เท่านั้น ทำซ้ำ + สะท้อนอาร์กิวเมนต์ในการb.shทำงานตามที่คาดไว้ การใช้$@แทน$*ไม่ได้สร้างความแตกต่าง
94 bash 


5
นามแฝง ZSH พร้อมพารามิเตอร์
ฉันกำลังพยายามสร้างนามแฝงที่มีพารามิเตอร์สำหรับคอมไพล์ง่ายๆของฉันเพิ่ม / คอมมิต / พุช ฉันเคยเห็น Function สามารถใช้เป็นนามแฝงได้ฉันจึงลอง แต่ฉันไม่ได้ทำ .. ก่อนที่ฉันจะมี: alias gitall="git add . ; git commit -m 'update' ; git push" แต่ฉันต้องการแก้ไขการกระทำของฉัน: function gitall() { "git add ." if [$1 != ""] "git commit -m $1" else "git commit -m 'update'" fi "git push" } (ฉันรู้ว่ามันเป็นการฝึกคอมไพล์ที่แย่มาก)
94 bash  shell  alias  zsh  zshrc 

4
วิธีแก้ไขไฟล์ใน Docker container ที่หยุด / ไม่เริ่ม
พยายามแก้ไขข้อผิดพลาดและแก้ไขปัญหาเกี่ยวกับแอปพลิเคชันของฉันที่แบ่งออกเป็นหลายคอนเทนเนอร์ฉันมักแก้ไขไฟล์ในคอนเทนเนอร์: ฉันขี้เกียจและติดตั้งนาโนและแก้ไขโดยตรงในคอนเทนเนอร์หรือ ฉันเทียบท่า cp ไฟล์ออกจากคอนเทนเนอร์แก้ไขคัดลอกกลับและรีสตาร์ทคอนเทนเนอร์ ขั้นตอนเหล่านี้เป็นขั้นตอนกลางก่อนที่จะมาถึงเนื้อหาใหม่สำหรับการสร้างคอนเทนเนอร์ซึ่งใช้เวลานานกว่าการทำข้างต้นมาก (ซึ่งแน่นอนว่าเป็นเพียงขั้นกลาง / การเล่นซอเท่านั้น) ตอนนี้ฉันมักจะทำลายโปรแกรมเริ่มต้นของคอนเทนเนอร์ซึ่งในกรณีที่ใช้งานไม่ได้อาจเป็นสคริปต์โหนดหรือสคริปต์เว็บเซิร์ฟเวอร์ python ซึ่งโดยทั่วไปทั้งสองจะล้มเหลวจากข้อผิดพลาดทางไวยากรณ์ มีวิธีใดในการบันทึกภาชนะเหล่านั้นหรือไม่? เนื่องจากพวกเขาไม่เริ่มต้นฉันจึงไม่สามารถเทียบท่ากับพวกเขาได้ดังนั้นพวกเขาจึงหลงทางให้ฉัน จากนั้นฉันไปที่เส้นทาง rm / rmi / build / run หลังจากแก้ไขไฟล์ที่ละเมิดในอินพุตบิลด์ ฉันจะแก้ไขไฟล์ในคอนเทนเนอร์ที่ถูกหยุดได้อย่างไรหรือ cp ในหรือเริ่มต้นเชลล์ในคอนเทนเนอร์ที่ถูกหยุด - สิ่งใดที่ช่วยให้ฉันแก้ไขคอนเทนเนอร์นี้ (ดูเหมือนว่าจะทำงานบนคอมพิวเตอร์ระยะไกลและทำลายการกำหนดค่าเครือข่าย - การเชื่อมต่อจะขาดหายไป "ตลอดกาล" ด้วยวิธีนี้และต้องใช้ทางเลือกอื่นหากมี) จะแก้ไขไฟล์ Docker container จากโฮสต์ได้อย่างไร? ดูเกี่ยวข้อง แต่ล้าสมัย
94 bash  docker 

9
env: bash \ r: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
ฉันพยายามที่จะติดตั้ง YouCompleteMe จากที่นี่ เมื่อฉันดำเนินการ: ./install.sh --clang-completer ฉันได้รับข้อผิดพลาดนี้: env: bash\r: No such file or directory ฉันไม่รู้ว่ามีอะไรผิดปกติกับตัวแปรสภาพแวดล้อม นี่คือเส้นทางทุบตีของฉัน: which bash /bin/bash ฉันจำเป็นต้องเปลี่ยนเป็น/usr/bashหรือไม่? ถ้าใช่ฉันควรทำอย่างไร? ฉันพยายามเปลี่ยน~/.bashrcไฟล์ แต่ไม่ได้ผล

6
ตรวจสอบว่าสตริงไม่ว่างหรือเว้นวรรคในเชลล์สคริปต์หรือไม่
ฉันกำลังพยายามรันเชลล์สคริปต์ต่อไปนี้ซึ่งควรจะตรวจสอบว่าสตริงไม่มีช่องว่างหรือว่างเปล่า อย่างไรก็ตามฉันได้รับเอาต์พุตเดียวกันสำหรับทั้ง 3 สตริงที่กล่าวถึง ฉันได้ลองใช้ไวยากรณ์ "[[" แล้ว แต่ก็ไม่มีประโยชน์ นี่คือรหัสของฉัน: str="Hello World" str2=" " str3="" if [ ! -z "$str" -a "$str"!=" " ]; then echo "Str is not null or space" fi if [ ! -z "$str2" -a "$str2"!=" " ]; then echo "Str2 is not null or space" fi …
94 bash  shell  freebsd 

8
การใช้สีกับ printf
เมื่อเขียนเช่นนี้จะแสดงข้อความเป็นสีน้ำเงิน: printf "\e[1;34mThis is a blue text.\e[0m" แต่ฉันต้องการกำหนดรูปแบบใน printf: printf '%-6s' "This is text" ตอนนี้ฉันได้ลองหลายตัวเลือกในการเพิ่มสี แต่ไม่สำเร็จ: printf '%-6s' "\e[1;34mThis is text\e[0m" ฉันพยายามเพิ่มรหัสแอตทริบิวต์เพื่อจัดรูปแบบโดยไม่ประสบความสำเร็จ สิ่งนี้ใช้ไม่ได้และฉันไม่พบตัวอย่างที่เพิ่มสีลงใน printf ซึ่งได้กำหนดรูปแบบไว้ในกรณีของฉัน
94 linux  bash  colors  printf 

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