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

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


11
วัตถุประสงค์ของ: (โคลอน) GNU Bash builtin คืออะไร
อะไรคือจุดประสงค์ของคำสั่งที่ไม่ทำอะไรเลยแม้แต่น้อยกว่าผู้นำความคิดเห็น แต่จริงๆแล้วคือเชลล์ในตัวและในตัวของมันเอง? มันช้ากว่าการแทรกความคิดเห็นลงในสคริปต์ของคุณประมาณ 40% ต่อการโทรหนึ่งครั้งซึ่งอาจแตกต่างกันอย่างมากขึ้นอยู่กับขนาดของความคิดเห็น สาเหตุที่เป็นไปได้เพียงอย่างเดียวที่ฉันเห็นคือ: # poor man's delay function for ((x=0;x<100000;++x)) ; do : ; done # inserting comments into string of commands command ; command ; : we need a comment in here for some reason ; command # an alias for `true' (lazy programming) while : …
336 bash  shell  built-in 

23
วิธีการแปลง DOS / Windows newline (CRLF) เป็น Unix newline (LF) ใน Bash script?
ฉันจะตั้งโปรแกรมขึ้นviบรรทัดใหม่ของ DOS / Windows เป็น Unix โดยทางโปรแกรมได้อย่างไร(เช่นไม่ใช้) dos2unixและunix2dosคำสั่งที่ไม่สามารถใช้ได้ในบางระบบ ฉันจะเลียนแบบสิ่งเหล่านี้ด้วยคำสั่งเช่นsed/ awk/ ได้trอย่างไร
336 linux  windows  bash  unix  newline 

11
จะตรวจสอบว่าทำงานใน Cygwin, Mac หรือ Linux ได้อย่างไร?
ฉันมีเชลล์สคริปต์ที่ใช้ทั้งบน Windows / Cygwin และ Mac และ Linux มันต้องการตัวแปรที่แตกต่างกันเล็กน้อยสำหรับแต่ละรุ่น สคริปต์ shell / bash ตรวจพบได้อย่างไรว่าทำงานอยู่ใน Cygwin, บน Mac หรือใน Linux?



5
การเข้าถึงบรรทัดคำสั่ง bash args $ @ vs $ *
ในหลาย ๆ คำถามและแบบฝึกหัด bash ฉันเห็นว่าฉันสามารถเข้าถึง args บรรทัดคำสั่งในสคริปต์ทุบตีได้สองวิธี: $ ~ >cat testargs.sh #!/bin/bash echo "you passed me" $* echo "you passed me" $@ ซึ่งผลลัพธ์ใน: $ ~> bash testargs.sh arg1 arg2 you passed me arg1 arg2 you passed me arg1 arg2 ความแตกต่างระหว่าง$*และ$@คืออะไร? เมื่อใดจึงควรใช้อดีตและเมื่อใดจะใช้ภายหลัง

8
จะกำหนดวันหมดอายุใบรับรอง SSL จากใบรับรองที่เข้ารหัส PEM ได้อย่างไร
หากฉันมีไฟล์จริงและ Bash shell ใน Mac หรือ Linux ฉันจะค้นหาไฟล์ใบรับรองได้อย่างไรว่าจะหมดอายุเมื่อใด ไม่ใช่เว็บไซต์ แต่จริงๆแล้วไฟล์ใบรับรองนั้นสมมติว่าฉันมีไฟล์ csr, key, pem และ chain
326 linux  bash  ssl  openssl  certificate 

11
ฉันจะใช้อักขระตัวแทนที่ตรงกันข้ามหรือเชิงลบเมื่อจับคู่รูปแบบในเชลล์ unix / linux ได้อย่างไร
ว่าฉันต้องการคัดลอกเนื้อหาของไดเรกทอรีที่ไม่รวมไฟล์และโฟลเดอร์ที่มีชื่อมีคำว่า 'Music' cp [exclude-matches] *Music* /target_directory สิ่งที่ควรแทนที่ [ไม่รวมการจับคู่] เพื่อทำสิ่งนี้ให้สำเร็จ

24
ลบสาขา git ท้องถิ่นทั้งหมด
ฉันทำตามกระบวนการพัฒนาที่ฉันสร้างสาขาท้องถิ่นใหม่สำหรับคุณสมบัติใหม่หรือการ์ดเรื่องราว เมื่อเสร็จแล้วฉันจะรวมสาขาเป็นหลักแล้วกด สิ่งที่มีแนวโน้มที่จะเกิดขึ้นเมื่อเวลาผ่านไปเนื่องจากการผสมผสานของความเกียจคร้านหรือความหลงลืมคือฉันท้ายที่สุดมีรายการสาขาท้องถิ่นจำนวนมากซึ่งบางส่วน (เช่นแหลม) อาจไม่ถูกรวมเข้าด้วยกัน ฉันรู้วิธีการแสดงรายการสาขาในพื้นที่ทั้งหมดของฉันและฉันรู้วิธีลบสาขาเดียว แต่ฉันสงสัยว่ามีคำสั่ง git ที่ทำให้ฉันสามารถลบสาขาท้องถิ่นทั้งหมดของฉันได้หรือไม่ ด้านล่างเป็นผลลัพธ์ของgit branch --mergedคำสั่ง user@machine:~/projects/application[master]$ git branch --merged STORY-123-Short-Description STORY-456-Another-Description STORY-789-Blah-Blah * master ความพยายามในการลบสาขาที่มีรายชื่อgrep -v \*(ตามคำตอบด้านล่าง) ส่งผลให้เกิดข้อผิดพลาด: error: branch 'STORY-123-Short-Description' not found. error: branch 'STORY-456-Another-Description' not found. error: branch 'STORY-789-Blah-Blah' not found. ฉันใช้: git 1.7.4.1 ubuntu 10.04 ทุบตี GNU, รุ่น 4.1.5 (1) …

11
ฉันจะรับชื่อผู้ใช้ปัจจุบันใน Bash ได้อย่างไร
ฉันกำลังเขียนโปรแกรมใน Bash ที่ต้องการชื่อผู้ใช้ของผู้ใช้ ฉันเคยได้ยินสิ่งที่เรียกว่าwhoamiแต่ฉันไม่รู้ว่ามันทำอะไรหรือใช้อย่างไร ฉันใช้คำสั่งอะไรเพื่อรับชื่อผู้ใช้ปัจจุบัน
321 bash  username 

30
วิธีการ urlencode ข้อมูลสำหรับคำสั่ง curl
ฉันพยายามเขียน bash script สำหรับการทดสอบที่รับพารามิเตอร์และส่งผ่านทาง curl ไปยังเว็บไซต์ ฉันจำเป็นต้องเข้ารหัสค่าเพื่อให้แน่ใจว่ามีการประมวลผลอักขระพิเศษอย่างถูกต้อง วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? นี่คือสคริปต์พื้นฐานของฉันจนถึง: #!/bin/bash host=${1:?'bad host'} value=$2 shift shift curl -v -d "param=${value}" http://${host}/somepath $@

5
วิธีทำ“ ถ้าไม่ใช่สภาพที่แท้จริง”?
ฉันต้องการให้echoคำสั่งดำเนินการเมื่อcat /etc/passwd | grep "sysa"ไม่เป็นความจริง ผมทำอะไรผิดหรือเปล่า? if ! [ $(cat /etc/passwd | grep "sysa") ]; then echo "ERROR - The user sysa could not be looked up" exit 2 fi

3
การเปลี่ยนเชลล์เริ่มต้นใน Linux [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เป็นไปได้อย่างไรที่จะเปลี่ยนเปลือกเริ่มต้น envคำสั่งขณะพูดว่า: SHELL=/bin/tcsh และฉันต้องการเปลี่ยนสิ่งนั้นเป็น Bash
317 linux  bash  shell  environment  tcsh 

8
ตรวจสอบขนาดโฟลเดอร์ใน Bash
ฉันพยายามเขียนสคริปต์ที่จะคำนวณขนาดไดเรกทอรีและถ้าขนาดน้อยกว่า 10GB และยิ่งใหญ่กว่านั้น 2GB ดำเนินการบางอย่าง ฉันต้องพูดถึงชื่อโฟลเดอร์ของฉันที่ไหน # 10GB SIZE="1074747474" # check the current size CHECK="`du /data/sflow_log/`" if [ "$CHECK" -gt "$SIZE" ]; then echo "DONE" fi
317 bash  shell  directory 

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