ฉัน (จริงๆ) มือใหม่ที่จะเขียนโปรแกรมใช้งานได้ (อันที่จริงมีเพียงการติดต่อกับมันโดยใช้ python) แต่ดูเหมือนว่าจะเป็นวิธีที่ดีสำหรับงานที่ต้องทำรายการมากในสภาพแวดล้อมของเชลล์
ฉันชอบทำสิ่งนี้:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
มี Unix shell ใดบ้างที่มีคุณสมบัติประเภทนี้? หรือบางทีคุณสมบัติบางอย่างเพื่อให้เข้าถึงเชลล์ได้ง่าย (คำสั่ง, env / vars, readline, ฯลฯ ... ) จากภายใน python (ความคิดคือการใช้ล่ามแบบโต้ตอบของงูใหญ่แทนการทุบตี)
แก้ไข:
บางทีตัวอย่างเปรียบเทียบจะชี้แจง สมมติว่าฉันมีรายการประกอบด้วยdir / file :
$ FILES=( build/project.rpm build/project.src.rpm )
และฉันต้องการทำงานง่าย ๆ : คัดลอกไฟล์ทั้งหมดไปยังdist / AND ติดตั้งในระบบ (เป็นส่วนหนึ่งของกระบวนการสร้าง):
ใช้ทุบตี:
$ cp $ {files [*]} dist / $ cd dist && rpm -Uvh $ (สำหรับ f ใน $ {files [*]}; ทำ basename $ f; เสร็จแล้ว)
ใช้วิธี "pythonic shell" (ข้อควรระวัง: นี่คือรหัสจินตภาพ):
$ cp [os.path.join ('dist', os.path.basename (ไฟล์)) สำหรับไฟล์ใน FILES] 'dist'
คุณเห็นความแตกต่างหรือไม่ นั่นคือสิ่งที่ฉันกำลังพูดถึง จะไม่สามารถออกจากเชลล์ด้วยการสร้างสิ่งเหล่านี้ได้อย่างไร มันเป็นความเจ็บปวดที่แท้จริงในการจัดการกับรายการในเชลล์แม้จะเป็นงานทั่วไปเช่น: รายชื่อไฟล์รายชื่อ PID รายชื่อทุกอย่าง
และที่สำคัญจริง ๆ แล้วจุดสำคัญ: การใช้ไวยากรณ์ / เครื่องมือ / คุณสมบัติที่ทุกคนรู้แล้ว: sh และ python
IPython เห็นว่าเป็นไปในทิศทางที่ดี แต่มันจะบวม: ถ้าชื่อ var เริ่มต้นด้วย '$' จะทำเช่นนี้ถ้า '$$' ทำเช่นนั้น มันเป็นไวยากรณ์ไม่ใช่ "ธรรมชาติ" กฎมากมายและ "การแก้ไขปัญหา" ( [ ln.upper() for ln in !ls ]
-> ข้อผิดพลาดทางไวยากรณ์)