Score:7

ฉันจะทำให้ shell alias ทำงานได้ทันทีได้อย่างไร

ธง pl

การกำหนดและใช้นามแฝงในบรรทัดเดียวกันดูเหมือนจะไม่ทำงาน:

$นามแฝง x=ls; x
x: ไม่พบคำสั่ง

ฉันจะ "หนี" ได้อย่างไร x ในการโทรครั้งที่สองเพื่อให้ได้รับการยอมรับว่าเป็นนามแฝง?

Someone avatar
my flag
เพิ่มนามแฝงในไฟล์ `.bashrc` จากนั้นเขียน `source ~/.bashrc` ตอนนี้นามแฝงเป็นแบบถาวร
Will avatar
id flag
ฉันได้ลอง && และฉันได้ลองใส่ชื่อแทนหลายรายการในบรรทัดเดียว (ซึ่งทั้งหมดได้รับมอบหมาย) ⦠แต่ไม่ว่าคุณจะใส่กี่ชื่อในบรรทัด มันก็จะไม่ดำเนินการอันแรก (หรือใดๆ) ในบรรทัดเดียวกัน - น่าสนใจมาก!
hr flag
ดู[เรียกใช้นามแฝงหลังจากสร้าง](https://unix.stackexchange.com/a/389974)
bers avatar
pl flag
@Algnis `แหล่งที่มา ~/.bashrc; x` ยังคงไม่ทำงาน
Score:11
ธง us

คุณไม่สามารถ (ด้วยวิธีปกติ) ดู ส่วนของคู่มือ Bash เกี่ยวกับนามแฝง (เน้นของฉัน):

กฎเกี่ยวกับคำจำกัดความและการใช้นามแฝงค่อนข้างน้อย สับสน Bash จะอ่านอินพุตที่สมบูรณ์อย่างน้อยหนึ่งบรรทัดเสมอ และ ทุกบรรทัดที่ประกอบกันเป็นคำสั่งผสม ก่อนที่จะดำเนินการใด ๆ คำสั่งในบรรทัดนั้นหรือคำสั่งผสม มีการขยายนามแฝง เมื่ออ่านคำสั่ง ไม่ใช่เมื่อดำเนินการ ดังนั้นนามแฝง คำจำกัดความที่ปรากฏในบรรทัดเดียวกันโดยที่คำสั่งอื่นไม่ดำเนินการ มีผลจนกว่าจะอ่านบรรทัดถัดไป คำสั่งต่อไปนี้ คำจำกัดความนามแฝงในบรรทัดนั้นไม่ได้รับผลกระทบจากนามแฝงใหม่ [...] เพื่อความปลอดภัย ให้ใส่คำจำกัดความของนามแฝงในบรรทัดแยกต่างหากเสมอ และ ห้ามใช้นามแฝงในคำสั่งผสม

คุณสามารถแก้ไขได้โดยบังคับให้แยกวิเคราะห์ใหม่โดยใช้ อีวาล:

$นามแฝง x=วันที่; อีวาล x
ศุกร์ 12 พฤศจิกายน 18:20:54 JST 2021
bers avatar
pl flag
`eval` คือสิ่งที่ฉันตามหา! (ฉันได้ลอง `exec` แล้ว แต่ `eval` นึกไม่ออกมาก่อน) ขอบคุณ!
bac0n avatar
cn flag
+1 `shopt -s extglob; eval echo '!(ไฟล์)'`

โพสต์คำตอบ

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