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

sh ย่อมาจากเชลล์ นอกจากนี้ยังมักใช้เป็นส่วนขยายสำหรับเชลล์สคริปต์

4
ฉันจะค้นหาเส้นทางโดยให้เพียงส่วนหนึ่งของเส้นทางได้อย่างไร
สมมติว่าผมต้องการที่จะหาเส้นทางนี้และข้อมูลเดียวที่ฉันมีคือ/<some_where_in_root>/find/this/path /find/this/pathอะไรจะเป็นวิธีที่ดีที่สุดในการค้นหาไดเรกทอรีเต็ม? โดยทั่วไปฉันมีโปรแกรมที่สร้างไดเรกทอรีและหลังจากสร้างไดเรกทอรีแล้วฉันต้องการดูว่ามีเส้นทางอยู่ในไดเรกทอรีที่สร้างขึ้นหรือไม่ จนถึงตอนนี้ฉันได้ลองแล้วfind . -type d -name "/find/this/path"แต่นี่เป็นการตีความที่ชัดเจน/find/this/pathว่าเป็นสตริง มีวิธีการใช้การค้นหาในสถานการณ์นี้หรือไม่? มันจะเป็นการดีที่สุดที่จะแยกเส้นทางที่ฉันมีและรับpathส่วนและทำการค้นหาในสายนี้หรือไม่?
6 linux  shell  find  sh 

1
Bash - ไฟล์รายการภายในช่วงวันที่
จนถึงตอนนี้ฉันได้พยายามอย่างหนักแล้ว บล็อกนี้ และเกิดขึ้นกับ: startdate=”201407010000? enddate=”201408010000? touch -t $startdate ./startdatefiles touch -t $enddate ./enddatefiles find ./ -type f -newer ./startdatefiles ! -newer ./enddatefiles -ls ฉันได้รับข้อผิดพลาดต่อไปนี้: touch: invalid date format `201408010000?' มีใครรู้วิธีตรงไปตรงมาในการทำเช่นนี้?
2 bash  shell  ls  sh 

1
ต่อท้ายบรรทัดใหม่ไปยังหลายไฟล์
ฉันพยายามต่อท้ายบรรทัดใหม่ไปยังหลายไฟล์ด้วยคำสั่งต่อไปนี้: find -name *.ovpn -exec sh echo "line to append" >> {} \; ก่อนที่จะทำสิ่งนี้ฉันได้รับคำสั่งต่าง ๆ เพื่อให้แน่ใจว่ามันจะเป็นไปตามที่ฉันคาดไว้: find -name *.ovpn -exec sh echo "hello" \; แต่ทั้งหมดนี้จะพิมพ์ออกมา "sh: 0: ไม่สามารถเปิดเสียงสะท้อน" สำหรับทุกไฟล์ที่พบ
1 command-line  unix  find  sh 

2
วิธีที่ง่ายที่สุดในเชลล์เป้าหมายเพื่อแยกสตริงออกจากบรรทัดข้อความหรือไม่
สมมติว่าฉันกำลังทำอยู่grepและมันคืนบรรทัดนี้: Invalid value (48) on line 3 ฉันจะดึงค่านั้น48ลงในตัวแปรในเชลล์เป้าหมายได้อย่างง่ายดายได้อย่างไร?
1 sh 

1
การดีบัก env vars จาก ssh
ฉันกำลังเขียนสคริปต์และแอปพลิเคชันสำหรับบอร์ดฝังตัวที่มี linux - no X คอนโซลเท่านั้น วิธีเดียวในการเข้าถึงเป้าหมายคือผ่าน ssh ฉันไม่ได้เชื่อมต่อจอภาพ สคริปต์ควรส่งออก env vars สองสามตัวซึ่งจะถูกใช้โดยแอปพลิเคชัน ฉันรู้ว่าฉันต้องแหล่งสคริปต์เพื่อทำเช่นนี้ แต่ฉันมีปัญหาในการแก้ปัญหานี้เพราะฉันไม่ทราบวิธีการตรวจสอบว่าสคริปต์ทำงานจาก ssh วิธีแก้ปัญหาเล็กน้อยคือ: ทดสอบสคริปต์ในระบบอื่น เรียกใช้แอพพลิเคชั่นการดีบักเพื่อตรวจสอบ env vars และพิมพ์ไฟล์ ฯลฯ ... ฉันแค่สงสัยว่ามีวิธีที่จะใช้ ssh ทำสิ่งนี้ มันเป็นความอยากรู้อยากเห็นที่จะเรียนรู้สิ่งใหม่ ๆ การแก้ปัญหาเป็นที่รู้จักกัน! ตัวอย่างของสคริปต์: #!/bin/sh export MY_VAR="blablabla" exit 0 แน่นอนว่าสคริปต์ที่แท้จริงมีความซับซ้อนมากขึ้น

1
วิธีกำหนดค่าโดยใช้ปุ่มลูกศรเพื่อทำซ้ำคำสั่งเชลล์ก่อนหน้านี้ใน Minix
ฉันยังใหม่กับ Minix ฉันประทับใจมากกับความเร็วของระบบ มันดูสง่างามฉันชอบมัน อย่างไรก็ตามฉันมีคำถามเกี่ยวกับเชลล์ ใน Linux ในขณะที่ใช้เชลล์คุณสามารถใช้ปุ่มลูกศรขึ้นและลงเพื่อเลื่อนดูคำสั่งที่เรียกใช้ก่อนหน้านี้ บน Minix ด้วย sh shell ฉันสามารถพิมพ์ตัวเลขบนหน้าจอได้เท่านั้น ฉันจำได้ว่าฉันเลือกคีย์บอร์ด US-std เมื่อทำการติดตั้ง มีวิธีใดบ้างที่จะใช้ปุ่มลูกศรเพื่อเลื่อนดูคำสั่งก่อนหน้าบน Minix?
linux  unix  shell  sh  minix 

1
สภาพอากาศ Conky และ Wunderground
ฉันกำลังแก้ไขคำถามเพื่อความกระจ่าง ... ฉันขอโทษสำหรับความสับสนใด ๆ ... ไวยากรณ์ของ Conky ได้เปลี่ยนไปเป็นเวอร์ชั่นล่าสุด ชี้แจงปัญหาของฉัน: ฉันสร้างไฟล์ xml ที่รับข้อมูลสภาพอากาศจาก Wunderground.com ฉันต้องการหาวิธีง่ายๆในการดึงข้อมูลเฉพาะออกจากไฟล์ xml เพื่อแสดงใน Conky (รวมถึงไอคอนสภาพอากาศ) ข้อมูลส่วนใหญ่ที่ฉันพบจนถึงขณะนี้ไม่ได้ทำสิ่งที่ฉันต้องการและฉันไม่สามารถ cobble วิธีการแก้ปัญหาของตัวเองจากสิ่งที่ฉันได้พบเพราะข้อมูลดูเหมือนซับซ้อนโดยไม่จำเป็น ฉันต้องการวิธีที่ใช้ในการไม่ต้องใช้โปรแกรมเพิ่มเติมและ / หรือยิมนาสติกสคริปต์ ตัวอย่าง: ฉันใช้ "curl -s http://api.wunderground.com/api/ [ / keykey//conditions/q/TX/هmycityเหมือน. xml -o ~ / path / weather.xml" เพื่อสร้างไฟล์ xml ของฉันโดยใช้ Wunderground .com ภายในไฟล์ xml เป็นเส้นทางไปยังไอคอนสภาพอากาศปัจจุบัน (ให้เราพูดว่า: " http://icons.wxug.com/i/c/k/cloudy.gif …
script  curl  sh  conky  weather 

1
มีวิธีการส่งคำสั่งผ่านการโต้แย้งในเปลือก?
สิ่งที่ฉันพยายามทำให้สำเร็จคือการตั้งชื่อของวิดเจ็ตเมื่อคอมพิวเตอร์ไม่ทำงาน: xsidle.sh echo mywidget.title = "idle" | awesome-client เมื่อฉันลบxsidle.shมันทำงานไม่มีที่ติ xsidle.shประมาณ: sleep 10 command="$1" $command แน่นอนว่าผลลัพธ์ของ xsidle นั้นถูกเปลี่ยนเส้นทางไปที่สุดยอดไคลเอนต์ในขณะที่ฉันพยายามที่จะสะท้อนไปยังไคลเอนต์ที่ยอดเยี่ยมด้วยความล่าช้า ฉันได้พยายามหนีด้วย "หรือ" เอาต์พุตเอคโค่คือ " mywidget.title = "idle" | awesome-client"
linux  bash  shell  sh 

1
สคริปต์ทุบตีดำเนินการร่วมกันไม่ได้ฆ่ากระบวนการพื้นหลัง
ฉันมีเชลล์สคริปต์จำนวนหนึ่งที่ทำงานคล้ายกับคำถามนี้มาก แต่ละสคริปต์ใช้งานแบ็คกราวนด์ไม่กี่ครั้งจดจำการ PID ด้วย$!ทำการทดสอบบางอย่างแล้วฆ่ากระบวนการพื้นหลัง ปัญหาของฉันคือฉันต้องการเรียกใช้สคริปต์ประเภทนี้จำนวนมาก หากฉันเรียกใช้ด้วยตนเองทีละคนพวกเขาทำงานได้ดี: ps -aแสดงว่ากระบวนการพื้นหลังถูกฆ่าอย่างเหมาะสม $ ./test_1.sh $ ./test_2.sh อย่างไรก็ตามถ้าฉันใช้ทั้งสองในหนึ่งคำสั่งเช่นนั้น: $ ./test_1.sh; ./test_2.sh กระบวนการพื้นหลังเริ่มต้นโดยtest_1.shล้มเหลวที่จะตายตามเวลาtest_2.shเริ่มต้น สิ่งนี้ทำให้พอร์ตเชื่อมโยงกันซึ่งtest_2.shจำเป็นต้องเชื่อมโยง ดังนั้นแม้ว่าtest_1.shปัญหาที่ถูกต้องkillคำสั่งเกิดปัญหาถ้ามันดำเนินการทันทีหลังจากที่test_2.shtest_1.sh หากฉันแทรกการหน่วงเวลาระหว่างสคริปต์ไม่มีปัญหา: $ ./test_1.sh; sleep 1; ./test_2.sh จากนั้นสันนิษฐานว่ามีความล่าช้าระหว่างเมื่อkillมีการออกและเมื่อกระบวนการตายจริงและปล่อยพอร์ต คำถามของฉันคือ: เกิดอะไรขึ้น? แพลตฟอร์มนี้เฉพาะเจาะจงหรือไม่ ฉันใช้ Mac OS X แต่สิ่งนี้ดูเหมือนจะไม่เป็นปัญหาสำหรับคนที่เขียนสคริปต์บน Linux มาก่อน มีวิธีที่ดีกว่าเพื่อให้แน่ใจว่ากระบวนการเบื้องหลังถูกฆ่าโดยไม่ใช้sleepระหว่างสคริปต์หรือไม่ เพื่อความสมบูรณ์นี่คือลักษณะของสคริปต์ทดสอบตัวใดตัวหนึ่ง: #!/bin/sh echo "starting up server 1(parent)..." $JAVA siena.StartServer -port 7000 & server1=$! …
macos  bash  sh 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.