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

Bash (Bourne-Again SHell) เป็นเชลล์ที่ใช้ในอินเตอร์เฟสบรรทัดคำสั่งของ Ubuntu ตามค่าเริ่มต้น

1
เรียกใช้โปรแกรมจากเชลล์สคริปต์ แต่ทำงานเป็นหนึ่งกระบวนการเท่านั้น
มีวิธีที่ฉันสามารถรันแอปพลิเคชันจากเชลล์สคริปต์ แต่ไม่ได้สร้างกระบวนการอื่น ฉันต้องการให้มีลักษณะเหมือนขั้นตอนการเพียงคนเดียว ไม่ว่าเชลล์สคริปต์ของฉันจะถูกแทนที่ด้วยกระบวนการใหม่หรือไม่ว่าจะดำเนินการต่อหลังจากที่แอปพลิเคชันที่เรียกใช้สิ้นสุดลง นี่ควรแก้ไขคำถามก่อนหน้าของฉันด้วย: /ubuntu/247632/is-there-a-way-to-associate-additional-application-launcher-with-an-app ขอบคุณมากสำหรับความช่วยเหลือของคุณ .

3
“ ไม่พบคำสั่ง” เมื่อเรียกใช้“ lessc” จาก bash
ฉันได้ติดตั้งlesscผ่านทางnpmNode.js Package Manager และเมื่อฉันรันlesscจาก terminal โดยใช้ lessc /var/www/less/style.less /var/www/css/style.css มันทำงานได้อย่างสมบูรณ์แบบ อย่างไรก็ตามเมื่อฉันใส่คำสั่งเดียวกันนี้ในสคริปต์ทุบตีless.shมันกลับข้อผิดพลาด lessc : command not found. นอกจากนี้ฉันต้องเรียกใช้คำสั่งนี้จากสคริปต์ทุบตีเพราะincronโปรแกรมที่ฉันใช้ในการรวบรวมสคริปต์น้อยลงของฉันทุกครั้งที่มีการแก้ไขไม่สามารถเรียกใช้คำสั่งดังกล่าวข้างต้นซึ่งฉันเชื่อว่าอาจเกิดจาก วิธีการแปลก ๆ สำหรับการจัดการพื้นที่สีขาวในคำสั่ง
12 bash  css 

4
วิธีการพิมพ์ตัวแปรหลายบรรทัดในคอลัมน์แบบเคียงข้างกันในทุบตี?
ฉันมีสองตัวแปรซึ่งมีข้อมูลหลายบรรทัดและฉันต้องการคอลัมน์พวกเขา varA ผลตอบแทน Aug 01 Aug 04 Aug 16 Aug 26 และvarBผลตอบแทน 04:25 07:28 03:39 10:06 ถ้าฉันพิมพ์ทั้งสองตัวแปรมันจะกลับมา Aug01 Aug04 Aug16 Aug26 04:25 07:28 03:39 10:06 สิ่งที่ฉันต้องการทำคือ: Aug01 04:25 Aug04 07:28 Aug16 03:39 Aug26 10:06 ฉันยังใหม่กับการใช้ Linux และฉันขอขอบคุณคำแนะนำบางอย่าง

4
ตรวจสอบว่าเวอร์ชั่น Bash เป็น> = ระบุหมายเลขเวอร์ชั่นหรือไม่
ฉันต้องการทดสอบว่าหมายเลขเวอร์ชัน Bash คือ> = ถึงตัวเลขที่ระบุหรือไม่ เช่นฉันมี: $ bash --version GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted …

4
Bash script เพื่อตรวจสอบการเปลี่ยนแปลงไฟล์และดำเนินการคำสั่ง
ฉันมีโฟลเดอร์ที่มีโฟลเดอร์ย่อยมากมายโฟลเดอร์เหล่านี้มีasciidoctorรูปแบบการจัดเก็บพร้อม.adocส่วนขยาย ทุกครั้งที่ฉันทำการเปลี่ยนแปลงไฟล์ (ซึ่งบ่อยครั้ง) ฉันต้องเรียกใช้ asciidoctor -q filename.adoc เพื่อรวบรวมเป็นรูปแบบ HTML ฉันพยายามทำให้กระบวนการเป็นไปโดยอัตโนมัติ จนถึงตอนนี้ฉันได้มากับสิ่งนี้โดยใช้entr : ls *.adoc | entr asciidoctor -q *.adoc แต่ใช้ได้กับโฟลเดอร์ที่มีอยู่เท่านั้นไม่ใช่โฟลเดอร์ย่อย ฉันได้ลองชุดรูปแบบนี้ แต่มันไม่ทำงาน: find . -name '*.adoc' | entr asciidoctor -q *.adoc ความคิดใด ๆ ที่ฉันสามารถใช้กระบวนการอัตโนมัตินี้สำหรับโฟลเดอร์ย่อยทั้งหมดได้อย่างไร

1
ขนาดไฟล์หลักที่มี ulimit
คำถามของฉันอาจไม่เกี่ยวข้องกับ Ubuntu โดยเฉพาะ แต่เนื่องจากเดสก์ท็อปของฉันที่ใช้ระบบปฏิบัติการนี้ฉันจึงมาที่ฟอรัมนี้ ฉันกำลังพยายามเปลี่ยนขนาดไฟล์คอร์โดยใช้ulimit -cคำสั่งดังนี้: $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7959 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 …

2
Tee ไม่ได้รับผลลัพธ์ทั้งหมดจากไปป์
ฉันมีสคริปต์ดำเนินการคำสั่งเช่น: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH;./some_app -i $INDEX | tee $LOG echo "Number of errors: $(grep "ERROR" $LOG | wc -l)" teeปัญหาอาจจะอยู่ในท่อ ดูเหมือนจะไม่ได้รับผลลัพธ์ทั้งหมด เมื่อแอปพลิเคชันหยุดทำงานไม่กี่บรรทัดสุดท้ายของเอาต์พุต (โดยปกติจะเป็นแอปที่มีข้อผิดพลาดร้ายแรง) หายไป เมื่อฉันเรียกใช้แอพโดยไม่ต้องไปป์teeฉันก็เอามันออกมาได้ ฉันจะบังคับให้สคริปต์รอทีเพื่อประมวลผลเอาต์พุตทั้งหมดได้อย่างไร

2
จะเปลี่ยนเส้นทางไปยังหน้าจอรวมถึงไฟล์ได้อย่างไร?
เป้าหมายของฉันคือบันทึกผลลัพธ์ทั้งหมดจากสคริปต์ไปยังไดเรกทอรีที่สคริปต์กำลังจะสร้าง ตัวอย่างเช่นฉันมี: ~/.abc.sh: #! /bin/bash rails new myapp เมื่อฉันวิ่ง ... cd ~/code . ~/.abc.sh ... ที่จะสร้างแอพพลิเค Rails ~/code/myappใหม่ในไดเรกทอรี เมื่อ Rails กำลังสร้างแอพมันจะแสดงข้อความจำนวนมากที่ฉันต้องการรวบรวมและเก็บไว้ในล็อกไฟล์ในไดเรกทอรีเดียวกันกับrailsคำสั่งที่สร้างขึ้นใหม่ ฉันต้องการแสดงข้อความนั้นในเทอร์มินัลเช่นกัน ฉันจะทำสิ่งนี้ได้อย่างไร
12 bash  redirect 

2
วิธีตั้งค่าทางลัดบนเดสก์ท็อปใน KDE เพื่อเรียกใช้คำสั่งเทอร์มินัล
ฉันกำลังพยายามสร้างทางลัดบนเดสก์ท็อปเพื่อเปิดตัวSpyderซึ่งสามารถเปิดใช้งานได้โดยการพิมพ์spyderในเทอร์มินัล ฉันทำspy.shสคริปต์ที่มีspyderอยู่ในนั้น จะทำงานร่วมกับและbash spy.sh ./spy.shแต่เมื่อฉันสร้างทางลัดบนเดสก์ท็อปเช่นนี้: [Desktop Entry] Name=spyd Exec=/Desktop/spy.sh Comment= Icon= Type=Application Terminal=true มันทำให้เกิดข้อผิดพลาด: "มีข้อผิดพลาดในการสร้างกระบวนการลูกสำหรับเทอร์มินัลล้มเหลวในการดำเนินการกระบวนการลูก“ /Desktop/spy.sh” (ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)" ข้อผิดพลาดเดียวกันเมื่อฉันเปลี่ยนเป็น Exec=spyder ฉันควรทำอย่างไรดี?

4
วิธีแยกเอาต์พุตคำสั่งกับแต่ละบรรทัด
list=`ls -a R*` echo $list ภายในเชลล์สคริปต์คำสั่ง echo นี้จะแสดงรายการไฟล์ทั้งหมดจากไดเรกทอรีปัจจุบันเริ่มต้นด้วย R แต่ในบรรทัดเดียว ฉันจะพิมพ์แต่ละรายการในหนึ่งบรรทัดได้อย่างไร ฉันต้องมีคำสั่งทั่วไปสำหรับทุกสถานการณ์ที่เกิดขึ้นกับls, du, find -type -dฯลฯ
12 bash  scripts 

4
Grep: เครื่องหมายดอกจัน (*) ไม่ได้ผลเสมอไป
หากฉัน grep เอกสารที่มีสิ่งต่อไปนี้: ThisExampleString ... สำหรับการแสดงออกThis*Stringหรือ*Stringไม่มีอะไรจะส่งคืน อย่างไรก็ตามThis*ส่งคืนบรรทัดข้างต้นตามที่คาดไว้ การแสดงออกถูกล้อมรอบด้วยเครื่องหมายคำพูดหรือไม่ไม่ต่างกัน ฉันคิดว่าเครื่องหมายดอกจันระบุอักขระไม่ทราบจำนวนเท่าใด? ทำไมมันใช้งานได้ก็ต่อเมื่อเริ่มแสดงออก? ถ้าเรื่องนี้มีจุดมุ่งหมายพฤติกรรมสิ่งที่ฉันจะใช้แทนการแสดงออกThis*Stringและ*String?

2
ฉันจะส่งต่อชื่อไฟล์ด้วยช่องว่างเป็นอาร์กิวเมนต์ได้อย่างไร
ฉันมีสคริปต์ Python ที่ยอมรับข้อโต้แย้งสตริง $ python script.py "one image.jpg" "another image.jpg" ทำงานได้ตามที่คาดไว้ Python argparse: ["one image.jpg", "another image.jpg"] ถ้าฉันต้องการส่งชื่อไฟล์ฉันจะทำ $ python script.py $(ls "/some/dir/*.jpg") Python argparse: ["one", "image.jpg", "another", "image.jpg"] หากใช้คำสั่ง-Qของlsฉันสามารถตัดผลลัพธ์ระหว่างเครื่องหมายคำพูดคู่ อย่างไรก็ตามเครื่องหมายคำพูดจะคงอยู่ในสคริปต์ Python เช่น $ python script.py $(ls -Q "/some/dir/*.jpg") Python argparse: ['"one image.jpg"', '"another image.jpg"'] ฉันจะขยายlsชื่อไฟล์เป็นสตริงที่เหมาะสมเพื่อใช้เป็นอาร์กิวเมนต์ได้อย่างไร (เช่นในตัวอย่างแรกของฉัน)

2
“ ข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด” หลังจากแก้ไข. bashrc
ฉันพยายามเข้าถึงคลิปบอร์ด แต่เมื่อฉันป้อนข้อมูลsource ~/.bashrc ในเทอร์มินัลฉันพบข้อผิดพลาดนี้: bash: /home/taran/.bashrc: line 2: syntax error near unexpected token (' bash: /home/taran/.bashrc: line 2:alias pbpaste='xclip -selection clipboard -o'# ~/.bashrc: executed by bash(1) for non-login shells ผมพยายามที่จะทำกวดวิชาในคำตอบแกรี่ Woodfine ของการบรรทัดคำสั่งคลิปบอร์ดเข้าถึง ผลลัพธ์ของcat ~/.bashrcคือ: alias pbcopy='xclip -selection clipboard' alias pbpaste='xclip -selection clipboard -o'# ~/.bashrc: executed by bash(1) for non-login shells. …

6
ไฟล์ 'เขียนทับ' พื้นที่ว่างยังคงหายไปหรือไม่
ดังนั้นคนใจร้อนใบ้ฉันจึงใช้สคริปต์ต่อไปนี้บนเซิร์ฟเวอร์ 19.04 ของฉันในความพยายามที่จะย้ายไฟล์วิดีโอไปไว้ในโฟลเดอร์ที่มีคำนำหน้า: dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) shopt -s nocasematch for file in * do for dir in "${dirs[@]}" do if [ -d "$file" ]; then echo 'this …

5
ย่อหรือรวมหลายบรรทัดของ `&> / dev / null & '
ทุกครั้งที่เริ่มต้นเครื่องฉันเรียกใช้โปรแกรมต่อไปนี้: $ cat start.sh #! /bin/bash google-chrome &> /dev/null & lantern &> /dev/null & xdg-open . &> /dev/null & emacs &> /dev/null & code ~/Programs/ &> /dev/null & xdg-open ~/Reference/topic_regex.md &> /dev/null & ยุ่งยาก&> /dev/null &... ฉันจะทำให้ตรรกะสั้นลงได้อย่างไร

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