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

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

15
จะลบช่องว่างต่อท้ายของไฟล์ทั้งหมดแบบวนซ้ำได้อย่างไร?
คุณจะลบช่องว่างต่อท้ายทั้งหมดของโปรเจ็กต์ทั้งหมดได้อย่างไร เริ่มต้นที่ไดเร็กทอรีรูทและลบช่องว่างต่อท้ายออกจากไฟล์ทั้งหมดในโฟลเดอร์ทั้งหมด นอกจากนี้ฉันต้องการที่จะสามารถแก้ไขไฟล์ได้โดยตรงและไม่ใช่แค่พิมพ์ทุกอย่างเป็น stdout เท่านั้น
122 bash  whitespace 

5
วิธีรวมไฟล์ในสคริปต์ bash shell
มีวิธีรวมเชลล์สคริปต์อื่นในเชลล์สคริปต์เพื่อให้สามารถเข้าถึงฟังก์ชันได้หรือไม่? เช่นเดียวกับใน PHP คุณสามารถใช้includeคำสั่งกับไฟล์ PHP อื่น ๆ เพื่อเรียกใช้ฟังก์ชันที่มีอยู่ภายในเพียงแค่เรียกชื่อฟังก์ชัน
122 linux  bash  include 

5
จุดเข้านักเทียบท่าที่เรียกใช้สคริปต์ทุบตีได้รับ“ การอนุญาตถูกปฏิเสธ”
ฉันกำลังพยายามเทียบท่าแอป node.js เมื่อคอนเทนเนอร์ถูกสร้างขึ้นฉันต้องการให้มันรันgit cloneและเริ่มเซิร์ฟเวอร์โหนด ดังนั้นฉันจึงใส่การดำเนินการเหล่านี้ในสคริปต์. sh และรันสคริปต์เป็นคำสั่งเดียวใน ENTRYPOINT: FROM ubuntu:14.04 RUN apt-get update && apt-get install -y build-essential libssl-dev gcc curl npm git #install gcc 4.9 RUN apt-get install -y software-properties-common python-software-properties RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test RUN apt-get update RUN apt-get install -y libstdc++-4.9-dev #install newst nodejs RUN curl -sL …
122 bash  shell  docker 

20
ฉันจะหนีช่องว่างในรายการ bash loop ได้อย่างไร
ฉันมีสคริปต์ bash เชลล์ที่วนซ้ำผ่านไดเร็กทอรีชายน์ทั้งหมด (แต่ไม่ใช่ไฟล์) ของไดเร็กทอรีบางรายการ ปัญหาคือชื่อไดเร็กทอรีบางชื่อมีช่องว่าง นี่คือเนื้อหาของไดเร็กทอรีทดสอบของฉัน: $ls -F test Baltimore/ Cherry Hill/ Edison/ New York City/ Philadelphia/ cities.txt และรหัสที่วนซ้ำในไดเรกทอรี: for f in `find test/* -type d`; do echo $f done นี่คือผลลัพธ์: การทดสอบ / บัลติมอร์ การทดสอบ / เชอร์รี่ เนินเขา การทดสอบ / เอดิสัน การทดสอบ / New นิวยอร์ก เมือง การทดสอบ / เดลเฟีย …
121 bash  loops  whitespace 

8
การซ่อนอินพุตของผู้ใช้บนเทอร์มินัลในสคริปต์ Linux
ฉันมีสคริปต์ทุบตีดังต่อไปนี้: #!/bin/bash echo "Please enter your username"; read username; echo "Please enter your password"; read password; ฉันต้องการให้เมื่อผู้ใช้พิมพ์รหัสผ่านบนเทอร์มินัลไม่ควรแสดง (หรือบางอย่างเช่น *******)) ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
121 linux  bash  scripting 

14
วิธีพกพาในการรับขนาดไฟล์ (เป็นไบต์) ในเชลล์?
บน Linux ฉันใช้stat --format="%s" FILEแต่ Solaris ที่ฉันเข้าถึงไม่มีคำสั่ง stat ฉันควรใช้อะไร? ฉันกำลังเขียนสคริปต์ Bash และไม่สามารถติดตั้งซอฟต์แวร์ใหม่ในระบบได้ ฉันพิจารณาแล้วว่าใช้: perl -e '@x=stat(shift);print $x[7]' FILE หรือแม้กระทั่ง: ls -nl FILE | awk '{print $5}' แต่สิ่งเหล่านี้ดูไม่สมเหตุสมผล - ใช้ Perl เพื่อรับขนาดไฟล์? หรือรัน 2 คำสั่งทำเหมือนกัน?
121 linux  bash  shell  solaris 

5
Linux bash: การกำหนดตัวแปรหลายตัว
มีอยู่ใน linux bash ซึ่งคล้ายกับโค้ดต่อไปนี้ใน PHP: list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ; กล่าวคือคุณกำหนดค่าที่สอดคล้องกันให้กับตัวแปร 3 ตัวในประโยคเดียว สมมติว่าฉันมีฟังก์ชัน bash myBashFuntionที่เขียนเพื่อ stdout สตริง "qwert asdfg zxcvb" เป็นไปได้ไหมที่จะทำสิ่งต่างๆเช่น: (var1 var2 var3) = ( `myBashFuntion param1 param2` ) ส่วนที่อยู่ทางซ้ายของเครื่องหมายเท่ากับไม่ใช่ไวยากรณ์ที่ถูกต้องแน่นอน ฉันแค่พยายามอธิบายสิ่งที่ฉันขอ สิ่งที่ได้ผลมีดังต่อไปนี้: array = ( `myBashFuntion param1 param2` ) echo ${array[0]} ${array[1]} ${array[2]} แต่อาร์เรย์ที่จัดทำดัชนีจะไม่สามารถอธิบายได้เหมือนกับชื่อตัวแปรธรรมดา อย่างไรก็ตามฉันสามารถทำได้: var1 = …

5
คำสั่ง Multiline bash ใน makefile
ฉันมีวิธีที่สะดวกสบายมากในการรวบรวมโปรเจ็กต์ของฉันผ่านคำสั่ง bash สองสามบรรทัด แต่ตอนนี้ฉันต้องรวบรวมผ่าน makefile เมื่อพิจารณาว่าทุกคำสั่งทำงานในเชลล์ของตัวเองคำถามของฉันคืออะไรคือวิธีที่ดีที่สุดในการเรียกใช้คำสั่ง bash แบบหลายบรรทัดโดยขึ้นอยู่กับกันและกันใน makefile ตัวอย่างเช่นนี้: for i in `find` do all="$all $i" done gcc $all นอกจากนี้ใครบางคนสามารถอธิบายได้ว่าทำไมแม้แต่คำสั่งบรรทัดเดียวจึงbash -c 'a=3; echo $a > file'ทำงานได้อย่างถูกต้องในเทอร์มินัล แต่สร้างไฟล์เปล่าใน makefile case?
121 bash  makefile 

5
แยกส่วนของสตริงโดยใช้ bash / cut / split
ฉันมีสตริงดังนี้: /var/cpanel/users/joebloggs:DNS9=domain.com ฉันต้องการแยกชื่อผู้ใช้ ( joebloggs) จากสตริงนี้และเก็บไว้ในตัวแปร รูปแบบของสตริงจะเป็นเช่นเดียวกันกับการยกเว้นjoebloggsและdomain.comดังนั้นฉันคิดสตริงสามารถแบ่งออกเป็นครั้งที่สองโดยใช้cut? การแบ่งส่วนแรกจะแบ่งออก:และเราจะเก็บส่วนแรกไว้ในตัวแปรเพื่อส่งต่อไปยังฟังก์ชันการแบ่งตัวที่สอง การแยกครั้งที่สองจะแบ่ง/และเก็บคำสุดท้าย ( joebloggs) ไว้ในตัวแปร ฉันรู้วิธีทำใน php โดยใช้อาร์เรย์และการแยก แต่ฉันหลงทางนิดหน่อย
121 string  bash 

4
VSCode Change Default Terminal
ฉันใช้ Visual Studio Code บนพีซี Windows 10 ของฉัน ฉันต้องการเปลี่ยนเทอร์มินัลเริ่มต้นจาก Windows PowerShell เป็น Bash บน Ubuntu (บน Windows) ฉันจะทำเช่นนั้นได้อย่างไร?

12
บน EC2: ไม่พบคำสั่ง sudo node แต่โหนดที่ไม่มี sudo ก็โอเค
ฉันเพิ่งติดตั้ง nodejs บนอินสแตนซ์ไมโคร EC2 ใหม่ ฉันติดตั้งตามปกติ, ./configure -> make -> sudo ทำการติดตั้ง ปัญหา:เมื่อฉันเรียกใช้ "node" ภายใต้ ec2-user มันจะทำงานได้อย่างสมบูรณ์แบบ เมื่อฉันเรียกใช้ "sudo node" มันล้มเหลว ฉันพบว่าโหนดอยู่ใน: [ec2-user@XXXX ~]$ whereis node node: /usr/local/bin/node /usr/local/lib/node และเส้นทางปัจจุบันคือ [ec2-user@XXXX ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin แต่เส้นทาง sudo คือ [root@ip-10-112-222-32 ~]# echo $PATH /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin จากนั้นฉันพยายามแก้ไขเส้นทางรูทเพื่อรวมพา ธ ไปยังโหนดดังนั้น "โหนด" จึงทำงานเมื่อฉันเข้าสู่ระบบในฐานะรูท - แต่ก็ยังใช้ไม่ได้เมื่อฉันเข้าสู่ระบบในฐานะผู้ใช้ …
120 node.js  bash  amazon-ec2  sudo 

3
DESTDIR และ PREFIX ของ make
ฉันกำลังพยายามติดตั้งซอฟต์แวร์ไปยังไดเร็กทอรีเฉพาะ ฉันพบหลายวิธี แต่ไม่แน่ใจว่ามีความแตกต่างกันอย่างไร ./configure --prefix=*** make install DESTDIR=*** make install prefix=*** ฉันสับสนเกี่ยวกับการทำงานของทั้งสามอย่างนี้ พวกเขาบรรลุเป้าหมายเดียวกันหรือไม่?
120 c  linux  bash  makefile  configure 

7
จะตั้งนามแฝงใน Git Bash สำหรับ Windows ได้อย่างไร
วิธีการใช้นามแฝงคำสั่งใน Git Bash สำหรับ Windows ที่ดาวน์โหลดจาก git-scm.com ฉันหมายถึงคำสั่ง Bash ไม่ใช่ Git (วินโดว 7) แก้ไข: การเขียนนามแฝงใน.bashrcไฟล์ (ตามที่แนะนำโดย@gturri ) ไม่ได้เพิ่มในคอนโซล (หลังจากรีบูตระบบ) (ฉันไม่เคยเขียนนามแฝงสำหรับlsคำสั่งดังนั้นจึงควรเป็นนามแฝงเริ่มต้นบางส่วน)
120 git  bash 

3
เลือกระหว่าง $ 0 ถึง BASH_SOURCE
วิธีการเลือกระหว่าง"$0"และ"${BASH_SOURCE[0]}" คำอธิบายจากGNUนี้ไม่ได้ช่วยอะไรฉันมากนัก BASH_SOURCE An array variable whose members are the source filenames where the corresponding shell function names in the FUNCNAME array variable are defined. The shell function ${FUNCNAME[$i]} is defined in the file ${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]}
120 bash 

10
macOS Catalina 10.15 (เบต้า) - เหตุใด ~ / .bash_profile จึงไม่มีที่มาจากเชลล์ของฉัน
ฉันต้องการที่จะตั้งค่าตัวแปรสภาพแวดล้อมฉันเพิ่มด้านล่างเส้น~/.bash_profileและ~/.profileแต่มันก็ไม่ได้ทำงาน export JBOSS_HOME=/Users/{USERNAME}/Desktop/jboss7 หลังจากนั้นออกจากเทอร์มินัลและเปิดอีกครั้งเมื่อดำเนินการecho $JBOSS_HOMEฉันไม่ได้รับอะไรเลย

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