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

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

3
เชลล์: ขึ้นบรรทัดใหม่ต่อท้าย ('\ n') ในการทดแทนคำสั่ง
ฉันต้องการที่จะสามารถที่จะจับเอาท์พุทแน่นอนของแทนคำสั่งรวมทั้งตัวอักษรต่อท้ายบรรทัดใหม่ ฉันรู้ว่าพวกเขาถูกปล้นโดยค่าเริ่มต้นดังนั้นการจัดการบางอย่างอาจจำเป็นต้องเก็บไว้และฉันต้องการเก็บรหัสทางออกดั้งเดิมไว้ ตัวอย่างเช่นกำหนดคำสั่งด้วยจำนวนตัวแปรของการขึ้นบรรทัดใหม่และรหัสออก: f(){ for i in $(seq "$((RANDOM % 3))"); do echo; done; return $((RANDOM % 256));} export -f f ฉันต้องการเรียกใช้บางสิ่งเช่น: exact_output f และมีผลลัพธ์เป็น: Output: $'\n\n' Exit: 5 ฉันสนใจทั้งในbashและ shPOSIX
14 bash  shell 

1
bash: คำเตือน: ระดับเชลล์ (1,000) สูงเกินไปตั้งค่าเป็น 1
ฉันพยายามเรียกใช้คำสั่งนี้: /etc/ssl/acme/acme.sh --log /var/log/p3x/acme/acme.sh.log --home /etc/ssl/acme --force --issue -d patrikx3.tk -w /var/www/acme-challenge ฉันได้รับข้อผิดพลาดนี้: bash: คำเตือน: ระดับเชลล์ (1,000) สูงเกินไปตั้งค่าเป็น 1 ข้อผิดพลาดนี้คืออะไร?
14 bash 

4
วิธีการทำให้ bash glob เป็นตัวแปรสตริง
ข้อมูลระบบ ระบบปฏิบัติการ: OS X bash: GNU bash, รุ่น 3.2.57 (1) - ปล่อย (x86_64-apple-darwin16) พื้นหลัง ฉันต้องการให้ไทม์แมชชีนแยกชุดไดเรกทอรีและไฟล์ออกจากโครงการ git / nodejs ทั้งหมดของฉัน ไดเรกทอรีโครงการของฉันอยู่ใน~/code/private/และดังนั้นฉันพยายามที่จะใช้ทุบตีวนลูปที่จะทำ~/code/public/tmutil ปัญหา เวอร์ชั่นสั้น หากฉันมีตัวแปรสตริงที่คำนวณได้kฉันจะทำให้มันกลมกลืนไปหรือขวาก่อน for-loop ได้อย่างไร: i='~/code/public/*' j='*.launch' k=$i/$j # $k='~/code/public/*/*.launch' for i in $k # I need $k to glob here do echo $i done k=$i/$jในรุ่นยาวด้านล่างนี้คุณจะเห็น ดังนั้นฉันไม่สามารถเข้ารหัสสตริงใน for for loop …

1
เรียกใช้ฟังก์ชันทุบตีหลายอย่างในพื้นหลังและรอจนกระทั่งพวกเขากลับมา
นี่เป็นสคริปต์อย่างง่ายที่รันnvidia-smiคำสั่งบนหลายโฮสต์และบันทึกเอาต์พุตไปยังไฟล์ทั่วไป เป้าหมายที่นี่คือการทำให้มันทำงานแบบไม่พร้อมกัน อยู่ใน&ตอนท้ายของprocess_host()ฟังก์ชั่นโทรเพียงพอ? สคริปต์ของฉันถูกต้องหรือไม่ #!/bin/bash HOSTS=(host1 host2 host3) OUTPUT_FILE=nvidia_smi.txt rm $OUTPUT_FILE process_host() { host=$1 echo "Processing" $host output=`ssh ${host} nvidia-smi` echo ${host} >> $OUTPUT_FILE echo "$output" >> $OUTPUT_FILE } for host in ${HOSTS[@]}; do process_host ${host} & done; wait cat $OUTPUT_FILE

4
รันคำสั่งเดียวกันหลาย ๆ ครั้งในพื้นหลัง
เป็นไปได้อย่างไรที่จะเรียกใช้หลายคำสั่งและใช้แบ็คกราวน์โดยใช้ bash? ตัวอย่างเช่น: $ for i in {1..10}; do wait file$i &; done โดยที่ wait เป็นไบนารีที่กำหนดเอง ตอนนี้ฉันได้รับข้อผิดพลาด: syntax error near unexpected token `;' เมื่อรันคำสั่งด้านบน เมื่อพื้นหลังคำสั่งควรทำงานในแบบคู่ขนาน

3
ค้นหาโฟลเดอร์นามสกุล PHP โดยใช้ bash
ฉันกำลังพยายามสร้างสคริปต์ทุบตีเพื่อติดตั้งส่วนขยาย Source Guardian PHP แต่ไดเรกทอรีปลายทางแตกต่างกันใน Ubuntu ทุกรุ่นที่ตามมา การติดตั้ง PHP5 บน Ubuntu 14.04 ส่งผลให้ส่วนขยายที่ถูกเก็บไว้ใน / usr / lib / php5 / 20121212 + lfs / ใน Ubuntu 15.04 ไดเรกทอรีนี้มีการเปลี่ยนแปลงเช่น / usr / lib / 20131226 / ฉันได้ตรวจสอบ /etc/php5/fpm/php.ini และ /etc/php5/fpm/php-fpm.conf แล้ว แต่ไฟล์เหล่านี้ไม่ได้กล่าวถึง 20121212 + lfs หรือ 20131226 หากฉันวางส่วนขยาย Source Guardian ไว้ที่อื่นจะไม่โหลด …
14 bash  ubuntu  php 

3
สคริปต์เพื่อตรวจสอบว่าใบรับรอง SSL ถูกต้องหรือไม่
ฉันมีใบรับรอง SSL หลายใบและฉันต้องการรับการแจ้งเตือนเมื่อใบรับรองหมดอายุ ความคิดของฉันคือการสร้าง cronjob ซึ่งรันคำสั่งง่ายๆทุกวัน ฉันรู้ว่าopensslคำสั่งใน Linux สามารถใช้เพื่อแสดงข้อมูลใบรับรองของเซิร์ฟเวอร์ระยะไกลเช่น: openssl s_client -connect www.google.com:443 แต่ฉันไม่เห็นวันหมดอายุในผลลัพธ์นี้ นอกจากนี้ผมต้องบอกเลิกคำสั่งนี้ด้วย+CTRLc ฉันจะตรวจสอบการหมดอายุของใบรับรองระยะไกลจากสคริปต์ (ควรใช้openssl) และทำใน "โหมดแบทช์" เพื่อให้ทำงานโดยอัตโนมัติโดยไม่ต้องมีการโต้ตอบกับผู้ใช้?

4
ให้สองคำสั่งพื้นหลังยุติหนึ่งที่เหลือเมื่อออกอย่างใดอย่างหนึ่ง
ฉันมีสคริปต์ทุบตีง่ายๆที่เริ่มต้นเซิร์ฟเวอร์สองเครื่อง: #!/bin/bash (cd ./frontend && gulp serve) & (cd ./backend && gulp serve --verbose) หากคำสั่งที่สองออกจากดูเหมือนว่าคำสั่งแรกยังคงทำงานอยู่ ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไรหากคำสั่งใดคำสั่งหนึ่งจบลงคำสั่งอื่นจะถูกยกเลิก? โปรดทราบว่าเราไม่จำเป็นต้องตรวจสอบระดับข้อผิดพลาดของกระบวนการพื้นหลังไม่ว่าจะมีการออกจาก

4
ไฟล์. bashrc อยู่ที่ไหนใน Linux?
ฉันไม่พบ. bash_login และ. bash_profile ของฉัน root@linux:~# locate .bash* /etc/bash.bashrc /etc/skel/.bashrc /etc/skel/.bashrc.original /home/noroot/.bashrc /home/noroot/.bashrc.original /root/.bash_history /root/.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc /usr/share/kali-defaults/.bashrc root@linux:~# มีไฟล์. bashrc และ. bash_profile เพียงไฟล์เดียวสำหรับผู้ใช้ทุกคนหรือไม่ และ. bashrc และ. bash_profile มักจะพบในไดเรกทอรี / home / "ชื่อผู้ใช้" หรือไม่?

2
คำสั่งที่ต่อเนื่องกัน
ฉันถูกต้องหรือไม่ที่จะสมมติว่าเมื่อ;รวมสองคำสั่งในบรรทัด Bash จะรอจนกว่าคำสั่งแรกจะออกก่อนที่จะดำเนินการคำสั่งที่สองหรือไม่ และในทำนองเดียวกันในเชลล์สคริปต์ที่มีสองคำสั่งต่างกันในบรรทัดที่ต่างกัน Bash จะรอจนกว่าคำสั่งในบรรทัดแรกจะออกก่อนที่จะดำเนินการคำสั่งในบรรทัดที่สองหรือไม่ หากเป็นกรณีนี้มีวิธีดำเนินการสองคำสั่งในหนึ่งบรรทัดหรือในสคริปต์เพื่อให้คำสั่งที่สองไม่รอจนกว่าคำสั่งแรกจะเสร็จสิ้นหรือไม่ นอกจากนี้บรรทัดต่าง ๆ ในเชลล์สคริปต์เทียบเท่ากับบรรทัดที่แยกจากกันโดย;หรือ&&?
14 bash 

2
/ bin / sh: ข้อผิดพลาดการนำเข้าคำจำกัดความฟังก์ชันสำหรับ 'some-function'
ฉันพบข้อผิดพลาดนี้เมื่ออัปเดต bash สำหรับปัญหาด้านความปลอดภัย CVE-2014-6271: # yum update bash Running transaction (shutdown inhibited) Updating : bash-4.2.47-4.fc20.x86_64 /bin/sh: error importing function definition for `some-function'
14 bash  shell  function 

3
รหัสส่งคืนที่เชื่อถือได้ของกระบวนการพื้นหลัง
สมมติว่าชิ้นส่วนของรหัสทุบตีต่อไปนี้: foo > logfile 2>&1 & foo_pid=$! while ps -p$foo_pid do ping -c 1 localhost done wait $foo_pid if [[ $? == 0 ]] then echo "foo success" fi มีความปลอดภัยหรือไม่ที่จะสมมติว่า$?มีรหัสส่งคืนของfooและไม่ใช่รหัสส่งคืนpingใช่หรือไม่ หากคำตอบของคำถามนั้นคือ: "คุณไม่สามารถสันนิษฐานได้" แล้วฉันจะแก้ไขรหัสชิ้นนี้เพื่อให้แน่ใจว่า$?มีรหัสที่ส่งคืนได้fooอย่างไร

2
จะเก็บไฟล์รูปภาพในตัวแปร bash ได้อย่างไร?
หลังจากที่ฉันใช้คำสั่งต่อไปนี้ pngString="$(cat example.png)" echo -n "$pngString" > tmp.png ฉันไม่สามารถเปิด tmp.png เป็นไฟล์ PNG ได้ ข้อมูลบางอย่างอาจหายไปเมื่อฉันใช้$pngStringเพื่อจัดเก็บไฟล์ภาพ ดังนั้นคำถามคือฉันจะเก็บข้อมูลภาพทั้งหมดโดยใช้ตัวแปรในสคริปต์ทุบตีได้อย่างไร
14 bash  cat  images  binary  variable 

2
HISTTIMEFORMAT ไม่แสดงวันที่และเวลาที่ถูกต้องสำหรับประวัติ
หลังจากส่งออกHISTTIMEFORMAT='%F %T'ฉันพยายามค้นหาhistory แต่ผลลัพธ์แสดงคำสั่งทั้งหมดที่ดำเนินการในวันเดียวกัน ฉันจะตรวจสอบวันที่และเวลาจริงของการดำเนินการคำสั่งจริงได้อย่างไร

2
find คำสั่งที่มีตัวนับ regex เช่น {1,2}
ฉันพยายามสร้างสตริงคำสั่ง find ที่จะค้นหาไฟล์ทั้งหมดที่ลงท้ายด้วยหมายเลข 1-99 แต่ไม่รวมไฟล์อื่นทั้งหมด เช่นฉันต้องการค้นหาmyfile1 myfile99แต่ไม่ใช่myfile456และไม่ใช่myfilebackup regex ที่ฉันคิดคือคือmyfile[1-9]{1,2}แต่ฉันไม่สามารถทำงานกับการค้นหา find . -regex '.*myfile[0-9]{1,2}' หรือ find . -iname 'myfile[0-9]{1,2}' จากสิ่งที่ฉันเห็นมันเป็น{1,2}ส่วนที่ไม่ทำงาน (โดยวิธีการที่คุณสามารถใช้-name -regexinterchangably?) ความช่วยเหลือใด ๆ ที่ชื่นชม

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