Score:0

นามแฝงไม่ทำงานตามที่คาดไว้

ธง ph

ฉันพยายามที่จะได้รับ ประเภทไฟล์ โดยใช้นามแฝง ฉันใช้:

นามแฝง file-types="find . -type f | perl -ne 'พิมพ์ $1 ถ้า m/\.([^.\/]+)$/' | sort -u"

อย่างไรก็ตาม มันใช้งานไม่ได้:

เมื่อฉันพิมพ์คำสั่งในเทอร์มินัล มันจะแสดง (ซึ่งเป็นสิ่งที่ฉันต้องการ):

อซว
azw3
bz2
ชม
epub
ไฟล์ PDF

แต่เมื่อฉันใช้นามแฝง มันแสดงบางอย่างเช่น:

./x.epub
./ย.pdf
./z.pdf
.....

ฉันจะทำอย่างไรเพื่อให้คำสั่งนี้เป็นนามแฝง

24601 avatar
in flag
ข้อมูลอ้างอิงของคุณมาจาก SO ทำไมไม่ถามคำถามที่นั่น? คำถามการเขียนโปรแกรมทั่วไปมักจะจัดการได้ดีที่นั่นและเว้นแต่ว่าอูบุนตูจะระบุทรัพยากรที่ดีกว่าเพื่อใช้
cn flag
บิต perl อาจสั้นกว่า (อาจจะง่ายกว่านี้) -- `perl -ne 's/.+\.// && print'`
Score:3
ธง hr

เป็นเพราะเครื่องหมายอัญประกาศคู่นอกอนุญาต $1 ที่จะถูกประเมินโดยเชลล์เมื่อมีการกำหนดนามแฝง ดังนั้น พิมพ์ 1 เหรียญ กลายเป็นธรรมดา พิมพ์ :

$ alias file-types="find . -type f | perl -ne 'พิมพ์ $1 ถ้า m/\.([^.\/]+)$/' | sort -u"
ประเภทไฟล์นามแฝง $
นามแฝง file-types='find -ประเภท f | perl -ne '\''พิมพ์ถ้า m/\.([^.\/]+)$/'\'' | เรียง -u'

วิธีที่ง่ายที่สุดในการแก้ไขเครื่องหมายคำพูดคือการใช้แบ็กสแลช Escape the $:

พิมพ์ \$1 ถ้า m/\.([^.\/]+)$/

อย่างไรก็ตาม ฉันขอแนะนำให้ใช้ฟังก์ชันเชลล์แทนนามแฝงสำหรับกรณีเช่นนี้ ดูตัวอย่าง ใน Bash ควรใช้ alias เมื่อใด ควรใช้สคริปต์เมื่อใด และเมื่อใดควรเขียนฟังก์ชัน

โพสต์คำตอบ

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