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

Bash เป็นเชลล์ฟรีสำหรับระบบปฏิบัติการยูนิกซ์จากโครงการ GNU


3
ฉันจะรับเอาท์พุทและมูลค่าการออกของ subshell เมื่อใช้“ bash -e” ได้อย่างไร?
พิจารณารหัสต่อไปนี้ outer-scope.sh #!/bin/bash set -e source inner-scope.sh echo $(inner) echo "I thought I would've died :(" inner-scope.sh #!/bin/bash function inner() { echo "winner"; return 1; } ฉันพยายามouter-scope.shออกเมื่อสายinner()ล้มเหลว ตั้งแต่$()เรียกใช้ sub-shell สิ่งนี้จะไม่เกิดขึ้น ฉันจะได้รับผลลัพธ์ของฟังก์ชันในขณะที่รักษาความจริงที่ว่าฟังก์ชันอาจออกด้วยรหัสออกที่ไม่ใช่ศูนย์
70 bash 


6
ฉันจะรับ ls --color = auto เพื่อทำงานบน Mac OS X ได้อย่างไร
ฉันพยายามย้ายการกำหนดค่า bash ของฉันจาก Ubuntu ไปยัง Mac OS X และดูเหมือนว่า ls จะแตกต่างกันเล็กน้อย ตัวอย่างเช่นจะไม่ยอมรับ--colorตัวเลือก ฉันจะทำให้เรื่องนี้ทำงานได้อย่างไร
69 linux  macos  bash  ls 

4
ค้นหาว่ามีชื่อผู้ใช้อยู่หรือไม่
ฉันจะค้นหาคำสั่งในเชลล์สคริปต์ได้อย่างไรว่ามีชื่อผู้ใช้ที่ให้ไว้ในระบบปัจจุบันหรือไม่? /etc/passwdและ/etc/shadowไม่สมบูรณ์ พิจารณาบริการไดเรกทอรีของ OS X หรือ Linux ด้วยการรวม Active Directory ในทำนองเดียวกัน
68 bash  unix  shell 

10
การทดแทนในไฟล์ข้อความ ** ที่ไม่มี ** การแสดงออกปกติ
ฉันต้องการแทนที่ข้อความภายในไฟล์ข้อความด้วยการแทนที่ โดยปกติฉันจะทำอะไรเช่น sed -i 's/text/replacement/g' path/to/the/file ปัญหาคือทั้งสองtextและreplacementเป็นสตริงที่ซับซ้อนที่มีเครื่องหมายขีดกลาง, เครื่องหมายทับ, blackslashes, คำพูดและอื่น ๆ ถ้าฉันหลบหนีอักขระที่จำเป็นทั้งหมดภายในtextสิ่งนั้นจะกลายเป็นอ่านไม่ได้ ในขณะที่ฉันไม่ต้องการพลังของการแสดงออกปกติ: ฉันแค่ต้องการแทนที่ข้อความอย่างแท้จริง มีวิธีการแทนที่ข้อความโดยไม่ใช้นิพจน์ทั่วไปด้วยคำสั่ง bash หรือไม่? มันค่อนข้างจะเป็นเรื่องเล็กน้อยที่จะเขียนสคริปต์ที่ทำสิ่งนี้ แต่ฉันคิดว่าควรจะมีบางสิ่งอยู่แล้ว
68 bash  regex  sed  text-editing 

3
การส่งออกทำอะไรใน BASH [ซ้ำ]
ซ้ำกันได้: ความแตกต่างระหว่าง“ a = b” และ“ ส่งออก a = b” ใน bash เป็นการยากที่จะยอมรับ แต่ฉันไม่เคยเข้าใจสิ่งที่แน่นอน export ทำกับตัวแปรสภาพแวดล้อม ฉันรู้ว่าถ้าฉันไม่ส่งออกตัวแปรบางครั้งฉันไม่สามารถเห็นมันในกระบวนการลูก แต่บางครั้งดูเหมือนว่าฉันสามารถ เกิดอะไรขึ้นเมื่อฉันพูด export foo=5 และเมื่อใดที่ฉันไม่ควรส่งออกตัวแปร

4
ตรวจสอบว่าพารามิเตอร์ใด ๆ กับสคริปต์ทุบตีตรงกับสตริงหรือไม่
ฉันพยายามเขียนสคริปต์ที่ฉันต้องการตรวจสอบว่าพารามิเตอร์ใด ๆ ที่ส่งผ่านไปยังสคริปต์ทุบตีตรงกับสตริง วิธีที่ฉันตั้งค่าตอนนี้ก็คือ if [ "$3" != "-disCopperBld" -a "$4" != "-disCopperBld" -a "$5" != "-disCopperBld" -a "$6" != "-disCopperBld"] แต่อาจมีพารามิเตอร์จำนวนมากดังนั้นฉันสงสัยว่ามีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่ ขอบคุณ แก้ไข: ฉันลองใช้โค๊ดของโค้ดนี้และเรียกสคริปต์ด้วยตัวเลือก -disableVenusBld แต่มันก็ยังพิมพ์ "เริ่มต้นบิลด์" ฉันกำลังทำอะไรผิดหรือเปล่า? ขอบคุณล่วงหน้า! while [ $# -ne 0 ] do arg="$1" case "$arg" in -disableVenusBld) disableVenusBld=true ;; -disableCopperBld) disableCopperBld=true ;; -disableTest) disableTest=true ;; …

7
cURL: จะระงับเอาต์พุตที่แปลกเมื่อเปลี่ยนเส้นทางได้อย่างไร
ฉันพยายามพิมพ์เฉพาะส่วน verbose ของคำร้องขอ cURL (ซึ่งถูกส่งไปstderr) จาก bash shell แต่เมื่อฉันเปลี่ยนเส้นทางstdoutเช่นนี้: curl -v http://somehost/somepage > /dev/null ตารางผลลัพธ์บางประเภทปรากฏขึ้นกลางผลลัพธ์ไปที่stderr: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 ตามมาด้วยสิ่งนี้ใกล้จะจบ: { [data not shown] …

4
ไดเรกทอรีปัจจุบัน push / pop?
เมื่อใช้ bash จะมีวิธีในการผลักและวางไดเรคทอรีการทำงานปัจจุบันหรือไม่ ฉันพยายามเขียนแต่ไดเรกทอรีปัจจุบันอยู่ในขณะนี้bash;cd dir; ./dostuff;exit;dir
66 linux  bash 

2
วิธีแสดงรายการชื่อเครื่องพิมพ์ที่ยอมรับได้สำหรับใช้กับ lpr
lprหน้าคนพูดว่าเครื่องพิมพ์ปลายทางสามารถระบุกับ-Pธง -P destination[/instance] Prints files to the named printer. ฉันมี 'เพิ่ม' เครื่องพิมพ์ต่าง ๆ ใน Samba ที่ใช้ร่วมกันในท้องถิ่นโดยใช้ GUI ใน Ubuntu / Gnome ฉันจะรับรายการเครื่องพิมพ์ที่พร้อมใช้งานเหล่านี้ในรูปแบบที่การ-Pตั้งค่าสถานะที่คาดไว้ (โดยเฉพาะอย่างยิ่งจากเปลือก bash) ได้อย่างไร
64 linux  ubuntu  bash  printing  lpr 

4
Windows 10 Ubuntu Bash Shell: ฉันจะติดตั้งไดรฟ์ Windows อื่นได้อย่างไร
ฉันใช้ Ubuntu Bash shell ของ Windows 10 มันแมปไดรฟ์ C เป็น / mnt / c ฉันมีฮาร์ดไดรฟ์ภายในเครื่องอื่น ๆ ซึ่งติดตั้งใน Windows เป็น E: และ F: ฉันจะบอก Bash ให้ติดตั้งไดรฟ์เหล่านี้ได้อย่างไร (โดยอัตโนมัติที่ / mnt / e และ / mnt / f แต่การติดตั้งด้วยตนเองนั้นใช้ได้) "sudo fdisk -l" ดูเหมือนจะไม่ทำงาน (ไม่สามารถเปิด / proc / พาร์ทิชัน) ดังนั้นฉันไม่แน่ใจว่าจะหาชื่อได้อย่างไรมิฉะนั้นฉันจะใช้คำสั่ง mount ปกติ
64 windows-10  bash  mount 

4
ทำไม . ไม่ได้อยู่ในเส้นทางโดยค่าเริ่มต้น?
บนระบบที่เหมือน UNIX ในช่วงหลายปีที่ผ่านมา (ส่วนใหญ่เกี่ยวข้องกับฉัน, Linux) ฉันสังเกตว่า.(ปัจจุบัน dir) ไม่เคยเป็น$PATHค่าเริ่มต้น ทำไมนี้ ฉันจำได้ว่าเคยอ่านเมื่อหลายปีก่อนว่ามันเป็นปัญหาด้านความปลอดภัย แต่บทความที่ฉันอ่านไม่ได้อธิบายว่าปัญหานั้นเป็นอย่างไร เป็นเพราะใครบางคนสามารถออกจากรุ่นที่เป็นอันตรายlsหรือcpในไดเรกทอรีและฉันจะจบลงด้วยการทำงานโดยไม่ทราบว่ามีอยู่หรือไม่
63 bash  path 

2
วิธีการทำใหม่ไฟล์เอ็กซิบิชั่นใน $ PATH พร้อม bash
เรื่องบอกว่ามันทั้งหมดวิธีการปรับปรุงใหม่ executables ที่มีอยู่ในหนึ่งใน $ PATHs หลังจากที่มีการเปลี่ยนแปลงสิ่งต่าง ๆ เช่นลบไบนารีจาก $ PATH หนึ่งที่มีอยู่ในอีก $ PATH เปลี่ยนตัวแปร $ PATH
63 bash 

7
เรียกใช้คำสั่งอีกครั้งอย่างต่อเนื่องเมื่อเสร็จสิ้นใน Bash
ฉันกำลังพยายามหาวิธีง่ายๆในการรันคำสั่งอีกครั้งเมื่อใดก็ตามที่มันเสร็จสิ้นไม่ว่าด้วยเหตุผลใด (ข้อผิดพลาดหรืออย่างอื่น) อะไรจะเป็นวิธีที่ดีที่สุดในการเข้าถึงสิ่งนี้ แก้ไข:ฉันไม่ชัดเจนเพียงพอก่อน ฉันต้องการการประหารครั้งต่อไปเพื่อรอจนกว่าการทดสอบก่อนหน้านี้จะเสร็จสิ้น แก้ไข 2:คำตอบเกือบทั้งหมดทำงานได้ดี ฉันคิดว่าคำตอบส่วนใหญ่โดยไม่ตั้งใจจะแยกกระบวนการหรือดำเนินการอีกครั้งเพียงครั้งเดียวซึ่งไม่ต้องการ
62 linux  bash 

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