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

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

6
LC_CTYPE การเติมข้อความอัตโนมัติผิดพลาด: สาเหตุของปัญหานี้คืออะไร
ด้วยเหตุผลบางอย่างในวันนี้ทุกครั้งที่ฉันกดแท็บในเทอร์มินัลสิ่งนี้จะปรากฏขึ้น: cat bash: warning: setlocale: LC_CTYPE: cannot change locale (en_CA) Display all 150 possibilities? (y or n) สิ่งนี้เกิดขึ้นเมื่อฉันพิมพ์catจากนั้นกด TAB ฉันไม่เคยเปลี่ยนการตั้งค่าหรืออะไรเลย ใครรู้ว่าเกิดอะไรขึ้น

5
ค้นหาไฟล์ในพา ธ ที่ไม่มี“ อันไหน”?
ฉันสามารถเรียกใช้สคริปต์ได้ (อย่างใด): $ assemble.sh file ... [output] แต่whichหาไม่เจอ: $ which assemble.sh which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:. เป็นไปได้อย่างไร? ฉันจะหาไฟล์นี้ได้จากที่ไหน? ฉันใช้ทุบตี
12 bash  shell  path 

2
./executable: ไม่สามารถเรียกใช้ไฟล์ไบนารี
ฉันมีสคริปต์ที่ทำงานได้ดีเมื่อฉันส่งไฟล์ไปยังเซิร์ฟเวอร์เพื่อรันด้วยตัวเอง แต่มีปัญหาเมื่อฮัดสันซึ่งเป็นเซิร์ฟเวอร์รวมอย่างต่อเนื่องรันได้ ฉันกำลังทำการทดสอบอัตโนมัติบนระบบลินุกซ์ในตัว (เป้าหมาย) เป้าหมายเชื่อมต่อกับเซิร์ฟเวอร์ A (RHEL 5) ผ่านทางอนุกรมและดำเนินการผ่าน minicom เซิร์ฟเวอร์ B (FC 12) สร้างการทดสอบที่ทำงานบนเป้าหมายจริงและสามารถ ssh ไปที่เซิร์ฟเวอร์ A เซิร์ฟเวอร์ C (RH) โฮสต์ฮัดสันโดยเซิร์ฟเวอร์ B เป็นทาส ฉันได้เขียนสคริปต์ runcript (http://linux.die.net/man/1/runscript) เพื่อทำทุกอย่างที่จำเป็นในเป้าหมายจริง มันบูทอิมเมจติดตั้งไดเรกทอรีจากเซิร์ฟเวอร์ B และดำเนินการทดสอบ สคริปต์ทุบตีบนเซิร์ฟเวอร์ B จะเรียกใช้ minicom ด้วยสคริปต์ runcript พร้อมกับการดำเนินการร่วมกัน ฉันมีสคริปต์ทุบตีบนเซิร์ฟเวอร์ B ซึ่งใช้ ssh -t -t ServerA bashScript.sh เพื่อให้การทดสอบเหล่านั้นทำงานตามเป้าหมาย ฉันอยู่บนเซิร์ฟเวอร์ C ฉันสามารถรับการทดสอบเหล่านั้นที่ดำเนินการโดย …

3
เปลี่ยนสี PS1 ตามสีพื้นหลังหรือไม่
ฉันเรียนรู้ว่าฉันสามารถเปลี่ยนรูปแบบของ PS1 ได้โดยเฉพาะสีของสตริง จากนั้นเป็นไปได้หรือไม่ที่จะเปลี่ยนสีตามสีพื้นหลังของเปลือกหอย? หรือฉันจะตรวจจับสีพื้นหลังของเปลือกได้อย่างไร
12 bash  terminal  prompt  colors 

5
เรียกใช้สคริปต์ผ่าน cron ทุกสัปดาห์
ฉันได้ทำการวิจัยค่อนข้างน้อยเกี่ยวกับวิธีการทำเช่นนี้และฉันเห็นว่าไม่มีวิธีโดยตรงใน cron ในการทำงานพูดทุก ๆ วันพฤหัสบดี ตอนนี้ฉันกำลังโน้มตัวไปยังการสร้างสคริปต์ที่จะทำงานทุกสัปดาห์และจะแตะไฟล์ "ตั้งค่าสถานะ" เมื่อมันทำงานและหากมันทำงานและมีไฟล์อยู่แล้วเพื่อลบไฟล์ (และไม่ทำการ การกระทำรายปักษ์) คำถามของฉันคือมีวิธีอื่นที่สวยงามหรือเรียบง่ายกว่านี้ในการบรรลุเป้าหมายของการทุบตีสคริปต์ของการกระทำที่ทำงานทุกสัปดาห์โดยอัตโนมัติหรือไม่? ขอบคุณ!
12 bash  scripting  cron 

3
อาร์กิวเมนต์สุดท้ายของคำสั่งก่อนหน้าคืออะไร
$_ ถูกกล่าวว่าเป็นอาร์กิวเมนต์สุดท้ายของคำสั่งก่อนหน้า ดังนั้นฉันสงสัยว่าทำไมมันไม่ใช่EDITOR="emacs -nw"แต่EDITORในตัวอย่างต่อไปนี้? ทำไมไม่"emacs -nw"เป็นส่วนหนึ่งของการโต้แย้งครั้งสุดท้าย โดยทั่วไปแล้วคำจำกัดความของการโต้แย้งคืออะไรและการโต้แย้งครั้งสุดท้ายเป็นอย่างไร ขอบคุณ $ export EDITOR="emacs -nw" $ echo $_ EDITOR
12 bash 

3
ฉันจะสะท้อนวงเล็บปีกกาว่าง JSON เป็นค่าเริ่มต้นได้อย่างไร
ฉันดูเหมือนจะไม่ได้รับ JSON ว่างเปล่า{}เพื่อสะท้อนถ้า envvar หายไป ฉันอาจมีส่วนท้าย}ในเอาต์พุตหากตั้งค่าไว้หรือ escape แสดงขึ้น bash-3.2$ unset X bash-3.2$ echo "${X:-{}}" {} bash-3.2$ X=y bash-3.2$ echo "${X:-{}}" y} bash-3.2$ echo "${X:-{\}}" y bash-3.2$ unset X bash-3.2$ echo "${X:-{\}}" {\} bash-3.2$ echo "${X:-'{}'}" '{}' bash-3.2$ X=z bash-3.2$ echo "${X:-'{}'}" z ฉันจะหนีมันอย่างถูกต้องได้อย่างไร
12 bash  variable 


2
การแทนที่ตัวแปร Bash ของตัวแปรตามด้วยขีดล่าง
ตัวแปรBUILDNUMBERถูกตั้งค่าเป็น 230 ฉันคาดว่า230_จะพิมพ์สำหรับคำสั่งecho $BUILDNUMBER_แต่เอาต์พุตว่างเปล่าดังแสดงด้านล่าง # echo $BUILDNUMBER_ # echo $BUILDNUMBER 230

1
ต้องใช้อักขระใดบ้างในไฟล์ที่ไม่มีเครื่องหมายคำพูด?
ฉันมีเชลล์ / เทอร์มินัลที่ใช้รันคำสั่ง bash และฉันกำลังหลบหนีช่องว่าง แต่ปรากฎว่าวงเล็บยังต้องหลบหนี ต้องใช้อักขระอื่นใดในการหลีกเลี่ยงชื่อไฟล์ที่ไม่อยู่ในเครื่องหมายคำพูด?

3
ไม่สามารถเปิดไฟล์กำหนดค่า '/ dev / fd / 63', ข้อผิดพลาด: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวสำหรับ wpa_supplicant
เมื่อฉันทำสิ่งนี้: sudo wpa_supplicant -D nl80211,wext -i wlp4s0 -c <(wpa_passphrase "some ssid" "password") ฉันเข้าใจ Successfully initialized wpa_supplicant Failed to open config file '/dev/fd/63', error: No such file or directory Failed to read or parse configuration '/dev/fd/63' ความคิดใด ๆ

2
การใช้งาน set -u ไม่ทำงานอย่างที่คาดไว้
ฉันเรียนรู้วิธีใช้setตัวเลือกต่างๆ ในสคริปต์อย่างมีประสิทธิภาพและพบset -uว่าเหมาะสำหรับการออกจากสคริปต์หากตัวแปรไม่ได้รับการตั้งค่าอย่างเหมาะสม (เช่นการลบผู้ใช้) ตามหน้าmanset -uและset -eทำสิ่งต่อไปนี้ ... -e Exit immediately if a command exits with a non-zero status. -u Treat unset variables as an error when substituting. ฉันสร้างสคริปต์ทดสอบเพื่อทดสอบฟังก์ชันนี้ แต่ดูเหมือนว่าจะไม่ทำงานตามที่คาดไว้ บางทีใครบางคนสามารถอธิบายปัญหาของฉันกับฉันได้ดีกว่าและฉันกำลังตีความผิด ๆ อยู่ที่ไหน? สคริปต์ทดสอบอยู่ด้านล่าง ขอขอบคุณ. set -e set -u testing="This works" echo $? echo ${testing} testing2= echo $? echo ${testing2} …

1
“ wait &” (“ wait ampersand”) เป็นประโยชน์ (bash) shell / shell script สำนวนหรือเทคนิค?
ฉัน "ได้รับมรดก" เชลล์สคริปต์บางตัวสำหรับเครื่อง Linux ที่ใช้เชลล์ "bash" ของ GNU ในกรณีเฉพาะกรณีหนึ่งเครื่องจะรัน GNU bash รุ่น 2.0.5b หนึ่งในสคริปต์เหล่านั้นมีคำสั่งwait &("wait ampersand") ซึ่งเป็นส่วนหนึ่งของ "for line" ของforลูป ตั้งแต่แรกพบดูเหมือนว่าจะเป็นสำนวนที่น่าสนใจ / น่าสนใจ แต่เว็บของฉันค้นหาไม่ได้ส่งคืนสิ่งใดที่เกี่ยวข้อง man waitแสดง manpage "BASH_BUILTINS" ("BASH BUILTINS COMMAND") ซึ่งมีคำอธิบายดังต่อไปนี้: wait [n] Wait for the specified process and return its termination status. n may be a process ID …

3
วิธีที่ปลอดภัยและง่ายที่สุดในการใช้รหัสผ่านที่ผู้ใช้พิมพ์บน bash กลายเป็นส่วนหนึ่งของ stdin ไปยังโปรแกรมอย่างไร
ฉันกำลังมองหา (1) ที่ปลอดภัยที่สุดและ (2) วิธีที่ง่ายที่สุดในการให้ผู้ใช้พิมพ์รหัสผ่านบน bash shell prompt และให้รหัสผ่านนั้นกลายเป็นส่วนหนึ่งของ stdin ไปยังโปรแกรม นี่คือสิ่งที่ stdin จำเป็นต้องมีลักษณะ: {"username":"myname","password":"<my-password>"}ซึ่ง<my-password>เป็นสิ่งที่พิมพ์ลงในเชลล์พรอมต์ ถ้าฉันควบคุมโปรแกรม stdin ได้ฉันสามารถแก้ไขมันเพื่อขอรหัสผ่านอย่างปลอดภัยและใส่ลงไป แต่ downstream เป็นคำสั่งทั่วไปที่เป็นมาตรฐาน ฉันได้พิจารณาและปฏิเสธวิธีการที่ใช้สิ่งต่อไปนี้: ผู้ใช้ที่พิมพ์รหัสผ่านลงในบรรทัดคำสั่ง: รหัสผ่านจะปรากฏบนหน้าจอและผู้ใช้ทุกคนสามารถมองเห็นได้ด้วย "ps" การแก้ไขตัวแปรเชลล์ในอาร์กิวเมนต์ของโปรแกรมภายนอก (เช่น...$PASSWORD...): รหัสผ่านจะยังคงปรากฏให้ผู้ใช้ทุกคนเห็นผ่าน "ps" ตัวแปรสภาพแวดล้อม (ถ้าทิ้งไว้ในสภาพแวดล้อม): รหัสผ่านจะสามารถมองเห็นได้ในกระบวนการลูกทั้งหมด แม้กระบวนการที่น่าเชื่อถืออาจเปิดเผยรหัสผ่านหากพวกเขาถ่ายโอนข้อมูลหลักหรือตัวแปรสภาพแวดล้อมการถ่ายโอนข้อมูลเป็นส่วนหนึ่งของการวินิจฉัย รหัสผ่านที่อยู่ในไฟล์เป็นระยะเวลานานแม้ไฟล์ที่มีสิทธิ์ จำกัด : ผู้ใช้อาจเผลอเปิดเผยรหัสผ่านและผู้ใช้รูทอาจบังเอิญเห็นรหัสผ่าน ฉันจะแก้ปัญหาปัจจุบันของฉันเป็นคำตอบด้านล่าง แต่จะเลือกคำตอบที่ดีกว่าถ้ามีคนมาด้วย ฉันคิดว่าควรจะมีบางสิ่งที่ง่ายกว่าหรืออาจมีบางคนเห็นข้อกังวลด้านความปลอดภัยที่ฉันพลาดไป
12 bash  security  password  curl 


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