Score:0

จะส่งออกกฎเฉพาะ 1 หรือหลายข้อได้อย่างไร

ธง ma

ฉันต้องการส่งออกกฎหรือส่วนประกอบเฉพาะอย่างน้อยหนึ่งรายการโดยใช้ Drush
ฉันมีสคริปต์เพื่อส่งออกกฎและส่วนประกอบทั้งหมด

drush --pipe กฎ-รายการ | xargs -I{} sh -c "drush rule-export '{}' > '20210623-new-Rules-export-offline/{}.txt'"

20210623-new-Rules-export-ออฟไลน์ เป็นไดเร็กทอรีที่บันทึกกฎที่เอ็กซ์พอร์ต

มีบางอย่างที่ฉันต้องเปลี่ยนเป็นโค้ดนี้เพื่อส่งออกกฎเฉพาะที่ฉันต้องการส่งออกหรือไม่

ฉันสร้างมุมมองกฎ VBO เพื่อให้เข้าถึงกฎเหล่านั้นได้ดีขึ้น แต่ดูเหมือนว่าจะไม่มีฟีเจอร์การส่งออกไปยังไฟล์

apaderno avatar
us flag
หากฉันเข้าใจคำถามถูกต้อง แทนที่จะส่งออกกฎทั้งหมด คุณต้องการส่งออกเฉพาะกฎเฉพาะที่คุณระบุชื่อไว้ นั่นคือสิ่งที่คุณพยายามจะบรรลุหรือไม่?
Score:1
ธง fr

รายการกฎการดริฟท์ ใช้เพื่อแสดงกฎทั้งหมดบนไซต์ของคุณ

drush กฎส่งออก <กฎ-ชื่อเครื่อง> จะส่งออกกฎเฉพาะ

คำสั่งที่คุณแสดงด้านบนเพียงแค่นำเอาต์พุตของคำสั่งรายการกฎและส่งต่อไปยังการส่งออกกฎ มีผลในการวนรอบกฎทั้งหมดและส่งออกแต่ละรายการ

BassPlaya avatar
ma flag
ขอบคุณ @ผู้ไม่ประสงค์ออกนาม
BassPlaya avatar
ma flag
ฉันลองใช้กฎ 1 ข้อและใช้งานได้จริง แต่มันแสดงรหัสที่ส่งออกใน Terminal ดังนั้นฉันยังต้องคัดลอกและวางลงในไฟล์ข้อความของตัวเอง นี่คือสิ่งที่ฉันทำเพื่อส่งออกกฎ 1 ข้อไปยังไฟล์ข้อความของตัวเองโดยมีชื่อเครื่องเป็นไฟล์: `drush rule-export my_rule_1 > my_rule_1.txt` ถ้าฉันลองใช้กฎ 2 ข้อและใช้คำสั่งนี้ กฎจะส่งออกเฉพาะกฎข้อแรก: `drush rule-export my_rule_1 my_rule_2 > my_exported_rules.txt` ฉันต้องไม่มีตัวคั่นที่ถูกต้อง
Score:0
ธง us

หากต้องการส่งออกกฎมากกว่าหนึ่งกฎ แต่เฉพาะกฎที่มีชื่ออยู่ในรายการ ฉันจะใช้รหัสต่อไปนี้

#!/usr/bin/bash

# รายการชื่อรายการที่จะส่งออก
รายการ = (รายการ 1 รายการ 2 รายการ 3)
สำหรับรายการใน "${items[@]}"; ทำ
  drush กฎ-ส่งออก "$item" > "${item}.txt"
เสร็จแล้ว

ซึ่งง่ายกว่าการรับรายการกฎที่มีอยู่ รายการกฎ drush --pipeให้ลบรายการในรายการที่ไม่ตรงกับชื่อกฎที่คุณต้องการส่งออก แล้วเรียกใช้ drush กฎการส่งออก ในรายการด้านซ้าย

หากคุณมีรายชื่อซึ่งอาจเป็นชื่อคอมโพเนนต์หรือชื่อกฎ และคุณต้องการส่งออกเฉพาะกฎ โค้ดจะคล้ายกับรายการต่อไปนี้

#!/usr/bin/bash

# รายการของรายการที่จะส่งออก ซึ่งอาจรวมถึงชื่อส่วนประกอบ
ชื่อ = (ชื่อ 1 ชื่อ 2 ชื่อ 3)

# รับรายชื่อกฎเท่านั้น และแปลงเป็นอาร์เรย์
กฎ=( $(รายการกฎ drush --pipe --type=rule) )

# สร้างอาร์เรย์ด้วยรายการที่อยู่ในทั้งสองอาร์เรย์
ส่งออก=( $(comm -12 <(printf '%s\n' "${names[@]}" | LC_ALL=C sort) <(printf '%s\n' "${rules[@]}" | LC_ALL=C เรียงลำดับ)) )

# ส่งออกรายการที่มีชื่ออยู่ในอาร์เรย์การส่งออกซึ่งมีเฉพาะชื่อกฎเท่านั้น
สำหรับการส่งออกใน "${exports[@]}"; ทำ
  drush กฎส่งออก "$export" > "${export}.txt"
เสร็จแล้ว
fr flag
แม้ว่าทั้งหมดนี้จะเป็นความจริง แต่คำตอบนี้เกี่ยวกับการเขียนโปรแกรมเชลล์มากกว่า drush หรือ Rules หรือแม้แต่ Drupal มีหลายวิธีในการใช้คำสั่งส่งออกกฎ drush พื้นฐานเพื่อวนรอบชุดอินพุต แต่วิธีเหล่านี้ขึ้นอยู่กับระบบปฏิบัติการและขึ้นอยู่กับภาษาสคริปต์ (สามารถทำได้ด้วย bash, csh, python, perl .. แม้กระทั่ง PHP ... เป็นต้น).
apaderno avatar
us flag
ใช่ แต่สิ่งที่คำถามต้องการอธิบายวิธีบรรลุบางสิ่งด้วยเชลล์ เนื่องจากคำสั่งที่แสดงในคำถามคือ `drush --pipe rule-list | xargs -I{} sh -c "drush rule-export '{}' > '20210623-new-Rules-export-offline/{}.txt'"` และคำถามคือ _มีอะไรที่ฉันต้องเปลี่ยนรหัสนี้ไหม เพื่อส่งออกกฎเฉพาะที่ฉันต้องการส่งออก?_
apaderno avatar
us flag
คำตอบนี้ไม่ได้เกี่ยวกับเชลล์เท่านั้น เนื่องจากเป็นการแสดงวิธีใช้พารามิเตอร์ที่ยอมรับโดย `drush rule-list`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา