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

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

11
เผยแพร่ข้อโต้แย้งทั้งหมดใน bash shell script
ฉันกำลังเขียนสคริปต์ง่าย ๆ ที่เรียกสคริปต์อื่นและฉันต้องการเผยแพร่พารามิเตอร์จากสคริปต์ปัจจุบันของฉันไปยังสคริปต์ที่ฉันกำลังดำเนินการ ตัวอย่างเช่นชื่อสคริปต์ของฉันคือfoo.shและการโทรbar.sh foo.sh: bar $1 $2 $3 $4 ฉันจะทำสิ่งนี้โดยไม่ระบุพารามิเตอร์อย่างชัดเจนได้อย่างไร

30
การตั้งค่าตัวแปรสภาพแวดล้อมบน OS X
วิธีที่เหมาะสมในการแก้ไขตัวแปรสภาพแวดล้อมเช่น PATH ใน OS X คืออะไร ฉันดู Google นิดหน่อยและพบไฟล์ที่แตกต่างกันสามไฟล์เพื่อแก้ไข: / etc / เส้นทาง ~ / .profile ~ / .tcshrc ฉันยังไม่มีไฟล์เหล่านี้และฉันค่อนข้างมั่นใจว่า. tcshrcผิดเนื่องจาก OS X ใช้ bash ทันที ตัวแปรเหล่านี้อยู่ที่ใดโดยเฉพาะ PATH ที่กำหนด? ฉันใช้OS X v10.5 (Leopard)

10
แทนที่หนึ่งซับสตริงสำหรับสตริงอื่นในเชลล์สคริปต์
ฉันมี "ฉันรัก Suzi และ Marry" และฉันต้องการเปลี่ยน "Suzi" เป็น "Sara" #!/bin/bash firstString="I love Suzi and Marry" secondString="Sara" # do something... ผลลัพธ์จะต้องเป็นดังนี้: firstString="I love Sara and Marry"
822 bash  shell 

19
รับชื่อไดเรกทอรีปัจจุบัน (ไม่มีพา ธ เต็ม) ในสคริปต์ Bash
ฉันจะได้รับเพียงแค่ชื่อไดเรกทอรีการทำงานปัจจุบันในสคริปต์ทุบตีหรือดีกว่าเพียงแค่คำสั่ง terminal pwdให้เส้นทางแบบเต็มของไดเรกทอรีการทำงานปัจจุบันเช่น/opt/local/binแต่ฉันต้องการเท่านั้นbin
819 bash  shell 

14
ฉันจะล้าง / ลบบรรทัดปัจจุบันในเทอร์มินัลได้อย่างไร
หากฉันใช้เทอร์มินัลและพิมพ์ข้อความบรรทัดเดียวสำหรับคำสั่งจะมีฮ็อตคีย์หรือวิธีใดวิธีการล้าง / ลบบรรทัดนั้นหรือไม่? ตัวอย่างเช่นหากบรรทัด / คำสั่งปัจจุบันของฉันมีลักษณะยาว: > git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now> มีปุ่มลัดหรือคำสั่งให้ไปจากด้านบนไปยัง: > ? โดยปกติฉันจะกด↓ปุ่มและถ้าบรรทัดปัจจุบันของฉันเป็นสายใหม่ในประวัติศาสตร์ที่จะล้างมัน แต่ถ้าฉันจะผ่านประวัติคำสั่งของฉันผ่านทาง↑คีย์และเริ่มแก้ไขหรือใช้คำสั่งเหล่านั้น↓จะเปลี่ยนพรอมต์ให้เป็นคำสั่งใหม่ล่าสุดถัดไปในประวัติดังนั้นมันจะไม่ทำงานที่นี่เว้นแต่ฉันจะกด↓หลายครั้ง
795 bash  terminal 

17
ฉันจะแยกข้อความ "การอนุญาตที่ถูกปฏิเสธ" ทั้งหมดออกจาก "ค้นหา" ได้อย่างไร?
ฉันต้องการซ่อนข้อความที่ถูกปฏิเสธสิทธิ์ทั้งหมดจาก: find . > files_and_folders ฉันกำลังทดลองเมื่อข้อความดังกล่าวเกิดขึ้น ฉันต้องรวบรวมโฟลเดอร์และไฟล์ทั้งหมดซึ่งมันไม่ได้เกิดขึ้น เป็นไปได้หรือไม่ที่จะนำระดับการอนุญาตไปยังfiles_and_foldersไฟล์ ฉันจะซ่อนข้อผิดพลาดพร้อมกันได้อย่างไร


10
เมื่อกำหนดไดเรกทอรีต้นไม้สองต้นฉันจะค้นหาไฟล์ที่แตกต่างกันตามเนื้อหาได้อย่างไร
ถ้าฉันต้องการหาความแตกต่างระหว่างทรีไดเร็กตอรี่สองต้นฉันมักจะรัน: diff -r dir1/ dir2/ ผลลัพธ์นี้เป็นสิ่งที่แตกต่างกันระหว่างไฟล์ที่เกี่ยวข้อง ฉันสนใจที่จะรับรายการไฟล์ที่เกี่ยวข้องที่มีเนื้อหาแตกต่างกัน ฉันคิดว่านี่เป็นเพียงเรื่องของการส่งตัวเลือกบรรทัดคำสั่งไปdiffแต่ฉันไม่พบอะไรเลยในหน้า man ข้อเสนอแนะใด ๆ
786 linux  bash  shell  unix  diff 

4
ตัวแปรเชลล์สัญลักษณ์ดอลลาร์พิเศษคืออะไร?
ใน Bash มีตัวแปรหลายตัวที่เก็บค่าพิเศษที่มีความหมายสม่ำเสมอ ตัวอย่างเช่น ./myprogram &; echo $! จะกลับ PID ของกระบวนการที่ myprogrambackgrounded ฉันรู้จักผู้อื่นเช่น$?ที่ฉันคิดว่าเป็น TTY ปัจจุบัน มีคนอื่นไหม?

13
นับจำนวนบรรทัดในที่เก็บ git
ฉันจะนับจำนวนบรรทัดทั้งหมดที่มีอยู่ในไฟล์ทั้งหมดในที่เก็บ git ได้อย่างไร git ls-files ให้รายการไฟล์ที่ติดตามโดย git ฉันกำลังมองหาคำสั่งcatไฟล์ทั้งหมดเหล่านั้น สิ่งที่ต้องการ git ls-files | [cat all these files] | wc -l
766 bash  git  shell  line-count 


10
อ่านบรรทัดไฟล์โดยบรรทัดที่กำหนดค่าให้กับตัวแปร
ฉันมีไฟล์. txt ต่อไปนี้: Marco Paolo Antonio ฉันต้องการอ่านมันทีละบรรทัดและสำหรับแต่ละบรรทัดฉันต้องการกำหนดค่าบรรทัด. txt ให้กับตัวแปร หากว่าตัวแปรของฉันคือ$nameการไหลคือ: อ่านบรรทัดแรกจากไฟล์ กำหนด$name= "มาร์โก" ทำงานบางอย่างกับ $name อ่านบรรทัดที่สองจากไฟล์ กำหนด$name= "เปาโล"
752 bash 

16
เพิ่มตัวแบ่งบรรทัดไปที่ 'git commit -m' จากบรรทัดคำสั่ง
ฉันใช้ Git จากบรรทัดคำสั่งและกำลังพยายามเพิ่มตัวแบ่งบรรทัดในข้อความยืนยัน (ใช้git commit -m "") โดยไม่ต้องเข้าไปในกลุ่ม เป็นไปได้ไหม
746 git  bash  shell 

13
ใน Bash ฉันจะตรวจสอบว่าสตริงเริ่มต้นด้วยค่าบางอย่างได้อย่างไร
ฉันต้องการตรวจสอบว่าสตริงเริ่มต้นด้วย "node" เช่น "node001" สิ่งที่ต้องการ if [ $HOST == user* ] then echo yes fi ฉันจะทำอย่างถูกต้องได้อย่างไร ฉันต้องรวมนิพจน์เพิ่มเติมเพื่อตรวจสอบว่า HOST เป็น "user1" หรือเริ่มต้นด้วย "node" if [ [[ $HOST == user1 ]] -o [[ $HOST == node* ]] ]; then echo yes fi > > > -bash: [: too many arguments ฉันจะทำอย่างถูกต้องได้อย่างไร
745 string  bash  comparison 


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