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

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

8
มีวิธีเรียกใช้ Bash scripts บน Windows หรือไม่? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันซื้อและใช้ Windows 7 Ultimate และฉันชอบใช้เพื่อพัฒนาแอปพลิเคชัน ข้อเสียอย่างหนึ่ง (เช่นเดียวกับทุกระบบปฏิบัติการ) คือฉันไม่สามารถเรียกใช้สคริปต์ Bash ได้ มีวิธีเรียกใช้สคริปต์ Bash บน Windows โดยการติดตั้งซอฟต์แวร์บางตัวหรือไม่? มันก็โอเคถ้ามันใช้งานไม่ได้ 100% แต่ตราบใดที่ฟังก์ชั่นการใช้งานที่พบบ่อยที่สุดก็ควรจะดี
100 windows  bash 

14
คำสั่ง Linux / Unix เพื่อตรวจสอบว่ากระบวนการทำงานอยู่หรือไม่?
ฉันต้องการคำสั่งเชลล์ / bash ที่เป็นอิสระจากแพลตฟอร์ม (Linux / Unix | OSX) ซึ่งจะพิจารณาว่ามีกระบวนการใดกำลังทำงานอยู่หรือไม่ เช่นmysqld, httpd... เป็นวิธีที่คำสั่ง / ง่ายที่สุดในการทำเช่นนี้คืออะไร?
100 linux  bash  shell  unix  process 

5
สำหรับไฟล์ในไดเร็กทอรีเฉพาะชื่อไฟล์ echo (ไม่มีพา ธ )
ฉันจะไปเกี่ยวกับการสะท้อนเฉพาะชื่อไฟล์ของไฟล์ได้อย่างไรหากฉันวนซ้ำไดเร็กทอรีด้วย for loop for filename in /home/user/* do echo $filename done; จะดึงเส้นทางแบบเต็มพร้อมชื่อไฟล์ ฉันต้องการแค่ชื่อไฟล์
100 bash  shell 

6
วิธีรวมอักขระ '&' ในคำสั่ง bash curl
ฉันพยายามใช้ curl in bash เพื่อดาวน์โหลดหน้าเว็บ แต่&สัญลักษณ์ใน URL ไม่ได้รับการตีความว่าเป็นอักขระอย่างที่ฉันต้องการ มีความคิดอย่างไรที่ฉันจะโน้มน้าวทุบตีว่าสัญลักษณ์&นั้นเป็นเพียงตัวละครที่น่าเบื่อและไม่มีอะไรพิเศษ?
100 bash  curl 

3
อย่าแสดงสแต็ก pushd / popd ในสคริปต์ bash หลายตัว (pushd / popd แบบเงียบ)
ทุกครั้งที่ฉันใช้ pushd หรือ popd มันจะพิมพ์สแตกไปยังเอาต์พุตมาตรฐาน จะไม่ทำอย่างไร? ไม่อยากทำpushd > /dev/nullแต่ละครั้งเพราะมีสคริปต์โทรหากันเยอะมาก บางทีการแทนที่ที่ดีอาจทำได้ แต่ฉันจะต้องแทนที่บิวด์อินเหล่านี้ในสคริปต์ของฉันเท่านั้นจากนั้นจึงเรียกคืนพฤติกรรมที่ถูกต้อง
100 bash  output  built-in 

5
จำลองการกดแป้น ENTER ในสคริปต์ทุบตี
ฉันได้สร้างสคริปต์ทุบตีที่เรียบง่ายซึ่งรันคำสั่งไม่กี่คำสั่ง หนึ่งในคำสั่งเหล่านี้ต้องการอินพุตของผู้ใช้ระหว่างรันไทม์ กล่าวคือถามผู้ใช้ว่า "do you want to blah blah blah?" ฉันต้องการเพียงแค่ส่งปุ่ม Enter ไปที่สิ่งนี้เพื่อให้สคริปต์เป็นไปโดยอัตโนมัติ ฉันไม่ต้องรออินพุตหรืออะไรเลยในระหว่างรันไทม์มันเพียงพอที่จะส่งการกดแป้นและบัฟเฟอร์อินพุตจะจัดการส่วนที่เหลือ
100 linux  bash  ubuntu  shell 

5
apt-get ติดตั้ง tzdata แบบไม่โต้ตอบ
เมื่อฉันพยายามที่จะ apt-get install -y tzdata ตัวเลือกบรรทัดคำสั่งสำหรับการเลือกเขตเวลาจะปรากฏขึ้น ฉันพยายามใช้สิ่งนี้ในสคริปต์เพื่อทำการตั้งค่าฉันจะทำให้ apt-get ทำงานโดยไม่ต้องป้อนข้อมูลผู้ใช้ได้อย่างไร ฉันรู้ว่าต้องกำหนดค่า tzdata ใหม่ที่ฉันทำได้ echo "America/New_York" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata แต่เมื่อติดตั้งฉันต้องการให้มันทำงานได้อย่างสมบูรณ์แม้ว่าจะไม่ได้ตั้งเขตเวลาที่ถูกต้องก็ตามฉันสามารถกำหนดค่าใหม่ได้ตลอดเวลา ฉันเหนื่อย echo 5 | apt-get install -y tzdata แต่มันไม่ทำงานตามที่คาดไว้

6
ทดสอบว่าตัวแปรถูกตั้งค่าเป็น bash หรือไม่เมื่อใช้“ set -o nounset”
รหัสต่อไปนี้ออกพร้อมกับข้อผิดพลาดตัวแปร unbound จะแก้ไขได้อย่างไรในขณะที่ยังใช้set -oตัวเลือก nounset อยู่ #!/bin/bash set -o nounset if [ ! -z ${WHATEVER} ]; then echo "yo" fi echo "whatever"
100 bash  shell  unix 

13
จะแสดงรายการตัวแปรที่ประกาศในสคริปต์ใน bash ได้อย่างไร?
ในสคริปต์ของฉันใน bash มีตัวแปรมากมายและฉันต้องทำอะไรบางอย่างเพื่อบันทึกลงในไฟล์ คำถามของฉันคือวิธีแสดงรายการตัวแปรทั้งหมดที่ประกาศในสคริปต์ของฉันและรับรายการดังนี้: VARIABLE1=abc VARIABLE2=def VARIABLE3=ghi
99 bash  variables 

5
วิธีสร้างนามแฝง. bashrc พร้อมใช้งานภายในคำสั่ง vim shell (:! …)
ฉันใช้ bash บน mac และหนึ่งในนามแฝงเป็นแบบนี้ alias gitlog='git --no-pager log -n 20 --pretty=format:%h%x09%an%x09%ad%x09%s --date=short --no-merges' อย่างไรก็ตามเมื่อฉันทำ :! gitlog ฉันเข้าใจ /bin/bash: gitlog: command not found ฉันรู้ว่าฉันสามารถเพิ่มนามแฝงแบบนี้ใน. gitconfig ของฉันได้ [alias] co = checkout st = status ci = commit br = branch df = diff อย่างไรก็ตามฉันไม่ต้องการเพิ่มนามแฝง bash ทั้งหมดของฉันใน. gitconfig นั่นคือไม่แห้ง มีทางออกที่ดีกว่านี้หรือไม่?
99 bash  vim  alias 

4
การสร้าง ZSH default Shell ใน MacOSX [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันติดตั้ง zsh บน Mac ของฉัน และตอนนี้ฉันต้องการทำให้เป็นเชลล์เริ่มต้นแทนที่จะเป็น Bash แต่ดูเหมือนว่าฉันจะพบข้อผิดพลาดต่อไปนี้: $ echo $SHELL /bin/bash $ chsh -s /usr/bin/zsh Changing shell for harshamv. Password for harshamv: chsh: /usr/bin/zsh: non-standard shell
99 bash  shell  zsh 

2
Bash script error [:! =: unary operator ที่คาดไว้
ในสคริปต์ของฉันฉันพยายามตรวจสอบข้อผิดพลาดว่าอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียวเท่ากับ -v หรือไม่ แต่เป็นอาร์กิวเมนต์ที่เป็นทางเลือก ฉันใช้คำสั่ง if แต่ได้รับข้อผิดพลาดที่คาดว่าจะได้รับตัวดำเนินการยูนารี นี่คือรหัส: if [ $1 != -v ]; then echo "usage: $0 [-v]" exit fi แก้ไข: ฉันควรจะเจาะจงมากขึ้น: ส่วนนี้ของสคริปต์ข้างต้นกำลังตรวจสอบอาร์กิวเมนต์ที่เป็นทางเลือกจากนั้นหากไม่ได้ป้อนอาร์กิวเมนต์ก็ควรเรียกใช้ส่วนที่เหลือของโปรแกรม #!/bin/bash if [ "$#" -gt "1" ]; then echo "usage: $0 [-v]" exit fi if [ "$1" != -v ]; then echo "usage: $0 [-v]" exit …
99 bash 

2
Bash script เพื่อรับและส่งซ้ำพารามิเตอร์ที่ยกมา
ฉันกำลังพยายามรับพารามิเตอร์ที่ยกมาของสคริปต์ทุบตีเพื่อให้ได้รับสคริปต์ที่ซ้อนกันอย่างปลอดภัย ความคิดใด ๆ ? test.sh #!/bin/bash echo $* bash myecho.sh $* myecho.sh #!/bin/bash echo $1 echo $2 echo $3 echo $4 Sample: bash test.sh aaa bbb '"ccc ddd"' Result: aaa bbb "ccc ddd" aaa bbb "ccc ddd" Wanted result aaa bbb "ccc ddd" aaa bbb ccc ddd
98 bash  unix 

9
จะเปลี่ยนชื่อด้วยคำนำหน้า / คำต่อท้ายได้อย่างไร?
ฉันจะmv original.filename new.original.filenameไม่พิมพ์ชื่อไฟล์เดิมได้อย่างไร ฉันจะจินตนาการว่าสามารถทำอะไรบางอย่างเช่นmv -p=new. original.filenameหรือบางทีmv original.filename new.~หรืออะไรก็ได้ - แต่ฉันไม่เห็นอะไรแบบนี้หลังจากดูที่man mv/ info mvหน้า แน่นอนฉันสามารถเขียนเชลล์สคริปต์เพื่อทำสิ่งนี้ได้ แต่ไม่มีคำสั่ง / แฟล็กที่มีอยู่แล้วใช่หรือไม่
98 bash  rename  filenames  prefix  mv 

14
ฉันจะใช้ไฟล์ในคำสั่งและเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์เดียวกันโดยไม่ตัดทอนได้อย่างไร
โดยทั่วไปฉันต้องการใช้เป็นข้อความอินพุตจากไฟล์ลบบรรทัดออกจากไฟล์นั้นและส่งเอาต์พุตกลับไปที่ไฟล์เดียวกัน บางสิ่งบางอย่างตามเส้นเหล่านี้หากทำให้ชัดเจนขึ้น grep -v 'seg[0-9]\{1,\}\.[0-9]\{1\}' file_name > file_name อย่างไรก็ตามเมื่อฉันทำสิ่งนี้ฉันจะจบลงด้วยไฟล์เปล่า ความคิดใด ๆ ?
98 bash  redirect  io 

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