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

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


2
ฉันจะแปลงชุดรูปภาพเป็น PDF จากบรรทัดคำสั่งบน linux ได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน8 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันมีเซิร์ฟเวอร์สแกนที่ฉันเขียนด้วย cgi / bash และต้องการให้สามารถแปลงรูปภาพจำนวนมาก (ทั้งหมดในโฟลเดอร์เดียว) เป็นไฟล์ pdf จากบรรทัดคำสั่ง จะทำอย่างไร?
215 image  bash  pdf 

12
วิธีการติดตั้ง Homebrew บน OS X
ฉันกำลังพยายามติดตั้ง Homebrew บน OS X ตามไซต์ Homebrew ฉันควรพิมพ์ brew install wget และทั้งหมดที่ฉันได้รับคือ -bash: brew: command not found ดังนั้นฉันค้นหา StackOverflow และพบคำตอบนี้ แต่ปัญหาคือผมไม่เห็นในbrew/usr/local/bin ดังนั้นฉันจึงเพิ่มบรรทัดต่อไปนี้ใน.bashrcไฟล์ของฉัน export PATH=/usr/local/bin:$PATH แต่ฉันยังคงได้รับcommand not foundข้อผิดพลาด ฉันจะติดตั้ง Homebrew บน OS X ได้อย่างไร
213 macos  bash  install  homebrew 

15
วิธีแทรกข้อความที่จุดเริ่มต้นของไฟล์ได้อย่างไร
จนถึงตอนนี้ฉันสามารถค้นหาวิธีเพิ่มบรรทัดที่จุดเริ่มต้นของไฟล์ได้ แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉันจะแสดงมันเป็นตัวอย่าง เนื้อหาไฟล์ some text at the beginning ผลลัพธ์ <added text> some text at the beginning มันคล้ายกัน แต่ฉันไม่ต้องการสร้างบรรทัดใหม่ด้วย ... ฉันต้องการทำสิ่งนี้ด้วยsedถ้าเป็นไปได้
213 linux  bash  sed 

7
วิธีสร้างผู้ใช้ / ฐานข้อมูลในสคริปต์สำหรับ Docker Postgres
ฉันพยายามตั้งค่าคอนเทนเนอร์สำหรับอินสแตนซ์ postgres การพัฒนาโดยการสร้างผู้ใช้ & ฐานข้อมูลแบบกำหนดเอง ฉันใช้อย่างเป็นทางการภาพ postgres นักเทียบท่า ในเอกสารคู่มือนั้นแนะนำให้คุณใส่ bash script ภายใน/docker-entrypoint-initdb.d/โฟลเดอร์เพื่อตั้งค่าฐานข้อมูลด้วยพารามิเตอร์ที่กำหนดเอง สคริปต์ทุบตีของฉัน: make_db.sh su postgres -c "createuser -w -d -r -s docker" su postgres -c "createdb -O docker docker" Dockerfile FROM library/postgres RUN ["mkdir", "/docker-entrypoint-initdb.d"] ADD make_db.sh /docker-entrypoint-initdb.d/ ข้อผิดพลาดที่ฉันได้รับจากdocker logs -f db(db คือชื่อคอนเทนเนอร์ของฉัน) คือ: createuser: ไม่สามารถเชื่อมต่อกับฐานข้อมูล postgres: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว …

5
ความหมายของข้อผิดพลาด“ [: มีอาร์กิวเมนต์มากเกินไป” จากถ้า [] (วงเล็บเหลี่ยม)
ฉันไม่พบทรัพยากรที่ตรงไปตรงมาเรียบง่ายสะกดความหมายของและแก้ไขข้อผิดพลาดเชลล์ BASH ต่อไปนี้ดังนั้นฉันโพสต์สิ่งที่ฉันพบหลังจากทำการวิจัย ข้อผิดพลาด: -bash: [: too many arguments รุ่นที่เหมาะกับ bash open square bracket colon too many argumentsGoogle: บริบท:เงื่อนไข if ในวงเล็บเหลี่ยมเดียวที่มีตัวดำเนินการเปรียบเทียบอย่างง่ายเช่นเท่ากับมากกว่า ฯลฯ ตัวอย่างเช่น: VARIABLE=$(/some/command); if [ $VARIABLE == 0 ]; then # some action fi

6
ทำไม #! / usr / bin / env ทุบตีดีกว่า #! / bin / bash?
ผมเคยเห็นในหลายสถานที่รวมถึงคำแนะนำในเว็บไซต์นี้ ( อะไรคือสิ่งที่ต้องการ shebang ทุบตี? ) เพื่อใช้ในการตั้งค่า#!/usr/bin/env bash #!/bin/bashผมเคยเห็นแม้กระทั่งบุคคลกล้าได้กล้าเสียหนึ่งแนะนำให้ใช้#!/bin/bashเป็นที่ไม่ถูกต้องและการทำงานทุบตีจะหายไปโดยการทำเช่นนั้น จากทั้งหมดที่กล่าวมาฉันใช้ bash ในสภาพแวดล้อมการทดสอบที่ควบคุมอย่างเข้มงวดโดยที่ไดรฟ์ทุกตัวในการหมุนเวียนนั้นเป็นโคลนของไดรฟ์หลักเพียงตัวเดียว ฉันเข้าใจข้อโต้แย้งการพกพาแม้ว่าจะไม่จำเป็นต้องใช้ในกรณีของฉัน มีเหตุผลอื่นอีกหรือไม่ที่จะ#!/usr/bin/env bashเลือกทางเลือกอื่น ๆ และหากการพกพานั้นเป็นเรื่องที่น่ากังวล
212 bash  shebang 

4
การเรียงลำดับข้อมูลตามคอลัมน์ที่สองของไฟล์
ฉันมีไฟล์สองคอลัมน์และ nจำนวนแถว คอลัมน์ 1 มีnamesและ agecolumn2 ฉันต้องการเรียงลำดับเนื้อหาของไฟล์นี้ตามลำดับจากน้อยไปหามาก age (ในคอลัมน์ที่สอง) ผลลัพธ์ควรแสดงถึงnameบุคคลที่อายุน้อยที่สุดพร้อมด้วยnameและจากนั้นเป็นบุคคลที่อายุน้อยที่สุดที่สองเป็นต้น ... คำแนะนำสำหรับเปลือกซับหนึ่งหรือสคริปต์ทุบตี
212 bash  shell  unix 

10
การส่งคืนบูลีนจากฟังก์ชัน Bash
ฉันต้องการเขียนฟังก์ชั่นทุบตีที่ตรวจสอบว่าไฟล์มีคุณสมบัติบางอย่างและส่งกลับจริงหรือเท็จ จากนั้นฉันสามารถใช้มันในสคริปต์ของฉันใน "ถ้า" แต่สิ่งที่ฉันควรกลับมา? function myfun(){ ... return 0; else return 1; fi;} จากนั้นฉันใช้มันเช่นนี้ if myfun filename.txt; then ... แน่นอนว่ามันไม่ได้ผล สิ่งนี้จะสำเร็จได้อย่างไร
211 bash  shell  boolean 

4
วิธีใช้ทุบตีกับภาพนักเทียบท่าที่ใช้อัลไพน์?
ฉันสร้างภาพนักเทียบท่าจาก openjdk: 8-jdk-alpine แต่เมื่อฉันพยายามรันคำสั่งง่ายๆฉันได้รับข้อผิดพลาดต่อไปนี้: RUN bash /bin/sh: bash: not found RUN ./gradlew build env: can't execute 'bash': No such file or directory

22
วิธีคัดลอกไฟล์ไปยังหลายไดเรกทอรีโดยใช้คำสั่ง gnu cp
เป็นไปได้หรือไม่ที่จะคัดลอกไฟล์เดียวไปยังหลายไดเรกทอรีโดยใช้คำสั่ง cp? ฉันลองสิ่งต่อไปนี้ซึ่งใช้งานไม่ได้: cp file1 /foo/ /bar/ cp file1 {/foo/,/bar} ฉันรู้ว่ามันเป็นไปได้โดยใช้ for loop หรือ find แต่มันเป็นไปได้โดยใช้คำสั่ง gnu cp?
210 linux  bash  shell 

13
คำสั่งเพื่อรับบรรทัดที่ n ของ STDOUT
มีคำสั่ง bash ใดบ้างที่จะให้คุณได้บรรทัดที่ n ของ STDOUT? กล่าวคือสิ่งที่จะใช้เวลานี้ $ ls -l -rw-r--r--@ 1 root wheel my.txt -rw-r--r--@ 1 root wheel files.txt -rw-r--r--@ 1 root wheel here.txt และทำสิ่งที่ชอบ $ ls -l | magic-command 2 -rw-r--r--@ 1 root wheel files.txt ฉันรู้ว่าสิ่งนี้จะเป็นวิธีปฏิบัติที่ไม่ดีเมื่อเขียนสคริปต์เพื่อนำมาใช้ซ้ำ แต่เมื่อทำงานกับเชลล์แบบวันต่อวันมันจะมีประโยชน์สำหรับฉันที่จะกรอง STDOUT ของฉันในลักษณะนี้ ฉันก็รู้ว่านี่จะเป็นคำสั่งแบบกึ่ง ๆ เขียน (buffer STDOUT ส่งคืนบรรทัดที่ระบุ) แต่ฉันต้องการทราบว่ามีคำสั่งเชลล์มาตรฐานบางอย่างที่จะทำสิ่งนี้ซึ่งจะพร้อมใช้งานโดยที่ฉันไม่ปล่อยสคริปต์ลง
210 bash  shell  sed  stdout 

9
หลายคำสั่งในนามแฝงสำหรับทุบตี
ฉันต้องการกำหนดนามแฝงที่รันสองคำสั่งต่อไปนี้อย่างต่อเนื่อง gnome-screensaver gnome-screensaver-command --lock ตอนนี้ฉันได้เพิ่ม alias lock='gnome-screensaver-command --lock' เป็น. bashrc ของฉัน แต่เนื่องจากฉันล็อคเวิร์กสเตชันของฉันบ่อยครั้งมันจะง่ายกว่าถ้าพิมพ์คำสั่งเดียว

6
ฉันจะใช้ไวยากรณ์ Bash ในเป้าหมาย Makefile ได้อย่างไร
ฉันมักจะพบทุบตีdiff <(sort file1) <(sort file2)ไวยากรณ์ประโยชน์มากเปลี่ยนตัวกระบวนการเช่นเหมือนใน เป็นไปได้ไหมที่จะใช้คำสั่ง Bash ใน Makefile ฉันกำลังคิดถึงสิ่งนี้: file-differences: diff <(sort file1) <(sort file2) > $@ ใน GNU Make 3.80 ของฉันนี่จะทำให้เกิดข้อผิดพลาดเนื่องจากใช้shellแทนbashการใช้คำสั่ง
208 bash  shell  makefile 

8
วิธีการตรวจสอบว่ามีการเชื่อมโยง
ฉันพยายามตรวจสอบว่า symlink มีอยู่ในทุบตี นี่คือสิ่งที่ฉันได้ลอง mda=/usr/mda if [ ! -L $mda ]; then echo "=> File doesn't exist" fi mda='/usr/mda' if [ ! -L $mda ]; then echo "=> File doesn't exist" fi อย่างไรก็ตามนั่นไม่ได้ผล ถ้า '!' ถ้า ถูกปล่อยออกไปมันจะไม่เรียก และถ้า '!' อยู่ที่นั่นมันทริกเกอร์ทุกครั้ง
208 bash  symlink 

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