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

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

3
ซึ่งเป็นสำนวนในสคริปต์ทุบตีมากขึ้น: `|| true` หรือ `|| `?
ฉันไม่ได้ทำสคริปต์เชลล์มากนักดังนั้นฉันแปลกใจเล็กน้อยเมื่อฉันอ่านเอกสารสำหรับgit submoduleและฉันเห็นไวยากรณ์ที่ใช้ในเอกสารนี้: การส่งคืนที่ไม่เป็นศูนย์จากคำสั่งใน submodule ใด ๆ ทำให้การประมวลผลสิ้นสุดลง สิ่งนี้สามารถแทนที่ได้โดยการเพิ่ม|| :ไปยังจุดสิ้นสุดของคำสั่ง ฉันต้องค้นหาว่า|| :เป็นการจดชวเลขเพื่อบังคับให้ออกคำสั่งให้สำเร็จ || trueเมื่อใดก็ตามที่ฉันเคยที่จะทำให้ประสบความสำเร็จในการออกจากคำสั่งผมใช้ จะ|| :ถือว่าเป็นสำนวนมากขึ้น?
36 bash  shell 

3
หนึ่งจะรันหลายโปรแกรมในพื้นหลังด้วยคำสั่งเดียวได้อย่างไร
หนึ่งจะรันหลายโปรแกรมในพื้นหลังด้วยคำสั่งเดียวได้อย่างไร ฉันลองคำสั่งด้านล่างแล้ว แต่มันไม่ทำงาน nohup ./script1.sh & && nohup ./script2.sh & -bash: syntax error near unexpected token '&&' nohup ./script1.sh & ; nohup ./script2.sh & -bash: syntax error near unexpected token ';'

4
การอ่านบรรทัดจากไฟล์ที่มี bash: for vs. while
ฉันพยายามอ่านไฟล์ข้อความและทำบางอย่างกับแต่ละบรรทัดโดยใช้ bash script ดังนั้นฉันมีรายการที่มีลักษณะเช่นนี้: server1 server2 server3 server4 ฉันคิดว่าฉันสามารถวนรอบนี้โดยใช้ขณะที่ห่วงเช่น: while read server; do ssh $server "uname -a" done < /home/kenny/list_of_servers.txt ขณะที่ลูปหยุดหลังจากเรียกใช้ 1 ครั้งดังนั้นจึงรันuname -aบนเซิร์ฟเวอร์1 เท่านั้น อย่างไรก็ตามด้วย for for loop ที่ใช้ cat มันทำงานได้ดี: for server in $(cat /home/kenny/list_of_servers.txt) ; do ssh $server "uname -a" done ยิ่งทำให้งงงันกับฉันก็คือสิ่งนี้ยังใช้งานได้: while read server; do echo …

2
ทำไมทุกคนไม่ตั้ง 'histappend' เป็น bash?
หลังจากค้นหาความshopt -s histappend หมายของสิ่งนี้แล้วดูเหมือนว่าจะเป็นเรื่องที่มีสติมากและฉันก็ประหลาดใจที่มันไม่ได้เป็นค่าเริ่มต้น ทำไมทุกคนต้องการล้างประวัติของพวกเขาในแต่ละการออกจากเปลือก?


4
ฉันจะลบไฟล์ทั้งหมดที่มีนามสกุลเฉพาะในโฟลเดอร์ใดโฟลเดอร์หนึ่งได้อย่างไร
ถ้าฉันตั้งค่าไดเรกทอรีปัจจุบัน / ทำงาน (นำทางไปใช้มันcd) ไปยังไดเรกทอรีเฉพาะบางประเภทแล้วพิมพ์: rm *.xvg คำสั่งนี้จะทำอะไร? มันเป็นความจริงว่าคำสั่งดังกล่าวจะเพียงลบไฟล์ที่มีนามสกุล.xvg เฉพาะในไดเรกทอรีการทำงานหรือไม่ ฉันกังวลเกี่ยวกับการลองก่อนที่จะถามเพราะฉันต้องการให้แน่ใจว่าคำสั่งดังกล่าวจะลบ.xvgไฟล์ที่อยู่ในไดเรกทอรีการทำงานเท่านั้น
36 bash  shell  directory  rm 

3
`ข้อผิดพลาดทางไวยากรณ์:“ (” ไม่คาดคิด” เมื่อสร้างอาร์เรย์
ฉันมีเซิร์ฟเวอร์ Linux (Debian) สองตัว ฉันกำลังสร้างเชลล์สคริปต์ ในครั้งแรกที่ฉันสร้างอาร์เรย์ดังนี้: #!/bin/bash target_array=( "/home/user/direct/filename -p123 -r" ) มันใช้งานได้ดี แต่เมื่อฉันเรียกใช้บนเซิร์ฟเวอร์อื่นฉันจะได้รับ: Syntax error: "(" unexpected เท่าที่ฉันสามารถบอกได้ว่าเซิร์ฟเวอร์ทั้งสองนั้นเหมือนกัน มีใครบ้างไหมที่จะเข้าใจว่าทำไมสิ่งนี้ถึงไม่ได้ผล? ถ้าฉันพิมพ์ลงในเทอร์มินัลโดยตรงก็ดี มันจะปรากฏว่าเมื่อฉันเรียกใช้เป็น sh scriptname.sh ฉันได้รับข้อผิดพลาด แต่ถ้าฉันเรียกใช้เป็น ./scriptname.sh ดูเหมือนว่าจะโอเค ความแตกต่างคืออะไร?

4
$ @ ยกเว้นอาร์กิวเมนต์ที่ 1
ฉันต้องเขียนเชลล์สคริปต์ที่ทำงานด้วยวิธีนี้: ./myscript arg1 arg2_1 arg2_2 arg2_3 ....... arg2_# มีการวนรอบสำหรับสคริปต์ภายใน for i in $@ อย่างไรก็ตามอย่างที่ทราบ $ @ ได้รวม $ 1 ถึง $ ($ # - 1) แต่สำหรับโปรแกรมของฉัน $ 1 แตกต่างอย่างชัดเจนจาก $ 2 $ 3 $ 4 ฯลฯ ฉันต้องการวนจาก $ 2 ถึงจุดสิ้นสุด ... ฉันจะทำสิ่งนี้ได้อย่างไร ขอขอบคุณ:)
36 bash  shell  scripting 

5
วิธีการแยกภาพปกอัลบั้มจากไฟล์ MP3
ฉันมีไฟล์ MP3 มากมายที่มีปกอัลบั้มอยู่ในไฟล์นั้น ตอนนี้ฉันกำลังมองหาวิธีที่จะแยกพวกเขาเพื่อเก็บไว้แยกกันที่ดีที่สุดจากบรรทัดคำสั่ง มีวิธีที่จะบรรลุเป้าหมายนี้หรือไม่?
36 bash  images  mp3 

3
การทำความเข้าใจ backtick (`)
ฉันลองคำสั่ง $ b=5; echo `$b`; -bash: 5: command not found แต่จะไม่พิมพ์ 5 อย่างที่ควรจะเป็น สิ่งที่ฉันหายไปที่นี่? `(backquote / backtick) หมายถึงอะไรในคำสั่ง? ดูเหมือนว่าจะ`ประเมินคำสั่งภายในและแทนที่พวกเขาด้วยการส่งออก

4
aliasing cd to pushd - เป็นความคิดที่ดีหรือไม่?
ควรใช้นามแฝงต่อไปนี้หรือไม่: cd() { pushd $1; } ในทุบตี? ฉันคิดว่ามันจะมีประโยชน์มากเพราะฉันสามารถใช้ชุดข้อมูลpopdแทนที่จะเป็นเพียงcd -ครั้งเดียว มีกรณีใดบ้างที่สิ่งนี้อาจเป็นปัญหาหรือไม่?

3
อะไรคือความแตกต่างระหว่าง [[$ a == z *]] และ [$ a == z *]
มีความแตกต่างระหว่างสองสิ่งนี้หรือไม่ [[ $a == z* ]] และ [ $a == z* ] ฉันสามารถมีตัวอย่างที่พวกเขาจะมีผลลัพธ์ที่แตกต่างกันหรือไม่ นอกจากนี้การทำงานของ[[ ]]แตกต่างกัน[ ]อย่างไร

7
ฉันจะปิดเทอร์มินัลโดยไม่ฆ่าลูก ๆ ของมันได้อย่างไร
บางครั้งฉันเรียกใช้แอปใน gnome-terminal แต่ทันใดนั้นฉันต้องรีสตาร์ท gnome หรือบางอย่าง ฉันเดาว่าคำตอบสำหรับคำถามนั้นมีประโยชน์แล้วฉันต้องการตัดการเชื่อมต่อจาก SSH ซึ่งมีบางอย่างเกิดขึ้น แผนผังต้นไม้ของ Gnome มีลักษณะเช่นนี้: gnome-terminal bash some-boring-process ฉันสามารถ 'แยก' ออกbashจากgnome-terminal(หรือแยกออกsome-boring-processจากการทุบตีและเปลี่ยนเส้นทางผลลัพธ์ของมันไปที่อื่นได้หรือไม่) ถ้าฉันเพิ่งฆ่าgnome-terminalมันbashจะถูกฆ่าเพื่อกระบวนการย่อยทั้งหมดของมัน

7
ฉันจะระงับเอาต์พุต dd ได้อย่างไร
ddฉันมีสคริปต์ทุบตีที่สร้างไฟล์โดยใช้ ปัญหาคือ dd ส่งเอาต์พุตจำนวนมากที่ไปยุ่งกับเอาต์พุตของสคริปต์ของฉัน การค้นหารอบ ๆ ฉันพบวิธีแก้ปัญหาแล้ว: dd if=boot1h of="/dev/r$temp1" >& /dev/null มีทางเลือกอื่นหรือเปลี่ยนเส้นทางไปสู่/dev/nullทางเดียวหรือไม่?
35 bash  sudo  su  dd 

5
ทำไม ~ / .bash_profile ของฉันไม่ทำงาน
ฉันใช้ Linux Mint เปลือกเข้าสู่ระบบของฉัน ( cat /etc/passwd | grep myUserName) เป็นทุบตี หลังจากที่ฉันเริ่มสภาพแวดล้อมเดสก์ท็อปแบบกราฟิกและเรียกใช้โปรแกรมจำลองเทอร์มินัลจากนั้นฉันจะเห็นว่าไม่ได้.bash_profileมีแหล่งที่มา (vars สภาพแวดล้อมที่มีการexportแก้ไขจะไม่ถูกตั้งค่า) แต่ถ้าฉันเข้าสู่ระบบจากคอนโซลข้อความ ( ctrl+ alt+ F1) หรือเรียกใช้ด้วยตนเองbash -lจาก terminal emulator .bash_profileทำงานได้ดี ฉันผิดเมื่อฉันคิดว่า.bash_profileควรจะมีแหล่งที่มาเมื่อ X เริ่มทำงานและexportvars ed ทั้งหมดควรมีอยู่ในเครื่องเทอร์มินัลโดยเรียกใช้จาก X หรือไม่ PS การวางทุกอย่างใน.bashrcและจัดหาจาก.bash_profileไม่ใช่ความคิดที่ดี ( https://stackoverflow.com/questions/902946/ ): สิ่งที่สภาพแวดล้อมควรได้รับแหล่งที่มาเพียงครั้งเดียว
35 bash  shell  login  profile 

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